如何实施自定义执行器端点来检查动物园管理员的健康状况?

时间:2019-09-23 18:58:51

标签: apache-zookeeper spring-boot-actuator health-monitoring

我想实现一个自定义的终结点类来检查Zookeeper的运行状况:

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

问题:我应该扩展AbstractHealthIndicaitor还是实现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来声明路径。请帮忙!

1 个答案:

答案 0 :(得分:1)

由您决定选择哪一个,区别在于AbstractHealthIndicator

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

因此,AbstractHealthIndicator通常更方便使用,因为您可以跳过错误处理。需要提供有关异常的自定义状态详细信息时,选择实施原始HealthIndicator

例如Zookeeper健康指标,请参考spring-cloud-zookeeper https://github.com/spring-cloud/spring-cloud-zookeeper/blob/master/spring-cloud-zookeeper-core/src/main/java/org/springframework/cloud/zookeeper/ZookeeperHealthIndicator.java

随附的现有指标。

关于端点/actuator/health/zookeeper,我建议您使用SpringBoot 2.2.0中引入的称为健康指标组 https://spring.io/blog/2019/10/16/spring-boot-2-2-0#health-indicator-groups

的新功能。

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

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

之后,自定义健康状况详细信息将显示在myZookeeper的{​​{1}}组件下

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

编写自定义健康指标 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