14.4. MicroProfile Helth

14.4.1. 概要

MicroProfile Healthは、マイクロサービス環境においてサービスのヘルス状態をチェックするための機能を提供します。

14.4.2. ヘルスチェック の MBean 設定項目

ヘルスチェック には以下の設定項目があります。設定の反映には、ドメインの再起動が必要です。

ヘルスチェック機能の設定
dotted-name(CLINAME) 説明 既定値
server.microprofile.microprofile-health.enabled /health を有効にするかどうかを設定します。true の場合は有効。false の場合は無効。 true

14.4.3. 提供機能

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より指定することができます。プロパティはそれぞれ以下の意味を持ちます。

mp.health.default.startup.empty.response プロパティ
説明 プロパティ値 レスポンス
コンテナが起動中でユーザー定義の@Startup、@Readinessアノテーションを実装したHealthCheckを実行できない場合の挙動を指定します。 true(既定値) “UP”(HTTP 200)
false “DOWN”(HTTP 500)
mp.health.default.readiness.empty.response プロパティ
説明 プロパティ値 レスポンス
ユーザーが定義する@Startup、@Readinessアノテーションを実装したHealthCheckクラスが無い場合の挙動を指定します。 true(既定値) “UP”(HTTP 200)
false “DOWN”(HTTP 500)

14.4.4. 記述例

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();
            :