自定义 Spring Boot Actuator 健康检查的整体健康状况

问题描述 投票:0回答:1

我正在为我的 spring 应用程序设置健康检查,作为它的一部分,我创建了一个自定义健康指标来检查下游调用自己的健康检查。如果停机,则下游呼叫标记为

DOWN
。现在,健康检查如下所示

{
    "status" : "DOWN",
    "downstreamCall" : {
        "status" : "DOWN",
        "Error Code" : 1
     },
     .
     .
     .
     "diskSpace" : {
         "status" : "UP",
         "free" : 209047318528,
         "threshold" : 10485760
     }
}

所以

downstreamCall
被标记为关闭,当它关闭时,这是应该的。但是,当
downstreamCall
被标记为down时,我希望整体状态被标记为
DEGRADED
,如下图。

{
    "status" : "DEGRADED",
    "downstreamCall" : {
        "status" : "DOWN",
        "Error Code" : 1
     },
     .
     .
     .
     "diskSpace" : {
         "status" : "UP",
         "free" : 209047318528,
         "threshold" : 10485760
     }
}

这是专门针对downstreamCall的。

DOWN
的健康检查的任何其他部分仍应导致整体状态为
DOWN
。我一直在查看 Spring 文档以及此处的问题,但还没有找到实现此目的的方法。

spring spring-boot spring-boot-actuator health-monitoring
1个回答
0
投票

不清楚它是什么时候添加的,但是因为至少支持 SpringBoot 2(及更高版本)自定义类型...

另见:https://docs.spring.io/spring-boot/docs/2.2.x/reference/html/production-ready-features.html

将以下内容添加到您的

application.yml

management.endpoint.health.status:
  order: fatal,down,out-of-service,jones,unknown,up
  http-mapping:
    up: 200
    jones: 410
    down: 200
    fatal: 500
    out-of-service: 503

然后,在自定义健康组件中,您可以执行以下操作:

Health.Builder jonser = Health.status("jones");
// Add more detail here if you'ld like.
return jonser.build();

注意,在我的测试中,如果您跳过

order
部分,状态将显示为
UNKNOWN

© www.soinside.com 2019 - 2024. All rights reserved.