ヘルスチェック機能
## 概要
ヘルスチェックはプリザンターの稼働状況を確認・監視するための機能です。
ユーザはWebサーバ上で稼動するプリザンターに対してリクエストを送信し、レスポンスが正常であれば正常稼動していると判断できます。
### ヘルスチェック機能のエンドポイント
ユーザはWebブラウザやCurlのようなHTTPクライアントを使ってエンドポイントへアクセスすることで、下記「レスポンス例」のようなレスポンスを取得できます。
ヘルスチェック機能のエンドポイントは/healthzです。
##### http\://localhostの場合のURL例
``` text
http://localhost/healthz
```
エンドポイントへのアクセスはシステムログへ記録されません。
### ヘルスチェック機能の設定
ヘルスチェック関連の機能は、[Security.json](/ja/manual/security-json)のパラメータHealthCheckで設定できます。
##### Security.json
``` json
"HealthCheck": {
"Enabled": true,
"EnableDatabaseCheck": true,
"HealthQuery": "select 1;",
"RequireHosts": ["192.168.1.100"],
"EnableDetailedResponse": true
},
```
## ヘルスチェック機能の有効化
ヘルスチェック機能を有効化するには、HealthCheck.Enabledをtrueに設定してください。
## データベースの接続を確認する
プリザンターのヘルスチェックに加え、裏側で連携しているデータベースと正しく接続し、データ取得を行えるかまで踏み込んで確認します。本機能を有効化するにはHealthCheck.EnableDatabaseCheckをtrueに設定してください。
ヘルスチェック用のクエリはHealthCheck.HealthQueryで設定できます。
この機能を有効化した後、レスポンスのstatusがUnHealthyと表示される場合は、以下のFAQを参照してください。
[FAQ:ヘルスチェック機能でデータベース(SQLServer)の接続確認が"UnHealthy"となる](faq-health-check-sql-server-unhealthy)
## ヘルスチェックを行えるホストを指定する
指定したホスト(監視元)からのみヘルスチェックを行えるように設定できます。HealthCheck.RequireHostsに配列形式で監視元のIPアドレスを設定してください。
## レスポンス例
以降のレスポンス例では、読みやすさのため、インデントと改行を追加しています。
### 詳細なレスポンスがオフの場合
パラメータ設定が以下の場合のレスポンス例です。
| パラメータ | 値 |
| :--------------------------------- | :---- |
| HealthCheck.Enabled | true |
| HealthCheck.EnableDetailedResponse | false |
プリザンターの稼働状況がレスポンスとして返却されます。
#### 正常時(HTTPステータスコード:200 OK)
``` text
Healthy
```
#### 異常時(HTTPステータスコード:503 Service Unavailable)
``` text
Unhealthy
```
### 詳細なレスポンスがオンの場合
パラメータ設定が以下の場合のレスポンス例です。
| パラメータ | 値 |
| :--------------------------------- | :--- |
| HealthCheck.Enabled | true |
| HealthCheck.EnableDetailedResponse | true |
以下のようなJSONデータが返却されます。
#### 正常時(200 OK)
```json
{
"status": "Healthy",
"totalDuration": "00:00:00.0034430",
"entries": {
"sqlserver": {
"data": {},
"duration": "00:00:00.0032497",
"status": "Healthy",
"tags": []
}
}
}
```
#### 異常時(503 Service Unavailable)
```json
{
"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)
以下はデータベースの接続確認と詳細なレスポンスを有効化した環境におけるレスポンス例です。
```json
{
"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)
以下は、コード上の分岐から想定されるレスポンス例です。実際の環境で観測したレスポンス例ではありません。
##### Degraded(未開始)
```json
{
:
"entries": {
"warmup": {
"description": "Warmup not started",
"status": "Degraded"
}
}
}
```
##### Degraded(進行中)
```json
{
:
"entries": {
"warmup": {
"description": "Warmup in progress",
"status": "Degraded"
}
}
}
```
##### Unhealthy(失敗)
```json
{
:
"entries": {
"warmup": {
"description": "Warmup failed",
"status": "Unhealthy"
}
}
}
```
##### Unhealthy(キャンセル)
```json
{
:
"entries": {
"warmup": {
"description": "Warmup canceled",
"status": "Unhealthy"
}
}
}
```
### 参考情報
上記の各パラメータの詳細は、マイクロソフト社の公式ドキュメントを確認してください。
・[ASP.NET Core のルーティング > RequireHost とルートが一致するホスト](https://learn.microsoft.com/ja-jp/aspnet/core/fundamentals/routing?view=aspnetcore-8.0#host-matching-in-routes-with-requirehost)
・[HealthReport クラス (Microsoft.Extensions.Diagnostics.HealthChecks)](https://learn.microsoft.com/ja-jp/dotnet/api/microsoft.extensions.diagnostics.healthchecks.healthreport?view=net-8.0)
・[HealthReportEntry 構造体 (Microsoft.Extensions.Diagnostics.HealthChecks)](https://learn.microsoft.com/ja-jp/dotnet/api/microsoft.extensions.diagnostics.healthchecks.healthreportentry?view=net-8.0)
## 対応バージョン
| 対応バージョン | 内容 |
| :------------- | :------------------------------------- |
| 1.4.8.0 以降 | 機能追加 |
| 1.5.7.0 以降 | 詳細なレスポンスにwarmupエントリを追加 |
## 関連情報
<div id="ManualList"><ul><li><a href="/ja/manual/security-json">パラメータ設定:Security.json</a><span>2026/08/12 up</span></li></ul></article></div><input id="SearchTextHidden" type="hidden" value="" />



