[英]How to implement custom endpoint in Spring Boot actuator to health
[英]Spring Boot Actuator - Custom Health Endpoint
我正在使用 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"}
有没有办法做到这一点?
要自定义您的状态消息,有一种名为: withDetail()
。 所以当你写的时候return Health.up().build();
只需将其替换为
return Health.up().withDetail("My Application Status","Healthy")
所以这会给
{My Application Status: "Healthy"}
我认为您无法说服提供的 Spring Boot 运行状况端点以截然不同的格式显示。
大多数Spring源代码都非常清楚,这次也不例外。 查看org.springframework.boot.actuate.endpoint.HealthEndpoint
的源代码,您会看到它有一个返回Health
的invoke()
方法。 您看到的 JSON 是 Jackson 对该对象的编组。
但是,您可以创建自己的端点,以与HealthEndpoint
完全相同的方式扩展AbstractEndpoint
,返回您喜欢的任何类。
您甚至可以将其委托给HealthEndpoint
bean:
public MyHealthEndpoint(HealthEndpoint delegate) {
this.delegate = delegate;
}
@Override
public MyHealth invoke() {
Health health = delegate.invoke();
return new MyHealth(health.getStatus());
}
Spring Boot 及其健康指标具有很大的灵活性。
首先,根据您的服务的复杂程度,您可能不需要上面描述的 HealthIndicator。 开箱即用,Spring Boot 将根据您的弹簧配置返回状态。 这包括数据库(SQL 和一些 noSQL)、Mail、JMS 等。 这在最新的 Spring Boot 文档的第 47.6.1 节中有所描述
无论是否使用 HealthIndicator 类,返回您想要的内容的最简单方法是在 application.properties 中设置一个属性:
endpoints.health.sensitive=true
这可能仅适用于 Spring Boot 的更高版本(1.4 之后?)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.