FIG-109

死活監視とアラート — 心電図は、波形が消えたときこそ鳴らす

インフラ 2026.09.28 公開 読了 約11分

サービスが遅くなったり止まったりしたとき、利用者より先に気づきたい。そのための仕組みが監視とアラートです。数値を見張り、おかしくなったら担当者の呼び出し(ポケベル)を鳴らします。

たとえるなら病室の心電図モニターです。波形が乱れたら鳴る。でも、鳴りすぎると誰も駆けつけなくなり、コードが抜けて波形が消えたことに気づけなければ意味がありません。図1で、しきい値と「何秒続いたら鳴らすか」を変えながら、3種類の異変を起こしてみてください。

MONITOR — 鳴らしすぎず、見逃さず。しきい値・継続時間・途絶の3つで決める
何秒続いたら鳴らすか(for)
app-01 / 応答時間 ♥ 12:00:00
しきい値
NO DATA — 波形が届いていない
📟
静か アラートは出ていません
    鳴った回数 0
    うち、放っておいても直った山 0
    本当の異変に気づくまで —
    図1 — 1秒を20秒とみなして早回ししている。赤い帯はアラートが鳴っていた時間、点線は波形が届かなかった時間

    鳴りすぎるアラートは、鳴らないのと同じ

    「すぐ鳴らす」のまま「⚡ 一瞬だけ遅くなる」を押すと、数秒で勝手に直る山でもポケベルが鳴ります。夜中にこれが毎日続くと、担当者はだんだんアラートを見なくなります。本当の障害のときにも「またか」と流されてしまう。これをアラート疲れと呼びます。

    そこで「30秒続いたら」のように継続時間(for)の条件を付けます。一瞬の山は条件を満たす前に下がるので鳴りません。ただし、そのぶん本当の異変に気づくのも遅れます。「📈 じわじわ悪化」で、for を変えると検知までの時間がどう変わるか比べてみてください。どこまで待てるかは、そのサービスが止まったときの痛さで決めます。

    一番危ないのは「波形が消えたとき」

    死活監視をオフにしたまま「💀 サーバーが止まる」を押してください。サーバーが止まったのに、ポケベルはいつまでも鳴りません。「応答時間が500msを超えたら」というルールは、数値が届いてはじめて判定できるからです。止まったサーバーは遅い数値すら送ってきません。

    これを防ぐのが死活監視です。「一定時間、データ(ハートビート)が届かなければ鳴らす」という、無いことを見張るルールです。心電図でいえば、波形の乱れではなく波形そのものが途絶えたことに反応するアラームです。外から定期的にアクセスして応答を確かめる外形監視も、同じ目的で使われます。

    同じ理屈で、監視システム自身が止まったことにも気づける必要があります。監視が落ちれば、すべてのアラートが静かになるからです。そのため「監視から定期的に届くはずの合図が途絶えたら、別の場所で鳴らす」仕組みを置いておきます。

    用語ミニ辞書
    死活監視
    サーバーやサービスが生きているかを見張ること。応答やハートビートが途絶えたら鳴らす。
    しきい値
    「この値を超えたら異常」と決めた境目。
    for(継続時間)
    しきい値を超えた状態が、どれだけ続いたら鳴らすか。一瞬の山を無視するために使う。
    ハートビート
    「生きているよ」と定期的に送る合図。届かないこと自体が異常のサインになる。
    アラート疲れ
    対応不要なアラートが多すぎて、担当者がアラートに反応しなくなること。
    外形監視
    利用者と同じように外からアクセスし、ちゃんと応答が返るかを確かめる監視。

    まとめ

    アラートは鳴らしすぎても、見逃しても役に立ちません。しきい値に継続時間を組み合わせると一瞬の山を無視できますが、そのぶん検知は遅れます。そして数値のルールは数値が届かないと判定できないので、データが途絶えたことを見張る死活監視を必ず並べて置きます。心電図は、波形が消えたときこそ鳴らなければいけないのです。