配置 mpHealth-1.0 功能部件并实现 HealthCheck
应用程序编程接口 (API),以便在微服务中提供运行状况检查。
关于此任务
运行状况检查是微服务提供的
MicroProfile 运行状况 API 实现。使用运行状况检查可评估服务的运行状况。这些检查主要用作已容器化的环境中的机器到机器机制,例如
Kubernetes 中的活动性检查。
mpHealth-1.0 功能部件提供了一个
/health 端点,该端点表示已安装的微服务的二进制状态(
UP 或
DOWN)。微服务可提供零次或零次以上运行状况检查,并且服务器的总体运行状况是来自每次运行状况检查的状态的聚集。仅当所有运行状况检查都报告正结果时,整体结果才为正。
过程
- 配置该功能部件。更新 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 对象表示法 (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 以及一组空检查。