#はじめに
Cloud Monitoring を使って SLO を作成することができるのですが、事前知識がないとちょっと理解しずらいと感じたため、自分の頭を整理する目的で本記事を書きました。
SLOについて
SLO は、SLI に対して具体的なゴール設定と計測期間を定義したものです。
計測期間は、開発スプリントに合わせやすため7の倍数にすることが多いです。(28日など)
計測期間には2つの考え方があります。Rolling windowとCalendar-aligned windowです。Cloud Monitoring では、Compliance periodとして設定します。設定方法は後述します。
参考:https://sre.google/workbook/implementing-slos/
Rolling window
通常の運用においてよく使用されるのは、Rolling windowになります。こちらは、時間が経過するにつれて、計測期間も移動していきます。つまり、時間が経過するほど、基本的にエラーバジェットが回復していきます。
Calendar-aligned window
Calendar-aligned window は、時間枠は固定になります。つまり、任意の時間が経過するとエラーバジェットの消費が0にリセットされます。用途としては、4半期ごとの評価時等に使用されます。
Request-based と windows-based
計測期間の次には、評価方法を決定します。評価方法には、Request-based と windows-basedが存在します。
参考:https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/ui/create-slo#sli-type
Request-based は、一定期間におけるリクエストの合計数に対する評価条件を満たすリクエストの数を測定します。
例)
例)
期間:7日間
目標とする可用性: 99%
想定RPS: 10rps
総リクエスト数(100%): 6,048,000 リクエスト
良いリクエスト(99%): 5,987,520 リクエスト
エラーバジェット(1%): 60,480 リクエスト
Window-based は、時間枠ベースの評価では、評価対象期間全体に対して良好さの基準を満たす評価期間の数を測定します。つまり、時間ベースで計算します。
例)
期間:7日間
目標とする可用性: 99%
時間枠: 5分
任意の時間枠における良いイベントの閾値: 99% *5分以内に発生したイベントの内99%が良いイベントであればこの5分は条件を満たすことになる
総時間(100%): 604,800 秒
良い時間(99%): 598,752 秒
エラーバジェット(1%): 6,048 秒
重要な点としては、Window-basedは、夜間帯などリクエスト数が少ない場合に、エラーが発生した際の影響が大きくなる傾向にあります。
ここまでの話を図にすると以下のようなイメージになります。
Compliance period(コンプライアンス期間)の設定
Compliance periodは、Cloud Monitoringでは以下の画面で設定します。
Request-based と windows-basedの設定
評価方法は、Cloud Monitoringでは以下の画面で設定します。