动态添加和删除 Spring Boot 健康检查

Posted

技术标签:

【中文标题】动态添加和删除 Spring Boot 健康检查【英文标题】:Add and remove Spring Boot health checks dynamically 【发布时间】:2019-04-29 15:42:05 【问题描述】:

我正在开发一个基于 Spring Boot 的应用程序,其中特定于域的任务通过 API 动态添加和删除。由于这些作业可能会单独失败,我想在它们运行时为每个作业添加HealthIndicators,然后将它们删除。 Spring Actuator 的 health 端点已集成到多个监视器中,这只会将此信息推送到下游。

我当然可以将所有作业的运行状况检查汇总到一个 HealthIndicator bean 中,但我更希望以某种方式列出所有检查的运行状况。但是,HealthIndicator 只允许返回单个 Health 实例。有没有办法返回这些对象的集合?

【问题讨论】:

【参考方案1】:

自 Spring Boot 2.3 起,HealthIndicatorRegistry 已被弃用,取而代之的是 HealthContributorRegistry。

您可以使用registerContributor(String name,C contributor) 注册和unregisterContributor(String name) 删除,这与之前的API 非常相似。

从 2.1.0 开始就可以使用了

【讨论】:

【参考方案2】:

Spring Boot 2.1 为此引入了HealthIndicatorRegistry。每当查询健康端点时,都会要求注册表提供所有已注册健康指标的快照,然后调用这些指标中的每一个来确定应用程序的健康状况。

注册表作为 bean 提供,因此可以注入到管理特定领域任务的类中。然后它可以在添加和删除这些任务时调用register(String, HealthIndicator)unregister(String)

【讨论】:

以上是关于动态添加和删除 Spring Boot 健康检查的主要内容,如果未能解决你的问题,请参考以下文章

Springboot度量指标监控与健康检查和可视化监控应用Spring Boot Admin

Spring Boot指标监控与健康检查

spring boot 应用在 k8s 中的健康检查

Spring Boot Actuator:健康检查审计统计和监控

Spring boot 2.0 Actuator 的健康检查

弹性beantalk上的spring boot应用程序-健康检查失败