SLO - arosh/arosh.github.com GitHub Wiki
https://sre.google/workbook/alerting-on-slos/
1: Target Error Rate ≥ SLO Threshold
月間の SLO が 99.9% であるとき、たとえば10分間のエラーレートが 0.1% を超えたらアラートにする方法。
- good: アラートが一度も起きなければ確実に SLO 達成
- bad: 過敏すぎる。この例では 0.6 秒止まるだけで 0.1% を超える
2: Increased Alert Window
1 では10分間だったウィンドウをたとえば36時間に延ばす。
- good: 2分10秒止まるとアラートになる。これは妥当だろう
- good: アラートが一度も起きなければ確実に SLO 達成という性質は維持されている
- bad: アラートが一度 trigger されると resolve されるまで36時間かかってしまう
3: Incrementing Alert Duration
ウィンドウは1に戻して(10分間にして)、エラーレートが上がった状態が n 分継続したらアラートとする。
- good: 過敏すぎる状態は是正された
- bad: n が深刻度によって変わらない。全断した状態でもエラーレートが0.2%の状態でも、とにかくn分待たされる
- bad: (アラートウィンドウが10分だとして)10分全断、10分エラーなし、という状態が繰り返されるパターンではアラートにならない。これは一度もアラートが起きていないのに SLO を大きく下回っていた、ということになりかねない
4: Alert on Burn Rate
バーンレートとはエラーバジェットの消費速度(SLO をちょうど達成する消費速度を1とする)である。SLO のウィンドウを28日、SLO を 99.99% としたときのバーンレートが以下である。
Burn rate | Error rate for a 99.99% SLO | Time to exhaustion |
---|---|---|
1 | 0.01% | 28 days |
2 | 0.02% | 14 days |
10 | 0.1% | 2 days + 19.2 hours |
100 | 1% | 6 hours + 43.2 minutes |
500 | 5% | 80.6 minutes |
2500 | 25% | 16.1 minutes |
5000 | 50% | 8.1 minutes |
10000 | 100% | 4 minutes |
アラートウィンドウをA、SLO のウィンドウをW、バーンレートをR、消費されるエラーバジェットの割合をBとしたとき、以下の関係が成り立つ。
B=R*A/W
ここから逆算して「A 時間以内にエラーバジェットが B 以上消費されるような事態が起きたらアラートを出したい」というようなときのバーンレートを計算することができる。
バーンレートR'の障害が起きたときエラーバジェットがB消費されるまでの時間Tは
T=B/R'*W
- good: 3 と比べると、深刻な障害ではすぐにアラートが出る
- bad: 設定したバーンレート以下ではアラートが出ない。これは一度もアラートが起きていないのに SLO を大きく下回っていた、ということになりかねない
- bad: A を1時間に設定すると resolve されるまでに1時間かかることになる
5: Multiple Burn Rate Alerts
バーンレートとアラートウィンドウを複数組み合わせたアラートを設定することもできる。これにより「一度もアラートが起きていないのに、いつのまにか SLO を大きく下回っていた」ということがなくなる。またアラートウィンドウに応じてオンコールを緊急で呼び出すかどうか変えることも考えられる。バーンレートが高くなければ翌営業日での対応でもよい。
SLO のウィンドウを28日としたときの対応は以下の通り。
SLO budget consumption | Time window | Burn rate | Notification |
---|---|---|---|
2% | 1 hour | 13.44 | 緊急警告 |
5% | 6 hours | 5.6 | 緊急警告 |
10% | 2.8 days | 1 | 通常警告 |
- good: 「一度もアラートが起きていないのに、いつのまにか SLO を大きく下回っていた」が解消される
- good: 深刻度に応じて対応レベルを変更できる
- bad: アラートウィンドウが大きいものは resolve されるまでに時間がかかる
6: Multiwindow, Multi-Burn-Rate Alerts
アラートウィンドウの12分の1の時間を short window とする。5 のアラートに加えて and で short window でもしきい値を超えているかどうか判定することで、問題が今でも継続しているかどうか判定することができる。
これにより resolve されるまでの時間の問題が解消される。