Spring Boot执行器-多个运行状况端点

时间:2019-04-04 18:44:53

标签: spring-boot amazon-elb spring-boot-actuator

有什么方法可以在Spring Boot应用程序上支持多个运行状况终结点吗?

原因如下:标准执行器运行状况检查非常出色,内置检查非常出色,定制选项非常出色-对于单个用例:报告常规应用程序的运行状况。

但是我想要可以从AWS Elastic Load Balancer / AutoScaling组调用的内容。默认情况下,如果实例未通过运行状况检查,则ELB / ASG将终止该实例,并用新实例替换它。问题是某些运行状况检查(例如DataSourceHealthIndicator)将在数据库关闭时报告DOWN,但我的应用程序实例运行状况良好。如果我使用默认行为,AWS将丢弃运行状况良好的实例,直到备份数据库为止,这将增加我的账单。

我可以摆脱DataSourceHealthIndicator,但我喜欢为了一般的健康检查而使用它。因此,我真正想要的是两个不同的端点,用于两个不同的目的,例如:

/ health-常规应用程序健康 / ec2Health-忽略与EC2实例无关的方面,例如数据库中断。

希望如此。

1 个答案:

答案 0 :(得分:0)

Spring Boot Actuator具有称为Health Groups的功能,可用于配置多个运行状况指示器。

在application.properties中,配置所需的组:

management.endpoints.web.path-mapping.health=probes

management.endpoint.health.group.health.include=*
management.endpoint.health.group.health.show-details=never

management.endpoint.health.group.detail.include=*
management.endpoint.health.group.detail.show-details=always

management.endpoint.health.group.other.include=diskSpace,ping
management.endpoint.health.group.other.show-details=always

输出:

$ curl http://localhost:8080/actuator/probes
{"status":"UP","groups":["detail","health","other"]}

$ curl http://localhost:8080/actuator/probes/health
{"status":"UP"}

$ curl http://localhost:8080/actuator/probes/detail
{"status":"UP","components":{"diskSpace":{"status":"UP","details":{"total":0,"free":0,"threshold":0,"exists":true}},"ping":{"status":"UP"},"rabbit":{"status":"UP","details":{"version":"3.6.16"}}}}

$ curl http://localhost:8080/actuator/probes/other
{"status":"UP","components":{"diskSpace":{"status":"UP","details":{"total":0,"free":0,"threshold":0,"exists":true}},"ping":{"status":"UP"}}}