动态添加和删除 Spring Boot 健康检查
Posted
技术标签:
【中文标题】动态添加和删除 Spring Boot 健康检查【英文标题】:Add and remove Spring Boot health checks dynamically 【发布时间】:2019-04-29 15:42:05 【问题描述】:我正在开发一个基于 Spring Boot 的应用程序,其中特定于域的任务通过 API 动态添加和删除。由于这些作业可能会单独失败,我想在它们运行时为每个作业添加HealthIndicator
s,然后将它们删除。 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 Actuator:健康检查审计统计和监控