マイクロサービス内でヘルス・チェックを提供するには、mpHealth-1.0
フィーチャーを構成し、HealthCheck アプリケーション・プログラミング・インターフェース (API) を実装します。
MicroProfile Health フィーチャーのバージョン 2.1 以降の資料は、 Open Liberty Web サイトで入手できます。
このタスクについて
ヘルス・チェック は、マイクロサービスによって提供される MicroProfile Health API 実装です。 ヘルス・チェックはサービスの正常性を評価するために使用します。 これらの検査は、主に、 Kubernetesなど、コンテナー化された環境におけるマシン間のメカニズムとして意図されています。 mpHealth-1.0
フィーチャーは、インストールされているマイクロサービスのバイナリー状況 ( UP
または DOWN
) を表す /health エンドポイントを提供します。 マイクロサービスはゼロ個以上のヘルス・チェックを提供でき、サーバーの全体的正常性は各ヘルス・チェックからの状況を集約したものです。 すべてのヘルス・チェック・レポートが肯定的結果である場合のみ、全体的な結果が肯定的になります。
手順
- フィーチャーを構成します。 server.xml ファイルを更新して、フィーチャーを追加します。
<featureManager>
<feature>mpHealth-1.0</feature>
</featureManager>
- API を使用して、実行したいヘルス・チェックを提供します。
@FunctionalInterface
public interface HealthCheck {
HealthCheckResponse call();
}
次の例は、ヘルス・チェックのために API を使用する方法を示しています。
@Health
@ApplicationScoped
public class MyCheck implements HealthCheck {
@Override
public HealthCheckResponse call() {
return HealthCheckResponse.named("MyCheck")
.withData("key1", "val1")
.withData("key2", "val2")
.up()
.build();
}
}
/health エンドポイントへの HTTP 要求は、以下のいずれかの状況コードを含む応答を返します。
- コード 200 は、ヘルス・チェックの結果が肯定的であることを示します。
- コード 503 は、全体的な結果が否定的であることを示します。
- コード 500 は、システムがヘルス・チェック要求を処理できなかったことを示します。 このコードは、プロシージャーにエラーがあることを示している可能性があります。
応答には、ヘルス・チェックの詳細を含む JavaScript Object Notation (JSON) ペイロードも含まれます。 以下のコードは、肯定的な結果の例を示しています。
{
"outcome": "UP",
"checks": [
{
"name": "MyCheck",
"state": "UP",
"data: {
"key": "value",
"key1": "val1",
"key2": "val2"
}
}
]
}
以下のコードは、否定的な結果の例を示しています。
{
"outcome": "DOWN",
"checks": [
{
"name": "check1",
"state": "UP"
},
{
"name": "check2",
"state": "DOWN"
}
]
}
フィーチャーを構成するが、ヘルス・チェックを提供しない場合、システムはコード 200 で応答します。 ペイロードには、
UP
の肯定的結果と、チェックの空セットが含まれます。