|
|
WebOTX Manual V11.1 (第6版) 目次を表示 |
MicroProfile Healthは、マイクロサービス環境においてサービスのヘルス状態をチェックするための機能を提供します。
ヘルスチェック には以下の設定項目があります。設定の反映には、ドメインの再起動が必要です。
| dotted-name(CLINAME) | 説明 | 既定値 |
|---|---|---|
| server.microprofile.microprofile-health.enabled | /health を有効にするかどうかを設定します。true の場合は有効。false の場合は無効。 | true |
WebOTXは/health/live、/health/ready、/health/started、および/healthエンドポイントを提供します。各エンドポイントにGETリクエストを受け付けると、ヘルスチェック応答をJSONフォーマットで返却します。
また、Webアプリケーションは固有のヘルスチェック応答(正常性(UP/DOWN)、データ(KEYとVALUE))を返却するためのクラスを実装することができます。
WebOTXはヘルスチェック応答を返却する際、各Webアプリケーションのヘルスチェック応答を収集し、全体的な正常性に集約して返却します。
MicroProfile Healthは、Webアプリケーションのヘルスチェック応答を返却するクラス(以下、「ヘルスチェック応答クラス」と呼称します)のために、次のアノテーションを提供します。
| 名称 | 説明 | アノテーション名 |
|---|---|---|
| Liveness | アプリケーション準備状態のヘルスチェック応答を返却するクラスであることを定義します。 | @Liveness |
| Readiness | アプリケーション実行状態のヘルスチェック応答を返却するクラスであることを定義します。 | @Readiness |
| Startup | アプリケーション起動状態のヘルスチェック応答を返却するクラスであることを定義します。 | @Startup |
ヘルスチェック応答クラスはorg.eclipse.microprofile.health.HealthCheckクラスを継承すると共にorg.eclipse.microprofile.health.Liveness、org.eclipse.microprofile.health.Readiness、org.eclipse.microprofile.health.Startupアノテーション、javax.enterprise.context.ApplicationScopedアノテーションを定義する必要があります。ヘルスチェック応答クラスは他のclassファイルと同様にWebアプリケーションのWEB-INF/clasesやWEB-INF/libに格納します。
@Startup、@Readinessアノテーションのヘルスチェックにはそれぞれmp.health.default.startup.empty.response、mp.health.default.readiness.empty.responseプロパティが存在し、MicroProfile-Configより指定することができます。プロパティはそれぞれ以下の意味を持ちます。
| 説明 | プロパティ値 | レスポンス |
|---|---|---|
| コンテナが起動中でユーザー定義の@Startup、@Readinessアノテーションを実装したHealthCheckを実行できない場合の挙動を指定します。 | true(既定値) | “UP”(HTTP 200) |
| false | “DOWN”(HTTP 500) |
| 説明 | プロパティ値 | レスポンス |
|---|---|---|
| ユーザーが定義する@Startup、@Readinessアノテーションを実装したHealthCheckクラスが無い場合の挙動を指定します。 | true(既定値) | “UP”(HTTP 200) |
| false | “DOWN”(HTTP 500) |
HealthCheckResponseで正常性を返却するサンプルコードです。
import javax.enterprise.context.ApplicationScoped;
import org.eclipse.microprofile.health.Liveness;
import org.eclipse.microprofile.health.HealthCheck;
import org.eclipse.microprofile.health.HealthCheckResponse;
@Liveness
@ApplicationScoped
public class HelthClass implements HealthCheck {
@Override
public HealthCheckResponse call() {
return HealthCheckResponse.named("SampleLivenessHealth").
up().
withData("dataName", "dataValue").
build();
}
}
上記のクラスを含むWebアプリケーションを配備し、/healthエンドポイントにアクセスすると次のようにJSONフォーマットのレスポンスが返却されます。
{
"status": "UP",
"checks": [
{
"name": "SampleLivenessHealth",
"status": "UP",
"data": {
"dataName": "dataValue"
}
}
]
}
HealthCheckResponseで異常性を返却する場合はup()部分をdown()に変更します。
:
return HealthCheckResponse.named("SampleLivenessHealth").
doen().
withData("dataName", "dataValue").
build();
: