監視ツールを増やす前に、いま困っている症状を一つ選んでください。この記事は11事例の全文集ではなく、症状から観測面と次に読む記事を選ぶ診断ハブです。公開中の個別記事があるテーマはそちらを正本とし、独立記事がない検証だけ、当時の実測の核を短く残します。
最初の分岐:止まったのか、届かないのか、進んでいないのか
| 症状 | 最初に見る面 | 次に読む記事 |
|---|---|---|
| プロセスも疎通も正常だが成果が増えない | 進捗カウンタと更新時刻 | 死活・疎通・進捗を3層で分ける |
nvidia-smiは正常だがGPUジョブが止まる |
生成件数の増分 | GPUハングを進捗で検知する |
| 停止の検知から復旧までが遅い | 無進捗時間と復旧条件 | 進捗ゼロを35分以内に検知する |
| Prometheusには値があるが古い | 値ではなくサンプル時刻 | 古い値を鮮度ゲートで止める |
GrafanaがNo dataになる |
収集・転送・クエリを順に確認 | OTelとPromQLを切り分ける |
| 例外が起きたのにログが残らない | 例外を握りつぶす境界 | サイレント障害を見つける |
| 回線が遅くないのに外向き通信が失敗する | NATセッションと外側ポート | MAP-Eのポート枯渇を切り分ける |
| 無人運用で、どこまで常時監視するか迷う | 常時稼働と必要時起動の境界 | 必要時だけ起動する確認手順 |
独立記事がない検証は、観測点だけ残す
時刻ずれ:通知時刻より、比較している時計を確認する
時刻同期の検証では、単にNTPサービスの起動状態を見るのでは足りませんでした。ログの発生時刻、集計側の現在時刻、期限判定に使うタイムゾーンが別々なら、正常な処理を遅延と誤判定できます。切り分けでは各面のUTC時刻を同じ行に出し、差を確認します。
ログ配送:起動済みと着弾済みを分ける
Loki/PromtailとVectorの検証で残った核は同じです。コンテナがUpでも配送完了ではありません。送信元から一意なマーカーを1行流し、収集先でその文字列を検索できて初めて着弾と判断します。設定変更後に既存コンテナが設定を読み直さなかったケースもあったため、再作成の有無も観測対象です。
通知:HTTP成功と、意図したtopicへの到着を分ける
ntfyの隔離検証では、認証拒否は401として観測できました。一方、誤ったtopicを読むとリクエスト自体は成立しても中身が空です。送信HTTPの成否だけで終えず、受信側で一意な本文を読むところまでを一組にします。
死活:Uptime KumaのDownと通知失敗を別の故障として扱う
監視対象の停止と通知先の停止は、復旧手順が違います。対象がDownになること、通知受け口を止めると通知が届かないことを別々に起こし、監視画面の状態と通知先の着弾を分けて記録しました。
状態ファイル:古いrunningを現在の稼働と読まない
状態ファイルが9日間runningのまま残った事例では、値そのものより更新時刻が欠けていたことが死角でした。PID、プロセス開始時刻、状態ファイルの更新時刻を照合し、古い自己申告を現況として扱わないようにします。
同期ジョブ:停滞と通知重複を別々に数える
同期の監視では、最終成功時刻だけだと「仕事がない」と「止まった」を区別できません。入力の増分、処理済みの増分、直近通知の識別子を分けると、停滞判定と同じ警告の連投を切り離せます。
監視を追加する順番
- 読者が困っている症状を一つ決める。
- 死活・疎通・進捗・鮮度・着弾のどれを見るか決める。
- 正常時の値と更新時刻を一度保存する。
- 故障を一種類だけ起こし、期待した面が変わるか確認する。
- 通知が届いたことではなく、復旧後に値が再び増えるところまで確認する。
監視ツールの台数ではなく、故障時にどの観測面が変わるかが設計の中心です。まず3層の整理から始め、症状が具体化したら個別記事へ進んでください。
この検証を回している環境
この検証は、自宅の常設ラボ(使い捨てVM/LXCを回す母艦+GPU+VLAN分離ネットワーク)で動かしています。使っている機材と選定理由、全体構成は1本にまとめています。
ラボ構成のまとめを見る →