画像ツール一覧

死活監視

Health Check

運用・現場

ヘルスチェックとは、機器やアプリが期待する状態にあるかを確認する仕組みです。プロセスが生きているか、要求を受け付けられるかなど、目的に応じて確認内容を変えます。外部からの通信だけでなく、内部のコマンドで確認する場合もあります。

🐾 猫で例えると?

寝ている茶トラをアメショがそーっとのぞき込んで生きているか確認する様子 死活監視
ステータス確認:猫はまだゴロゴロ言ってる?

頭に前足を添えて眠る茶トラ。この姿を見て「休んでいるのかな」と様子を確かめるように、ITでも対象の状態を確認します。ただし、プロセスが動いていることと、利用者の要求を処理できることは別です。何をもって正常とするかを決め、確認用の応答や内部状態を調べるのがヘルスチェックです。

🐾 PR

💻 IT現場における「死活監視」とは?

死活監視は、システムの安定稼働を支える運用の要です。サーバーがダウンした際、エンジニアがユーザーからの苦情で気づくのではなく、システム側が自動で検知してアラート(通知)を飛ばすために行われます。

監視の対象は、サーバーのOSレベル(Pingが通るか)、ミドルウェアレベル(Webサーバーが動いているか)、アプリケーションレベル(特定のAPIが正しい値を返すか)など、複数のレイヤーに分かれています。これらを組み合わせることで、「サーバーは動いているが、画面が表示されない」といった微細な異常も発見できるようになります。

⚠️ 死活監視の仕組みと注意点

一般的な死活監視には、主に以下の手法が使われます。

監視スクリプトの例

Bashとcurlがある環境で、指定したURLのHTTP応答だけを調べる例です。接続と全体の待機時間に上限を設け、通信失敗と想定外のステータスを分けています。

if status=$(curl --connect-timeout 3 --max-time 10 -sS -o /dev/null -w "%{http_code}" https://example.com); then
  if [ "$status" = "200" ]; then
    echo "HTTP 200を確認"
  else
    echo "想定外のHTTPステータス: $status"
  fi
else
  echo "通信に失敗(DNS・TLS・タイムアウトなどを確認)"
fi

Kubernetesでは、再起動を判断するliveness、トラフィックを受けられるか見るreadiness、起動完了を見るstartupのプローブを区別します。DBの一時障害を理由に全コンテナを再起動させるなど、確認と対処の組み合わせを誤ると障害が広がることもあります。

🛠️ 死活監視を賢く運用するためのポイント

ただ監視するだけでなく、誤検知を防ぎつつ確実に異常を捉える工夫が必要です。

猫の食欲と動きのどちらを見るかで分かることが違うように、ヘルスチェックも確認内容によって意味が変わります。Pingに応答してもログインや保存が成功するとは限りません。何を異常と判定し、通知や切り離しにつなげるかを目的ごとに決めましょう。