2

我们通常在我们的高可用性应用程序中非常频繁地 ping /health,以确定何时需要发生故障转移。如果使用的健康指标不会对外部依赖项(如数据库或 Web 服务)进行昂贵的调用,则 Spring Boot Actuator 可以很好地解决此问题。但是,我们喜欢编写健康指标的简便性以及它如何插入/health端点。

有什么方法可以配置 Spring Boot Actuator,以便在某些情况下只执行指标的子集?如果是这样,怎么做?

谢谢!

4

4 回答 4

0

您可以使用management.health.<service>.enabled属性控制启用哪些运行状况指标。例如,要关闭数据库健康检查:

management.health.db.enabled: false

完整的属性列表可在此处获得。在撰写本文时,它们是:

management.health.db.enabled
management.health.diskspace.enabled
management.health.mongo.enabled
management.health.rabbit.enabled
management.health.redis.enabled
management.health.solr.enabled
于 2015-07-07T14:56:26.690 回答
0

我现在也有类似的情况。我刚刚实现了一个自定义Endpoint,它会进行昂贵的健康检查。

如果您需要 HTTP 端点的舒适性,您还可以实现AbstractEndpointMvcAdapter一个类似于 Spring 的 HTTP 状态代码映射的端点HealthMvcEndpoint

于 2016-03-13T13:04:33.890 回答
0

2021 更新

健康组提供您所询问的确切功能。

https://docs.spring.io/spring-boot/docs/2.5.3/reference/html/actuator.html#actuator.endpoints.health.groups

于 2021-08-12T20:24:18.843 回答
0

如果您使用的是 Spring Boot >= 2.2,则可以使用单独的库spring-boot-async-health-indicator使昂贵的运行状况检查在单独的线程上运行,只需使用@AsyncHealth.

这将确保您的/health端点始终非常快速地返回,并且不会等待那些昂贵的运行状况检查完成。

例子:

@AsyncHealth
@Component
public class MyExpensiveHealthCheck implements HealthIndicator {

    @Override
    public Health health() {
        verySlowCheck(); // This method does not run when /health is called
        return Health.up().build();
    }

}

免责声明:我为此目的创建了这个库

于 2021-12-18T16:39:51.423 回答