【问题标题】:customise spring boot actuator health status自定义 spring boot 执行器健康状态
【发布时间】:2017-02-17 12:43:27
【问题描述】:

当我从 Spring Boot 应用程序访问 /health 端点时,它返回的状态为 UP:

{
  "status": "UP"
}

但我想像这样自定义我的状态:

{
  "status": "success"
}

如何自定义状态?

【问题讨论】:

    标签: java spring spring-boot


    【解决方案1】:

    创建一个新的健康生成器状态并返回它。

    Status

    @JsonProperty("status")
    public String getCode() {
        return this.code;
    }
    

    如果实施 HealthIndicator

    @Component
    public class HealthChecker implements HealthIndicator {
    
        @Override
        public Health health() {
            // Do checks ..
            // if no issues
            return Health.status("success").build();
        }   
    }
    

    如果扩展 AbstractHealthIndicator

    @Component
    public class HealthIndicator extends AbstractHealthIndicator {
    
        @Override
        protected void doHealthCheck(Builder builder) throws Exception {
            builder.status("success").build();
        }
    }
    

    严重性顺序

    要完成这项工作,您必须通过将UP 替换为success 或将其移至UP 之前来更新状态严重性顺序

    application.properties

    management.health.status.order=DOWN, OUT_OF_SERVICE, UNKNOWN, success
    

    management.health.status.order=DOWN, OUT_OF_SERVICE, UNKNOWN, success, UP
    

    【讨论】:

    • 谢谢你的回答,我得到了输出
    • @SupriyaCS,很高兴你把它整理好了。不要忘记接受答案。
    • 嗨@Sully,我正在寻找一种模拟健康状态以进行测试的方法,我有一个使用执行器 ping 端点的自定义 HealthIndicator 服务(如果它是 UP 服务返回“OK” ,如果它关闭服务返回“Not_Ok”)有没有办法模拟执行器 pingHealthIndicator 响应?即使它是 UP ,我也可以强制它关闭。
    • @BSL,你可以只用not_ok,ok覆盖management.health.status.order
    • 您好@Sully,非常感谢您的回复,在我的情况下,我没有创建新状态,我使用自定义的详细消息考虑相同的状态(UP,DOWN)。在实现 HealthIndicator Interface 的服务中,我正在检索 HealthIndicator bean (@Autowire HealthContributors[] healthContributor;) 并基于每个 bean 的状态,我正在构建一个特定的通知逻辑。在 UnitTest 中,我必须模拟执行器端点(健康 bean)来测试我的服务逻辑。请查看这篇文章:stackoverflow.com/questions/70879699/…
    猜你喜欢
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 2023-03-10
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多