我正在使用SpringBoot Actuator来恢复应用程序的运行状况。
public class HealthMonitor implements HealthIndicator {
@Override
public Health health() {
int errorCode = check();
if (errorCode != 0) {
return Health.down().withDetail("Error Code", errorCode).build();
}
return Health.up().build();
}
public int check() {
return 0;
}
}
我看到以下回复
{
"status": "UP",
"diskSpace": {
"status": "UP",
"free": 55020113920,
"threshold": 10485760
},
"db": {
"status": "UP",
"database": "Oracle",
"hello": "Hello"
}
}
我想返回类似下面的回复
{status: "Healthy"}
有办法吗?
答案 0 :(得分:0)
我认为你不能说服提供的Spring Boot健康端点以一种截然不同的格式显示。
大多数Spring源代码都非常清晰,这也不例外。查看org.springframework.boot.actuate.endpoint.HealthEndpoint
的来源,您会看到它有一个返回invoke()
的{{1}}方法。你看到的JSON是杰克逊对该物体的编组。
然而,您可以创建自己的端点,以与Health
完全相同的方式扩展AbstractEndpoint
,返回您喜欢的任何类别。
您甚至可以将其委托给HealthEndpoint
bean:
HealthEndpoint
答案 1 :(得分:0)
要自定义您的状态消息,有一种名为:withDetail()
的方法。因此,当您编写 return Health.up().build();
时,只需将其替换为
return Health.up().withDetail("My Application Status","Healthy")
所以这会给
{My Application Status: "Healthy"}
答案 2 :(得分:-2)
Spring Boot及其健康指标有很多灵活性。
首先,根据您服务的复杂程度,您可能不需要上面描述的HealthIndicator。开箱即用,Spring Boot将根据您的弹簧配置返回状态。这包括数据库(SQL和一些noSQL),Mail,JMS等。这在section 47.6.1
中的最新Spring Boot文档中有所描述使用或不使用HealthIndicator类返回所需内容的最简单方法是在application.properties中设置属性:
endpoints.health.sensitive =真
这可能只适用于Spring Boot的更高版本(1.4?之后)。