ヘルスチェック(ヘルスチェック)
サービス生存確認する定期診断。Kubernetes liveness/readiness/startup probe・AWS ELB HealthCheck・Cloudflare Health Monitoringが代表で、/healthz・/readyz エンドポイントが慣習。
概要
ヘルスチェックは、クラウド環境やコンテナ化されたサービスにおいて、アプリケーションの正常稼働を保証するための定期診断手法です。
サービスがリクエストを受け付ける前に、内部状態を確認するエンドポイント(例:/healthz、/readyz)を設置し、Kubernetes の liveness / readiness / startup probe、AWS ELB HealthCheck、Cloudflare Health Monitoring などが代表的な実装です。
これらは、障害検知と自動復旧を高速化し、稼働率を最大化するために不可欠です。
主な特徴・仕組み
- 状態確認の頻度:10 秒から 60 秒の間隔で自動実行。
- 応答形式:JSON でステータスコード 200 を返却することが多い。
- Kubernetes のプローブ:
- liveness はプロセスが死んでいないかを確認。
- readiness はリクエストを受け付ける準備ができているかを確認。
- startup は起動時に長時間実行され、サービスが完全に起動したかを判断。
- ELB 健康チェック:TCP/HTTP/HTTPS で 5 秒以内に応答があるかを確認。
- Cloudflare Health Monitoring:外部からのアクセスを監視し、応答時間やステータスコードを収集。
- カスタムエンドポイント:/healthz(一般的な状態確認)、/readyz(準備完了確認)を実装することで、サービス固有の診断ロジックを組み込める。
- 自動再起動:障害検知後、Kubernetes は自動で Pod を再起動し、ELB はインスタンスを除外。
- 可視化:Prometheus などでメトリクスを集約し、Grafana でダッシュボード化。
- スケーラビリティ:マイクロサービス全体でヘルスチェックを統一することで、全体の可用性を一元管理。
- セキュリティ:認証付きエンドポイントを設定し、内部ネットワークからのみアクセス可能にする。
スペック/製品比較表
| 製品名 | CPU | GPU | メモリ | ストレージ | TDP | L3 キャッシュ | PCIe バージョン | 速度 | 価格帯 |
|---|---|---|---|---|---|---|---|---|---|
| Intel Core Ultra 9 285K | 8 コア / 16 スレッド | - | 24GB DDR5-6000 | 1TB SSD | 120W | 32MB | PCIe 5.0 x16 | 5.7GHz | 25000円 |
| RTX 4090 | - | 24GB GDDR6X | - | - | 450W | 72MB | PCIe 4.0 x16 | - | 120000円 |
| Samsung 990 Pro | - | - | - | 2TB NVMe | - | - | PCIe 5.0 x4 | 3,440x1,440 | 50000円 |
| AMD Ryzen 9 7950X | 16 コア / 32 スレッド | - | 64GB DDR5-4800 | 1TB SSD | 170W | 64MB | PCIe 5.0 x16 | 5.7GHz | 30000円 |
| NVIDIA A100 | - | 40GB HBM2 | - | - | 400W | 40MB | PCIe 4.0 x16 | - | 200000円 |
具体例・対応製品
- Kubernetes
- livenessProbe:
/healthzを 10 秒ごとにチェック。 - readinessProbe:
/readyzを 5 秒ごとにチェック。 - startupProbe:起動時に 60 秒間は 30 秒ごとにチェック。
- livenessProbe:
- AWS ELB
- HTTP 健康チェックで
/healthzを 30 秒ごとに確認。 - タイムアウトは 5 秒、失敗は 2 回連続で判定。
- HTTP 健康チェックで
- Cloudflare
- 1 分ごとに
/healthzを監視し、応答時間が 200ms を超えるとアラート。
- 1 分ごとに
- 自作PC
- Ubuntu 22.04 上で
systemdのHealthCheckユニットを作成し、curl /healthzを 15 秒ごとに実行。
- Ubuntu 22.04 上で
- IoT デバイス
- ESP32 で
/healthzを 5 秒ごとに HTTP GET。
- ESP32 で
- ゲームサーバ
- Minecraft サーバで
/healthzを 1 分ごとに確認し、応答が無い場合に自動再起動。
- Minecraft サーバで
自作PCでの選び方・注意点
- CPU のコア数:ヘルスチェック処理は軽量だが、同時に複数サービスを走らせる場合は 8 コア以上を推奨。
- メモリ容量:24GB 以上で複数プローブを同時に実行しても遅延が生じない。
- ストレージ速度:NVMe 990 Pro など 3,440x1,440 の読み書き速度で、ログの書き込み遅延を抑える。
- 電源容量:450W 以上の PSU を確保し、ヘルスチェックのための追加負荷を吸収。
- ネットワークカード:10GbE 以上の速度で外部監視サービスとの通信を高速化。
- 冷却性能:CPU と GPU の TDP が高い場合は 120W 以上の水冷を検討。
- OS の選択:Linux 系がプローブの設定が柔軟。Windows では PowerShell スクリプトで実装。
- 監視ツール:Prometheus + Grafana の組み合わせで可視化。
- セキュリティ:ファイアウォールで 127.0.0.1 からのみ
/healthzを許可。 - バックアップ:設定ファイルを Git で管理し、失敗時に素早く復元。
関連用語との違い
- ハートビート:システム全体の稼働を短周期で確認するもので、ヘルスチェックはより詳細な状態を返す。
- ステータスページ:外部に公開される稼働情報。ヘルスチェックは内部でのみ利用されることが多い。
- ロードバランサーのヘルスチェック:外部からの接続を管理するが、ヘルスチェックはサービス内部の状態を確認。
- クラッシュダンプ:障害発生時に取得されるが、ヘルスチェックは障害前に予防的に検知。
よくある質問(FAQ)
-
ヘルスチェックを設定する際に、どのエンドポイントが最適ですか?
/healthzが一般的で、サービス全体の状態を返す。/readyzはサービスがリクエストを受け付ける準備ができているかを確認する。 -
Kubernetes の livenessProbe と readinessProbe の違いは何ですか?
livenessProbe はプロセスが死んでいないかを確認し、失敗すると Pod を再起動。readinessProbe はリクエストを受け付ける準備ができているかを確認し、失敗するとトラフィックを遮断。 -
ELB の健康チェックで失敗した場合、どのように対処すべきですか?
タイムアウトや失敗回数を調整し、必要に応じて/healthzの応答時間を短縮。ログを確認し、サービス側の問題を修正。 -
自作PCでヘルスチェックを実装する際のベストプラクティスは?
systemd のExecStartPostでcurl /healthzを実行し、失敗時に自動再起動を設定。監視は Prometheus で収集し、Grafana で可視化。 -
ヘルスチェックは 2025年 以降も重要ですか?
はい。クラウドサービスが次世代に移行しても、サービスの可用性を保証するためにヘルスチェックは不可欠です。
まとめ
ヘルスチェックは、クラウドやコンテナ化された環境でサービスの稼働率を高めるための定期診断手法です。
Kubernetes のプローブ、AWS ELB の健康チェック、Cloudflare の監視といった実装例があり、/healthz /readyz という慣習的なエンドポイントで状態を返却します。
自作PCでも同様に、CPU 8 コア以上、24GB 以上のメモリ、NVMe 990 Pro など高速ストレージを備えた構成で、systemd などを利用してヘルスチェックを実装することで、安定稼働と障害早期検知が可能です。
次世代のクラウドインフラや 2026年 以降のマイクロサービスアーキテクチャにおいても、ヘルスチェックは不可欠な要素であり、最新の監視ツールと組み合わせることで、最高の可用性を実現できます。