2023-05-19 SRE大集合!みんなで学ぶ、信頼性を高めるための取り組みLT大会 https://findy.connpass.com/event/281605/
「複数ウィンドウ、複数バーンレートのアラート」を設定する際の注意点2023-05-19SRE大集合!みんなで学ぶ、信頼性を高めるための取り組みLT大会https://findy.connpass.com/event/281605/ENECHANGE株式会社 CTO室インフラエンジニア兼SRE 岩本隆史 (iwamot)
View Slide
こんな人
複数ウィンドウ、複数バーンレートのアラート
Google推奨のアラート設定https://sre.google/workbook/alerting-on-slos/
2つのウィンドウでエラーバジェット消費を賢く通知
3つのバーンレートの監視が推奨Severity Long window Short window Burn rate Error budget consumedPage 1 hour 5 minutes 14.4 2%Page 6 hours 30 minutes 6 5%Ticket 3 days 6 hours 1 10%
条件式(ページ・チケット)(job:slo_errors_per_request:ratio_rate1h{job="myjob"} > (14.4*0.001)andjob:slo_errors_per_request:ratio_rate5m{job="myjob"} > (14.4*0.001)) or (job:slo_errors_per_request:ratio_rate6h{job="myjob"} > (6*0.001)andjob:slo_errors_per_request:ratio_rate30m{job="myjob"} > (6*0.001))job:slo_errors_per_request:ratio_rate3d{job="myjob"} > 0.001andjob:slo_errors_per_request:ratio_rate6h{job="myjob"} > 0.001
そうか、この条件式をそのまま使えばいいんだな
違います
注意点1適切な閾値はSLOによって異なる
係数 (0.001) は目標値次第
「0.001」は目標値99.9%のこと1 - 0.999 = 0.001
99%なら「0.01」1 - 0.99 = 0.01
バーンレート (14.4 / 6 / 1) は期間次第
条件式のバーンレートは30日間が前提(30 * 24) / 1 * 2% = 14.4(30 * 24) / 6 * 5% = 6(30 * 24) / (3 * 24) * 10% = 1
7日間で計算すると(7 * 24) / 1 * 2% = 3.36(7 * 24) / 6 * 5% = 1.4(7 * 24) / (3 * 24) * 10% = 0.233
Googleは28日間を推奨
28日間で計算すると(28 * 24) / 1 * 2% = 13.44(28 * 24) / 6 * 5% = 5.6(28 * 24) / (3 * 24) * 10% = 0.933
「28日間で99%以上」の条件式(job:slo_errors_per_request:ratio_rate1h{job="myjob"} > (13.44*0.01)andjob:slo_errors_per_request:ratio_rate5m{job="myjob"} > (13.44*0.01)) or (job:slo_errors_per_request:ratio_rate6h{job="myjob"} > (5.6*0.01)andjob:slo_errors_per_request:ratio_rate30m{job="myjob"} > (5.6*0.01))job:slo_errors_per_request:ratio_rate3d{job="myjob"} > (0.933*0.01)andjob:slo_errors_per_request:ratio_rate6h{job="myjob"} > (0.933*0.01)
なるほど。ちゃんと設定しようこれでエラーが急増してもページが飛ぶから安心だな
注意点2SLOによってはページが飛ばない
例:1秒以内の応答が30日間で50%以上
「30日間で50%以上」の条件式(job:slo_errors_per_request:ratio_rate1h{job="myjob"} > (14.4*0.5)andjob:slo_errors_per_request:ratio_rate5m{job="myjob"} > (14.4*0.5)) or (job:slo_errors_per_request:ratio_rate6h{job="myjob"} > (6*0.5)andjob:slo_errors_per_request:ratio_rate30m{job="myjob"} > (6*0.5))job:slo_errors_per_request:ratio_rate3d{job="myjob"} > 0.5andjob:slo_errors_per_request:ratio_rate6h{job="myjob"} > 0.5
ページ条件 = エラー率300%超…14.4 * 0.5 = 7.2 = 720%6 * 0.5 = 3 = 300%0.5 = 50%
エラー率300%はありえないページは飛ばない
30日間の場合、飛ぶのは83.34%以上6 * (1 - N) < 1(1 - N) < 0.1666N > 0.8334
まとめ
「複数ウィンドウ、複数バーンレートのアラート」を設定する際の注意点
適切な閾値はSLOによって異なるSLOによってはページが飛ばない