マイクロサービスヘルスチェックパターン
ロードバランサー、オーケストレーター、監視向けに異なるコンシューマー向けの個別エンドポイントを持つマイクロサービスアーキテクチャ向けの完全なヘルスチェック戦略を設計します。
Patterns
詳細な説明
マイクロサービスヘルスチェックパターン
マイクロサービスアーキテクチャでは、単一のヘルスエンドポイントでは不十分です。異なるコンシューマーには異なるレベルの詳細と異なる障害動作が必要です。
マルチエンドポイント戦略
GET /health → シンプル(ロードバランサー向け)
GET /health/live → Liveness(Kubernetes向け)
GET /health/ready → Readiness(Kubernetes向け)
GET /health/detailed → 完全なコンポーネントチェック(監視向け)
シンプルエンドポイント (/health)
{ "status": "UP" }
Livenessエンドポイント (/health/live)
{
"status": "ok",
"checks": {
"deadlockDetection": { "status": "ok" },
"memoryThreshold": { "status": "ok" }
}
}
Readinessエンドポイント (/health/ready)
{
"status": "ok",
"dependencies": {
"database": { "status": "ok", "responseTime": "12ms" },
"redis": { "status": "ok", "responseTime": "3ms" }
}
}
セキュリティ考慮事項
| エンドポイント | 認証 | 詳細レベル |
|---|---|---|
| /health | なし | 最小限 |
| /health/live | なし | 内部のみ |
| /health/ready | なし | 依存関係名 |
| /health/detailed | 必要 | 完全な詳細 |
詳細エンドポイントは内部インフラ情報の公開を防ぐために認証を要求すべきです。ヘルスレスポンスに接続文字列、認証情報、IPアドレスを含めないでください。
ユースケース
クラウドロードバランサー、Kubernetes、監視ダッシュボード、オンコールデバッグツールなど複数のコンシューマーにヘルス情報を提供する必要がある本番マイクロサービスデプロイメント。