有什么方法可以在Spring Boot应用程序上支持多个运行状况终结点吗?
原因如下:标准执行器运行状况检查非常出色,内置检查非常出色,定制选项非常出色-对于单个用例:报告常规应用程序的运行状况。
但是我想要可以从AWS Elastic Load Balancer / AutoScaling组调用的内容。默认情况下,如果实例未通过运行状况检查,则ELB / ASG将终止该实例,并用新实例替换它。问题是某些运行状况检查(例如DataSourceHealthIndicator)将在数据库关闭时报告DOWN,但我的应用程序实例运行状况良好。如果我使用默认行为,AWS将丢弃运行状况良好的实例,直到备份数据库为止,这将增加我的账单。
我可以摆脱DataSourceHealthIndicator,但我喜欢为了一般的健康检查而使用它。因此,我真正想要的是两个不同的端点,用于两个不同的目的,例如:
/ health-常规应用程序健康 / ec2Health-忽略与EC2实例无关的方面,例如数据库中断。
希望如此。
答案 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"}}}