apache-zookeeper - 如何实现自定义执行器端点来检查动物园管理员的健康状况?
问题描述
我想实现一个自定义端点类来检查 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 来声明路径。请帮忙!
解决方案
由您决定选择哪一个,不同之处在于AbstractHealthIndicator
:
- 为您提供 Health.Builder 实例,因此您无需手动创建一个
- 使用 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
推荐阅读
- xorg - 如何在 Xorg 中自动将分辨率调整到较小的显示器?
- javascript - 酶单元测试中的打字稿错误说路径名在类型 LocationDescriptor 上不存在
- amazon-web-services - 在 AWS 中导出内联用户组策略
- javascript - React 组件中的意外令牌,预期的“)”(if 语句)
- javascript - 响应动画图像网格库
- grok - 创建 Grok 模式
- c# - 填充
将元素名称导出到 Excel 的列表或数组 - prisma - Prisma 2:prisma 2 db pull 重写模式文件中的手动关系
- python - 使用运算符链接从 pandas 数据框中删除特定字符串
- php - 字符零“0”的PHP验证