ヘルスチェック
Babel Licensing Service のヘルスチェック機能は、サービスとそのコンポーネントの正常性と稼働状況を監視するための包括的な仕組みです。この機能は、システムの信頼性の確保、トラブルシューティングの効率化、インフラストラクチャ監視ツールとの連携に欠かせません。
構成
ヘルスチェックの動作は、appsettings.json ファイルの Application セクションで設定します。
"Application": {
"HealthCheckEndPoint": "/health",
"HealthCheckResponseType": "JSON"
}HealthCheckEndPoint
この設定は、ヘルスチェックエンドポイントにアクセスするための URL パスを指定します。既定値は /health です。
例:サービスが https://licensing.example.com で実行されていて、HealthCheckEndPoint が /health に設定されている場合、ヘルスチェックの完全な URL は https://licensing.example.com/health になります。
HealthCheckResponseType
この設定は、ヘルスチェックの応答の形式を決定します。次の 2 つの形式がサポートされています。
- JSON:構造化された JSON 応答を返します(既定)
- TEXT:人が読みやすいプレーンテキストの応答を返します
JSON 応答の形式
HealthCheckResponseType が "JSON" に設定されている場合、ヘルスチェックエンドポイントは次のような構造化された JSON 応答を返します。
{
"status": "Healthy",
"duration": "00:00:00.2514204",
"timestamp": "2025-03-20T07:26:07.1085160Z",
"checks": [
{
"name": "babel_service_health",
"status": "Healthy",
"duration": "00:00:00.0010617",
"data": {
"serverTimeUtc": "2025-03-20T07:26:06.8604190Z",
"activeTokens": 0
}
},
{
"name": "database_health",
"status": "Healthy",
"duration": "00:00:00.1003761"
},
{
"name": "webhook_processor_health",
"status": "Healthy",
"duration": "00:00:00.0605641",
"data": {
"hasFailedEvents": false
}
},
{
"name": "geo_location_health",
"status": "Healthy",
"duration": "00:00:00.2456515"
}
]
}この形式は、次の用途に最適です。
- 自動監視システム
- Kubernetes などのオーケストレーションプラットフォームとの連携
- プログラムによる正常性の評価
- JSON データを解析できるサードパーティの監視ツール
TEXT 応答の形式
HealthCheckResponseType が "TEXT" に設定されている場合、ヘルスチェックエンドポイントは人が読みやすい形式で応答を返します。
Babel Licensing Service v. 11.0.0.0
Status: Healthy
Duration: 00:00:00.2586788
Timestamp: 2025-03-20T07:23:14.0761680Z
Version: 11.0.0.0
Checks:
- Babel Licensing Service: Healthy (00:00:00.0024254)
* Server Time Utc: 2025-03-20T07:23:13.8180050Z
* Active Tokens: 0
- Database: Healthy (00:00:00.0901153)
- Webhook Processor: Healthy (00:00:00.0687397)
* Has Failed Events: False
- Geo Location: Healthy (00:00:00.2550240)この形式は、次の用途に向いています。
- システム管理者による手動での確認
- コマンドラインツールと簡単な状態確認
- 追加の解析なしで応答を読めるようにする必要がある場合
- ログファイルのエントリとコンソール出力
ヘルスチェックのコンポーネント
Babel Licensing Service のヘルスチェックは、次の重要なコンポーネントを監視します。
- サービスの正常性:サーバー時刻、ライセンスのエディション、アクティブなトークン、許可されているトークンの上限など、メインサービスに関する情報を提供します。
- データベースの正常性:データベースへの接続と稼働状況を検証します。
- Webhook プロセッサー:Webhook の処理システムが正しく機能しているかどうかを確認します。
- 位置情報サービス:設定されている位置情報サービス(IpApiIs など)が稼働していることを確認します。
状態の値
ヘルスチェックは、次のいずれかの状態を報告します。
- Healthy:コンポーネントは正常に機能しています
- Degraded:コンポーネントは稼働していますが、機能またはパフォーマンスが低下しています
- Unhealthy:コンポーネントは正しく機能していません
監視システムとの連携
ヘルスチェックエンドポイントは、さまざまな監視システムと連携できます。
- ロードバランサー:ヘルスチェックを使用して、サービスにトラフィックを送るかどうかを判断できます
- コンテナーオーケストレーション:Kubernetes などのプラットフォームは、このエンドポイントを readiness プローブと liveness プローブに使用できます
- 監視ツール:Prometheus、Nagios、Zabbix などのシステムは、エンドポイントを定期的に確認できます
- カスタムダッシュボード:JSON 形式は、独自の監視ダッシュボードで利用できます
ベストプラクティス
- 定期的な監視:監視システムを設定して、ヘルスチェックエンドポイントを一定の間隔で確認します。
- アラート:サービスが Healthy から Degraded または Unhealthy に移行したときのアラートを設定します。
- 応答形式の選択:自動化されたシステムには JSON を、人が確認する場合には TEXT を選択します。
- カスタムエンドポイント:本番環境では、セキュリティ上の理由から、既定のエンドポイントの変更を検討してください。
- ファイアウォールの構成:監視システムからヘルスチェックエンドポイントへのアクセスを、ファイアウォールが許可していることを確認してください。
ヘルスチェック機能は、システムとそのコンポーネントの稼働状況をリアルタイムで把握できるため、デプロイした Babel Licensing Service の信頼性と安定性を維持するために欠かせないツールです。