java - 如何在 Spring Boot 中聚合健康指标

标签 java spring spring-boot health-monitoring

我使用这个 Baeldung article 为我的 Spring 2.0.4 应用程序添加了 Actuator 支持.在第 4.4 节中,它谈到了

A handy feature of health indicators is that we can aggregate them as part of a hierarchy

但它没有讨论如何进行这种聚合。我也找不到任何关于如何执行此操作的文档。

问题 你们中有人知道有关创建此类聚合的教程、示例或其他文档吗?

更多信息 我的应用程序中有一项服务依赖于几个子组件。仅当所有这些子组件都已关闭时,服务本身才被视为已关闭。只要一个启动,那么服务就启动了。当前使用正常的 HealthIndicator 机制,如果其中一个子组件已关闭,它会将服务器标记为已关闭。

我似乎想使用 CompositeHealthIndicator,但不清楚我如何在系统不接收子 HealthIndicators 的情况下创建它们。 警告 是这些子组件中的每一个都使用 @Scheduled 注释,我的理解是为了使其正常工作,类必须使用 @Component 注释(或其他注释)将导致它被创建并吸收到应用程序运行状况中。

澄清 我添加了执行器,健康 URL 如下所示:

{"status":"UP","details":{"MyServ1":{"status":"UP","details":{"Latency":...}},"MyServ2":{"status":"UP","details":{"Latency":...}},"diskSpace":{"status":"UP","details":{"total":...,"free":...,"threshold":...}}}}

但如果“MyServ1”或“MySrv2”出现故障,则整体状态下降,但我只希望在“diskSpace”出现故障时发生这种情况“MyServ1” 'MyServ2' 已关闭。

CompositeHealthIndicator 似乎是适合这个的类,只是不清楚我是如何为它创建 child 健康指标的(只需使用 new)?

提前致谢

最佳答案

通过实现 org.springframework.boot.actuate.health.HealthAggregator 将每个健康指标的状态聚合为一个整体状态。 . Spring Boot 自动配置 OrderedHealthAggregator 的一个实例.如果您提供自己的 bean 来实现 HealthAggregator自动配置的聚合器将退出以支持您的自定义实现。

聚合器的 aggregate使用 Map<String, Status> 调用方法其中键是健康指标的名称,值是它们的状态。了解子组件的健康指标的名称应该允许您为它们执行自定义聚合。

关于java - 如何在 Spring Boot 中聚合健康指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51861320/

相关文章:

java - Leiningen:只编译修改过的 java 源文件

java - 尝试检索对象字符串时出现 JSON 异常

java - GenericDao,类 <T> 为 null

java.io.FileNotFoundException : (Read-only file system) Mac

java - Android 应用程序在请求 HttpResponse<JsonNode> 时崩溃

spring - 如何解决-需要Executor处理java.util.concurrent.Callable返回值

java - 以编程方式解决 Bean 注入(inject)

java - 将 h2 数据库实现到现有的 spring-boot 应用程序

java - 带有 JPA 存储库的 Spring Boot 静态 where 子句

java - 如何使 Eclipse 在未捕获声明的异常时报告错误?