ヘルスチェック機能
概要¶
ヘルスチェックはプリザンターの稼働状況を確認・監視するための機能です。
Webサーバ上で稼動するプリザンターに対してリクエストを送信し、レスポンスが正常であれば正常稼動していると判断できます。
エンドポイント¶
ヘルスチェック機能のエンドポイントは/healthzです。WebブラウザやcurlのようなHTTPクライアントでエンドポイントへアクセスすると、後述の「レスポンス例」のようなレスポンスを取得できます。
エンドポイントへのアクセスはシステムログへ記録されません。
設定¶
ヘルスチェック関連の機能は、Security.jsonのパラメータ「HealthCheck」で設定します。
"HealthCheck": {
"Enabled": true,
"EnableDatabaseCheck": true,
"HealthQuery": "select 1;",
"RequireHosts": ["192.168.1.100"],
"EnableDetailedResponse": true
},
| パラメータ | 既定値 | 説明 |
|---|---|---|
| Enabled | true | ヘルスチェック機能を有効にします。 |
| EnableDatabaseCheck | false | データベースの接続を確認します。 |
| HealthQuery | null | データベースの接続の確認に使うクエリ。 |
| RequireHosts | null | ヘルスチェックを行えるホスト(監視元)。 |
| EnableDetailedResponse | false | 詳細なレスポンス(JSON)を返却します。 |
ヘルスチェック機能の有効化¶
ヘルスチェック機能を有効化するには、HealthCheck.Enabledをtrueに設定してください。既定値はtrueです。
詳細はプリザンターのヘルスチェック機能を有効化するを参照してください。
データベースの接続を確認する¶
プリザンターのヘルスチェックに加え、裏側で連携しているデータベースと正しく接続し、データ取得を行えるかまで踏み込んで確認します。本機能を有効化するにはHealthCheck.EnableDatabaseCheckをtrueに設定してください。
ヘルスチェック用のクエリはHealthCheck.HealthQueryで設定できます。
この機能を有効化した後、レスポンスのstatusがUnhealthyと表示される場合は、FAQ:ヘルスチェック機能でデータベース(SQLServer)の接続確認が"UnHealthy"となるを参照してください。
ヘルスチェックを行えるホストを指定する¶
指定したホスト(監視元)からのみヘルスチェックを行えるように設定できます。HealthCheck.RequireHostsに配列形式で監視元のIPアドレスを設定してください。
レスポンス例¶
以降のレスポンス例では、読みやすさのため、インデントと改行を追加しています。
詳細なレスポンスがオフの場合¶
パラメータ設定が下記の場合のレスポンス例です。
| パラメータ | 値 |
|---|---|
| HealthCheck.Enabled | true |
| HealthCheck.EnableDetailedResponse | false |
プリザンターの稼働状況がレスポンスとして返却されます。
詳細なレスポンスがオンの場合¶
パラメータ設定が下記の場合のレスポンス例です。
| パラメータ | 値 |
|---|---|
| HealthCheck.Enabled | true |
| HealthCheck.EnableDetailedResponse | true |
下記のようなJSONデータが返却されます。
詳細なレスポンスのJSONデータレイアウト¶
詳細なレスポンスを有効化した場合に返却されるJSONのデータレイアウトは以下のとおりです。
トップレベルエントリ¶
| エントリ | 説明 |
|---|---|
| status | 全てのヘルスチェックの結果を表す「状態」です。 |
| totalDuration | 全てのヘルスチェックにかかった時間です。 |
| entries | 個々のヘルスチェックの結果です。後述の「entriesエントリ」を参照してください。 |
entriesエントリ¶
entriesの中には、ヘルスチェック対象を表すエントリが並びます。ヘルスチェック対象はウォームアップまたは接続先データベースです。
| エントリ | 説明 |
|---|---|
| warmup | 後述の「entries.warmupエントリ」を参照してください。 |
| sqlserverまたはnpgsqlまたはmysql | 接続先のデータベースを表すエントリです。 |
ヘルスチェック対象を表すエントリの中には、ヘルスチェックの結果を表すエントリが並びます。エントリはヘルスチェック対象に応じて変わります。
| エントリ | 説明 |
|---|---|
| data | チェック対象の正常性を説明する追加のキーと値のペアです。 |
| description | チェック対象の「状態」を表す文字列です。 |
| duration | チェック対象のヘルスチェックにかかった時間です。 |
| exception | 「状態」をチェックするときに送出された例外です。 |
| status | チェック対象のヘルスチェックの結果を表す「状態」です。 |
| tags | ヘルスチェックに関連付けられているタグです。 |
entries.warmupエントリ¶
このエントリはバージョン1.5.7.0以降で返却されます。
entries.warmupの中には、「ウォームアップ機能」のヘルスチェック結果が並びます。entries.warmup.descriptionとentries.warmup.statusの組み合わせにより、ウォームアップの状況を把握できます。
| statusエントリの値 | descriptionエントリの値 | ウォームアップの状況 |
|---|---|---|
| Healthy | Warmup completed | 正常完了 |
| Degraded | Warmup not started | 未開始 |
| Degraded | Warmup in progress | 進行中 |
| Unhealthy | Warmup failed | 失敗 |
| Unhealthy | Warmup canceled | キャンセル |
下記はデータベースの接続確認と詳細なレスポンスを有効化した環境におけるレスポンス例です。
{
"status": "Healthy",
"totalDuration": "00:00:00.0150735",
"entries": {
"warmup": {
"data": {},
"description": "Warmup completed",
"duration": "00:00:00.0013376",
"status": "Healthy",
"tags": []
},
"npgsql": {
"data": {},
"duration": "00:00:00.0114533",
"status": "Healthy",
"tags": []
}
}
}
下記は、コード上の分岐から想定されるレスポンス例(Degraded/Unhealthy)です。実際の環境で観測したレスポンス例ではありません。
参考情報¶
上記の各パラメータの詳細は、マイクロソフト社の公式ドキュメントを確認してください。
- ASP.NET Core のルーティング > RequireHost とルートが一致するホスト
- HealthReport クラス (Microsoft.Extensions.Diagnostics.HealthChecks)
- HealthReportEntry 構造体 (Microsoft.Extensions.Diagnostics.HealthChecks)
対応バージョン¶
| 対応バージョン | 内容 |
|---|---|
| 1.4.8.0 以降 | 機能追加 |
| 1.5.7.0 以降 | 詳細なレスポンスにwarmupエントリを追加 |
