我正在尝试将Spring Boot Actutor与公司现有的基础设施集成起来。要做到这一点,我需要能够自定义状态消息。例如,如果应用程序正常运行,我需要从健康执行器endpoint返回一个200和一个“happy”的纯文本正文。
这样的自定义目前是可能的吗?由于Status类是final,所以我不能扩展它,但我认为这会起作用。
Spring Boot使用healthaggregator
将各个健康指标中的所有状态聚合为整个应用程序的单个健康状态。您可以插入一个自定义聚合器,该聚合器委托启动的默认聚合器OrderedHealthAggregator
,然后将UP
映射到Happy
:
@Bean
public HealthAggregator healthAggregator() {
return new HappyHealthAggregator(new OrderedHealthAggregator());
}
static class HappyHealthAggregator implements HealthAggregator {
private final HealthAggregator delegate;
HappyHealthAggregator(HealthAggregator delegate) {
this.delegate = delegate;
}
@Override
public Health aggregate(Map<String, Health> healths) {
Health result = this.delegate.aggregate(healths);
if (result.getStatus() == Status.UP) {
return new Health.Builder(new Status("HAPPY"), result.getDetails())
.build();
}
return result;
}
}
如果您想完全控制响应的格式,那么您需要编写自己的MVCendpoint实现。您可以使用Spring Boot中现有的HealthMVCENdpoint
类作为超级类,并覆盖其Invoke
方法。
当我从Spring Boot应用程序访问/healthendpoint时,它返回的状态为UP: 但我想像这样定制我的状态: 如何自定义状态?
我有一个使用Jedis配置redis集群的Spring Boot项目。配置文件如下: application.yml文件: redisclusterconfig.java文件: 有没有什么东西我可能会错过使/健康状态恢复到“上升”状态?谢谢! 更多信息:我跟踪了启动,发现RedisHealthIndicator通过了一个错误的工厂,Host=localhost和port=6379,这应该是配置的集
我已经为Spring Boot执行器创建了示例项目,并进行了数据库测试。运行应用程序后,当我点击URL null {“status”:“down”,“diskspace”:{“status”:“up”,“total”:493767094272,“free”:404929720320,“threshold”:10485760},“mongo”:{“status”:“down”,“error”:“or
但我想要一些我可以调用从AWS弹性负载均衡器/自动缩放组。默认情况下,如果一个实例未通过健康检查,ELB/ASG将终止它并用一个新的实例替换它。问题是一些健康检查,如DataSourceHealthIndicator,会在数据库关闭时向下报告,但我的应用程序实例在其他方面是完全健康的。如果我使用默认行为,AWS将抛出完全正常的实例,直到数据库重新启动,这将导致我的账单增加。 我可以去掉DataSo
我注意到Spring Boot执行器只有在应用程序使用Spring MVC(DispatcherServlet)处理endpoint时才起作用。默认情况下,如果您在项目中添加了spring-boot-starter-web模块,则包含此servlet。 一旦这个servlet存在,类EndpointWebMvcAutoConfiguration将定制Spring MVC,以支持endpoint和其
如何修复此异常?