- ブラウザURL入力
- DNS名前→IP
- ルータ経路選択
- ロードバランサ振り分け今ここ
- Nginx受け口
- アプリ処理
- DB保存
前回までで、目標値と、それを使い切る許可の話を見ました。今回は警報をどう評価するかです。
まず結論
ここで扱うのは警報(アラート)の評価です。機械学習のクイズ群に出てくる適合率・再現率と同じ語ですが、対象は分類器ではなく「鳴るべきときに鳴ったか」です。
閾値を1本引いただけの警報では、下げると適合率が落ち、上げると再現率が落ちます。ただしこれは2つの指標が対立するからではなく、調整できる手が1本しかないからです。手を増やせば両方を良くできますが、代償は消えず、管理するパラメータの多さへ移ります。
「無駄鳴りが多い」と言われた警報の閾値を上げました。何が起きますか。
当てることが目的ではありません。外した予測ほど記憶に残るので、直感で選んでください。
警報を評価する4つの物差し
適合率と再現率という語は、機械学習の評価指標として既存クイズ群に出てきます。ここで扱うのは分類器ではなく警報です。 判定の対象は「この入力は陽性か」ではなく「今、鳴るべきか」です。
SRE Workbook 第5章の前置きです。
Your goal is to be notified for a significant event: an event that consumes a large fraction of the error budget.
何を重大とみなすかは、観測値ではなく別に定めた基準で決まります。そのうえで Consider the following attributes when evaluating an alerting strategy: と4属性を挙げます。
| 属性 | 原文(上2つは定義、下2つは長い場合の害) | この教材での言い方 |
|---|---|---|
| Precision | The proportion of events detected that were significant | 鳴った警報のうち、重大だった割合 |
| Recall | The proportion of significant events detected | 重大な事象のうち、鳴った割合 |
| Detection time | Long detection times can negatively impact the error budget | 通知が出るまでの時間 |
| Reset time | Long reset times can lead to confusion or to issues being ignored | 解消後も鳴り続ける時間 |
上の2つは分母が違います。適合率は「鳴ったもの」を、再現率は「起きたもの」を分母に取ります。原文は100%の意味も書き分けます。Precision is 100% if every alert corresponds to a significant event / Recall is 100% if every significant event results in an alert。
閾値を1本だけ動かしてみる
20分ぶんの毎分エラー率を並べ、0.50% 以上を重大とすると決めます。これは閾値ではなく重大さの定義です。そのうえで閾値だけを動かします。
観測 20 分 / significant(=0.5%以上) は 3 件閾値(%) 警報数 TP FP FN 適合率 再現率0.03 11 3 8 0 27.27% 100.00%0.10 5 3 2 0 60.00% 100.00%0.30 5 3 2 0 60.00% 100.00%0.50 3 3 0 0 100.00% 100.00%0.80 2 2 0 1 100.00% 66.67%1.00 1 1 0 2 100.00% 33.33%
閾値を下げると適合率だけが落ち、上げると再現率だけが落ちます。ここまでは予測どおりです。
しかしハイライトした行では両方が100%になっています。 対立する2つの指標なら、こういう点は無いはずです。種明かしは単純で、ここでは重大さの定義と観測量が同じだからです。0.50% 以上を重大と決め、0.50% で鳴らしているので、ずれようがありません。
第5章の定義で、適合率(precision)が100%とはどの状態ですか。
ずれが生まれるのは、測っている量が重大さを代理しきれないとき
現場では、その瞬間のエラー率だけで重大さは決まりません。同じ 0.40% でも、長く続けばバジェットを大きく削り、一瞬で終われば削りません。
そこで数列も定義式もそのままに、重大さの側だけを変えます。4番目(0.40%)は長く続いたので重大、7番目(0.90%)は一瞬で終わったので重大でなかった、とします。
閾値(%) TP FP FN 適合率 再現率0.03 3 8 0 27.27% 100.00%0.36 3 1 0 75.00% 100.00%0.50 2 1 1 66.67% 66.67%0.91 1 0 2 100.00% 33.33%適合率・再現率がともに100%になる閾値: 存在しない(0.01%〜1.30% を0.01刻みで全探索)
両方100%の閾値が消えました。 2つの計算の違いは、観測量と重大さのずれの有無だけです。
ここは原典と分けます。原典が実演しているのは、1本の閾値では片方が犠牲になるということまでです。「片方を諦めるのは、測っている量が重大さを言い当てきれていないから」という読み方は本教材の整理で、性能分析編『壊れる前に、何を測っておくか』の問いに帰着します。
つまみを増やすと、両方とも良くなる
第5章は6案を忠実度の低い順に並べ、それぞれに Pros / Cons を付けます。
案 Pros Cons1 即時のエラー率 good recall Precision is low2 窓を広げる Better precision Very poor reset time3 継続時間を指定 higher precision Poor recall and poor detection time4 バーンレート Good precision Low recall5 複数バーンレート Good precision / Good recall More numbers, window sizes, and thresholds to manage6 複数バーンレート+複数窓 Good precision / Good recall Lots of parameters to specify
ハイライトした2案では Good precision と Good recall が同じ Pros 欄に並びます。 それより前の案で片方が犠牲になっていたのは、2つの指標が対立していたからではなく、動かせるつまみが1本しかなかったからです。
そして代償は消えていません。 最も忠実度の高い案の Cons は逐語で Lots of parameters to specify, which can make alerting rules hard to manage。指標の側から運用の側へ移りました。払うのは、その警報規則を作り、直し、当番のたびに読み続ける人です。
両方100%になる閾値が「存在する場合」と「存在しない場合」を分けたのは何ですか。
警報の閾値(今回)
閾値1本だけでは、下げると適合率が落ち、上げると再現率が落ちます。バーンレートと窓を複数持てば両方とも良くなりますが、パラメータが増えます。
つまみ 適合率 再現率 増えるもの閾値1本 片方だけ 片方だけ なし複数バーンレート Good Good 管理するパラメータ
壊れた実体を外す判定(第30週)
第30週で見た nginx の判定では、fail_timeout という1つの値が「失敗を数える窓の長さ」と「切り離す時間」の両方に使われます。つまみが1本なので、片方の都合で値を変えるともう片方も動きます。
設定 役目1 役目2fail_timeout 失敗を数える窓 切り離す時間max_fails 何回で外すか (何を失敗とみなすかは別の設定)
警報の閾値と、nginx の fail_timeout。対象は違いますが、共通する構造は何でしょうか。
「片方を良くすると片方が悪くなる」状態で、何が1つしか無いのかを両方について探してみてください。
代償がどこへ移るか、1枚にする
- ・最上段から2段目への矢印がこの回の要点。観測量が重大さを代理しきれないとき、1本の閾値では両立しなくなる
この章のまとめ
- ここでの適合率・再現率は警報の評価。適合率は「鳴ったもののうち」、再現率は「起きたもののうち」で、分母が違う。
- 閾値1本だけの警報では、下げると適合率が、上げると再現率が落ちる。
- 架空の20分の数列による算術では、観測量が重大さと一致すれば両方100%の閾値が存在し、継続時間でずれると全探索しても存在しなかった。片方を諦めるのは、測っている量が重大さを代理しきれないとき(本教材の整理)。
- SRE Workbook 第5章はトレードオフを主張していない。 4属性を
simultaneouslyに良く制御する案への到達を目標に掲げる。 - 代償は消えず、移る。 Cons は
Lots of parameters to specify。管理を引き受けるのは運用し続ける人。 Reset timeの害として原文が挙げるのは混乱と、問題が無視されること。「注意が戻らない」ではない。
自分の現場で確かめる
読んだだけでは身につきません。手元の環境で実際に見てみてください。
理解度チェック
読んだ直後は「分かった」と感じやすいものです。実際に解いて確かめてください。
「SRE Workbook は、警報の適合率と再現率は同時には上げられないと述べている」の評価はどれですか。
用語集(4語)
- 適合率 (precision)
- 鳴った警報のうち、重大な事象だったものの割合。原文は `The proportion of events detected that were significant`。detected は「鳴った」の意。別コースの precision は数値の精度の意味で、別の語。
- 再現率 (recall)
- 重大な事象のうち、警報が鳴ったものの割合。原文は `The proportion of significant events detected`。適合率と分母が違う。
- 鳴り止むまでの時間 (reset time)
- 問題が解消した後も警報が鳴り続ける時間。原文が挙げる害は、混乱と、問題が無視されるようになること。
- 重大な事象 (significant event)
- 第5章が警報の対象として置く事象。原文は `an event that consumes a large fraction of the error budget`。何が重大かは観測値ではなく、別に定めた基準で決まる。