コンテンツにスキップ

ヘルスチェック機能

概要

ヘルスチェックはプリザンターの稼働状況を確認・監視するための機能です。

Webサーバ上で稼動するプリザンターに対してリクエストを送信し、レスポンスが正常であれば正常稼動していると判断できます。

エンドポイント

ヘルスチェック機能のエンドポイントは/healthzです。WebブラウザやcurlのようなHTTPクライアントでエンドポイントへアクセスすると、後述の「レスポンス例」のようなレスポンスを取得できます。

http://localhostの場合のURL例
http://localhost/healthz

エンドポイントへのアクセスはシステムログへ記録されません。

設定

ヘルスチェック関連の機能は、Security.jsonのパラメータ「HealthCheck」で設定します。

Security.json
"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

プリザンターの稼働状況がレスポンスとして返却されます。

Healthy
Unhealthy

詳細なレスポンスがオンの場合

パラメータ設定が下記の場合のレスポンス例です。

パラメータ 値
HealthCheck.Enabled true
HealthCheck.EnableDetailedResponse true

下記のようなJSONデータが返却されます。

{
    "status": "Healthy",
    "totalDuration": "00:00:00.0034430",
    "entries": {
        "sqlserver": {
            "data": {},
            "duration": "00:00:00.0032497",
            "status": "Healthy",
            "tags": []
        }
    }
}
{
    "status": "Unhealthy",
    "totalDuration": "00:00:00.0096425",
    "entries": {
        "sqlserver": {
            "data": {},
            "description": "サーバーとの接続を正常に確立しましたが、ログイン中にエラーが発生しました。",
            "duration": "00:00:00.0081609",
            "exception": "サーバーとの接続を正常に確立しましたが、ログイン中にエラーが発生しました。",
            "status": "Unhealthy",
            "tags": []
        }
    }
}

詳細なレスポンスの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 キャンセル

下記はデータベースの接続確認と詳細なレスポンスを有効化した環境におけるレスポンス例です。

レスポンス例(Healthy)
{
    "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)です。実際の環境で観測したレスポンス例ではありません。

{
        :
    "entries": {
        "warmup": {
            "description": "Warmup not started",
            "status": "Degraded"
        }
    }
}
{
        :
    "entries": {
        "warmup": {
            "description": "Warmup in progress",
            "status": "Degraded"
        }
    }
}
{
        :
    "entries": {
        "warmup": {
            "description": "Warmup failed",
            "status": "Unhealthy"
        }
    }
}
{
        :
    "entries": {
        "warmup": {
            "description": "Warmup canceled",
            "status": "Unhealthy"
        }
    }
}

参考情報

上記の各パラメータの詳細は、マイクロソフト社の公式ドキュメントを確認してください。

対応バージョン

対応バージョン 内容
1.4.8.0 以降 機能追加
1.5.7.0 以降 詳細なレスポンスにwarmupエントリを追加

関連情報