我使用这个 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/