マイクロサービス内でヘルス・チェックを提供するには、mpHealth-1.0
フィーチャーを構成し、HealthCheck アプリケーション・プログラミング・インターフェース (API) を実装します。
mpHealth-2.1
以降のバージョンのフィーチャーに関する資料は、Open Liberty Web サイトにあります。
このタスクについて
ヘルス・チェック は、マイクロサービスによって提供される MicroProfile Health API 実装です。ヘルス・チェックはサービスの正常性を評価するために使用します。これらのチェックは主に、Kubernetes の liveness チェックなどのように、コンテナー化された環境でのマシンツーマシンのメカニズムとして意図されています。mpHealth-1.0
フィーチャーは、インストールされたマイクロサービスの 2 項状況 (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
の肯定的結果と、チェックの空セットが含まれます。