【へるすちぇっく】

ヘルスチェック とは?

💡 元気ですか?をサーバーに聞き続ける
📌 このページのポイント
ヘルスチェックの仕組み ロードバランサー / 監視システム サーバー A 200 OK サーバー B 200 OK サーバー C タイムアウト プールから除外 トラフィック停止 定期的に 送信 Liveness チェック 「プロセスは生きているか?」 応答なし → コンテナ再起動 例: /healthz エンドポイント Readiness チェック 「リクエストを受付可能か?」 未準備 → ルーティング対象外 例: /ready エンドポイント
ヘルスチェックの仕組み
ひよこ ひよこ

サーバーが落ちてるのにしばらく気づかなくて、ユーザーから問い合わせが来ちゃった…。

ペンギン先生 ペンギン先生

ヘルスチェックを設定していれば防げたかもね。サーバーの /health エンドポイントに定期的にリクエストを送って、応答がなければ自動で通知してくれる仕組みだよ。

ひよこ ひよこ

ただ生きてるかどうかを確認するだけ?

ペンギン先生 ペンギン先生

シンプルなものはそうだけど、しっかり作るならデータベースへの接続確認や、依存する外部APIの状態も含めてチェックするよ。200 OKを返すだけじゃなくて、本当にサービスが使える状態かを確認するんだ。

ひよこ ひよこ

チェックした結果はどう使うの?

ペンギン先生 ペンギン先生

ロードバランサーなら、ヘルスチェックに失敗したサーバーにはリクエストを送らなくなるよ。Kubernetesならコンテナを自動で再起動してくれる。人間が気づく前にシステムが自動で対応してくれるのが最大のメリットだね。

ひよこ ひよこ

ヘルスチェックの間隔ってどのくらいが適切なの?

ペンギン先生 ペンギン先生

一般的には10〜30秒間隔が多いよ。短すぎるとサーバーに負荷がかかるし、長すぎると障害の検知が遅れる。AWSのALBはデフォルト30秒間隔で、「連続して何回失敗したらunhealthy」という閾値も設定できるんだ。一時的なネットワークの揺れで即座にunhealthy判定されないようにするのがコツだよ。

ひよこ ひよこ

ヘルスチェックのエンドポイントって何を返すべきなの?

ペンギン先生 ペンギン先生

シンプルなものなら200 OKを返すだけでいいけど、プロダクション品質のヘルスチェックは「liveness」と「readiness」を分けるのがベストプラクティス。livenessはプロセスが生きているか(失敗ならコンテナ再起動)、readinessはリクエストを受ける準備ができているか(失敗ならロードバランサーから除外)。Kubernetesではこの2つを別々のエンドポイントで定義するのが標準的なパターンだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
ヘルスチェックは、サービスが正常に動いているかを自動で確認する仕組みです。ロードバランサーKubernetesがヘルスチェックの結果をもとに障害対応を自動化します。単純な死活監視だけでなく、依存サービスの状態も含めたチェックを行うことで、信頼性の高い運用が実現できます。
📖 おまけ:英語の意味
「Health Check」 = 健康診断
💬 医療の健康診断になぞらえて、システムの状態を定期的に検査することを指す
← 用語集にもどる