首页 > 解决方案 > 如何实现自定义执行器端点来检查动物园管理员的健康状况?

问题描述

我想实现一个自定义端点类来检查 Zookeeper 的健康状况:

http://localhost:8080/actuator/health/zookeeper

问题:我是扩展 AbstractHealthIndicator 还是实现 HealthIndicator 类?

健康指标类

public class CustomHealth implements HealthIndicator {

 @Override
    public Health health() {
        int errorCode = check(); // perform some specific health check
        if (errorCode != 0) {
            return Health.down()
              .withDetail("Error Code", errorCode).build();
        }
        return Health.up().build();
    }

    public int check() {
        // Our logic to check zookeeper health
        return 0;
    }
}

AbstractHealthIndicator 类

public class CustomHealth extends AbstractHealthIndicator  {

    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception 
    {
        // Our logic to check zookeeper health
    }

}

我对使用哪种方法感到困惑。我相信检查 zookeeper 健康的逻辑是简单地声明一个 CuratorFramework 对象,然后执行 curator.getState() 并从那里返回构建器,对于端点,附加 @RestControllerEndPoint 来声明路径。请帮忙!

标签: apache-zookeeperspring-boot-actuatorhealth-monitoring

解决方案


由您决定选择哪一个,不同之处在于AbstractHealthIndicator

  1. 为您提供 Health.Builder 实例,因此您无需手动创建一个
  2. 使用 try-catch包装doHealthCheck(builder)调用,如果您的运行状况检查因异常而失败,则返回状态 DOWN。

所以一般来说AbstractHealthIndicator使用起来更方便,因为你可以跳过错误处理。HealthIndicator当您需要提供有关异常的自定义状态详细信息时,请选择实施 raw 。

Zookeeper Health Indicator 的示例请参考 spring-cloud-zookeeper 提供的现有指标https://github.com/spring-cloud/spring-cloud-zookeeper/blob/master/spring-cloud-zookeeper-core/src/主/java/org/springframework/cloud/zookeeper/ZookeeperHealthIndicator.java

关于端点/actuator/health/zookeeper,我建议您使用 SpringBoot 2.2.0 中引入的名为Health Indicator Groups的新功能 https://spring.io/blog/2019/10/16/spring-boot-2-2-0#health-indicator -组

简而言之,如果您使用组件扫描并命名为自定义健康指示器MyZookeeperHealthIndicator,则添加以下属性以将其注册到自定义zookeeper组下:

management.endpoint.health.group.zookeeper.include=myZookeeper

之后,自定义健康详细信息将显示在myZookeeper组件下/actuator/health/zookeeper

查看以下文档以获取更多信息:

编写自定义 HealthIndicators https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html#writing-custom-healthindicators

健康组 https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html#health-groups


推荐阅读