我正在使用SpringBoot执行器返回应用程序的运行状况。
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"}
有办法做到吗?
Spring Boot及其健康指标具有很大的灵活性。
首先,根据您服务的复杂性,您可能不需要上面描述的HealthIndicator。开箱即用,Spring Boot将根据您的Spring配置返回“状态”。这包括数据库(SQL和一些noSQL)、邮件、JMS和其他。最新的Spring Boot文档第47.6.1节对此进行了描述
返回所需内容的最简单方法是在application.properties中设置一个属性:
endpoints.health.sensitive=true
这可能仅适用于Spring Boot的更高版本(1.4?)。
我认为您无法说服提供的Spring Boot健康终结点以完全不同的格式显示。
大多数Spring源代码都非常清晰,这也不例外。查看org.springframework.boot.actuate.endpoint.HealthEndpoint
的源代码,您会发现它有一个返回Health的
方法。您看到的JSON是Jackson对该对象的编组。
但是,您可以创建自己的endpoint,以与<code>HealthEndpoint,返回您自己喜欢的任何类。
您甚至可以将其委托给HealthEndpoint
bean:
public MyHealthEndpoint(HealthEndpoint delegate) {
this.delegate = delegate;
}
@Override
public MyHealth invoke() {
Health health = delegate.invoke();
return new MyHealth(health.getStatus());
}
要自定义您的状态消息,有一个名为:withDetail()的方法
。因此,当您编写返回Health.up().build();
只需将其替换为
return Health.up().withDetail("My Application Status","Healthy")
所以这会给
{My Application Status: "Healthy"}
因此,我将Spring引导执行器添加到我的应用程序中,并在应用程序中指定。属性管理。endpoint。健康隐藏物生存时间=120秒,以缓存健康检查结果。因此,当我调用执行器/健康时,结果被缓存,效果很好。 当我调用执行器/健康/就绪或自定义创建的组时,问题开始出现。该请求结果不会被缓存。我查阅了Spring文档,只找到了主要健康终点的信息,没有找到特定人群的信息。 所以我的问题是:我错过了什么吗?
我需要改变频率来检查springboot执行器中的DB运行状况。默认DB运行状况检查查询每毫秒执行一次。我想让这个查询每1分钟后执行一次,而不是毫秒。有什么方法可以自定义它吗?
我已经为我的应用程序创建了一个自定义的spring-boot执行器健康endpoint。Spring boot将所有这些自定义健康endpoint聚合到一个大的json中,并在点击application/health URL时返回它。现在,我想在点击application/health URL时,将一些信息传递给我以头的形式实现的自定义healthendpoint。我怎样才能做到这一点呢?
我有一个基于SpringBoot的web应用程序,它公开了一个Consult health indicator bean。 该bean由SpringBoot的autoconfiguration正确创建和初始化,但是,尽管关联的配置属性“Management.health.consul.Enabled”设置为true,但指示器并未显示在执行器健康endpoint中: 经过进一步检查,我发现了负责获取
http://localhost:8080/myapp/apphealth 只需要名称更改,而不需要执行器/运行状况的响应。有可能吗?
如何在SpringBoot中实现自定义endpoint以实现以下目标: 其中“Custom”是我想要实现的扩展健康的endpoint。