带有嵌套指示器的Spring Boot Actuator运行状况组

问题描述

我正在尝试将Actuator的运行状况探测器配置为包括对嵌套在第一级之外的外部服务的检查。例如,调用/ actuator / health时,以下是可用的健康指标:

    {
       "status":"DOWN","components":{
          "jms":{
             "status":"DOWN","components":{
                "broker1":{
                   "status":"DOWN","details":{
                      "error":"javax.jms.JMSException: Failed to create session factory"
                   }
                },"broker2":{
                   "status":"UP","details":{
                      "provider":"ActiveMQ"
                   }
                }
             }
          },"livenessstate":{
             "status":"UP"
          },"readinessstate":{
             "status":"UP"
          }
       },"groups":[
          "liveness","readiness"
       ]
    }

jms 组件下,有两个代理- broker1 broker2 。我可以将Actuator配置为在就绪组中包括 jms

  endpoint:
    health:
      probes:
        enabled: true
      enabled: true
      show-details: always
      group:
        readiness:
          include: readinessstate,jms

但是,这将包括准备情况调查中的所有经纪人。

致电/ actuator / health / readiness时,我得到:

{
   "status":"DOWN","components":{
      "jms":{
         "status":"DOWN","components":{
            "broker1":{
               "status":"DOWN","details":{
                  "error":"javax.jms.JMSException: Failed to create session factory"
               }
            },"broker2":{
               "status":"UP","details":{
                  "provider":"ActiveMQ"
               }
            }
         }
      },"readinessstate":{
         "status":"UP"
      }
   }
}

由于Kubernetes中的准备情况调查仅会阻止将Web请求路由到我的Pod,因此在某些情况下,只要 broker2 关闭,我就可以处理请求起来了。是否可以将Actuator配置为在运行状况组中而不是仅在根目录中包括嵌套的运行状况指示器?我尝试了诸如broker1,jms.broker1,jms / broker1,jms \ broker1之类的组合,但无济于事。

如果不通过配置直接支持它,是否可以创建一个自定义组件,该组件将为我提供所需的行为。例如,我想到了编写自定义CompositeHealthContributor的可能性,但是我不确定是否可以汇总现有的健康指标。我不想复制已经完成的健康检查。

一个相关的用例是,只要一组外部资源之一可用,就认为该服务是正常的。例如,我在两个数据中心有一个相同的代理。只要其中一位经纪人可用,我的服务就可以被认为是健康的。对于这种用例,什么是好的方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)