在spring boot healtcheck状态发生变化时收到通知

时间:2018-05-31 13:29:27

标签: java spring-boot prometheus spring-boot-actuator

当注册的健康检查指标的状态发生变化时,是否有办法获得通知?例如,当数据库的运行状况检查指示器出现故障时,我想采取一些措施。

实际上,我的最终目标是将健康检查状态输出到普罗米修斯'指标。因此,当状态发生变化时,我想更新运行状况指标。

1 个答案:

答案 0 :(得分:2)

我认为您的问题涉及千分尺issue 416和Micrometer-Docs issue 39

根据文档,您可以注册自定义HealthMetricsConfiguration。量表的值由ComposeHealthIndicator返回的状态确定,并且实际上会根据单个HealthIndicator的状态而变化。

我正在使用前面提到的HealthMetricsConfiguration(只是在问题416中讨论了不同的状态值映射)。

未提前实施自定义交替健康指标:

@Component
public class AlternatingHealthIndicator extends AbstractHealthIndicator {

    @Override
    protected void doHealthCheck(Builder builder) throws Exception {
        int minute = LocalDateTime.now().getMinute();
        boolean minuteIsEven = minute % 2 == 0;
        builder.status(minuteIsEven ? Status.UP : Status.DOWN);
        builder.withDetail("description", "UP when current minute is even; DOWN when current minute is odd");
        builder.withDetail("currentMinute", minute);
        builder.withDetail("minuteIsEven", minuteIsEven);
    }

}

在Prometheus端点上导出的health指标从1=UP-2=DOWN微不足道。这是一个可视化:

alternating health status visualized in Grafana, queried from Prometheus

关于警报,您可以使用Grafana警报或查看Prometheus的Alertmanager。