You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Actuator CompositeHealthIndicator:如何自动集成所有指标到/health

解决Spring Actuator健康端点只显示自定义指标的问题

嘿,我之前也踩过这个坑!这种情况基本都是配置或者自动配置层面的问题,导致默认健康指标被悄悄禁用了,咱们一步步排查解决:

  • 检查默认指标开关配置
    最常见的原因是你在配置文件里不小心设置了management.health.defaults.enabled=false,这个配置会直接关掉所有Spring Boot自带的健康指标(比如磁盘空间、数据库连接、Redis状态这些),只保留你自定义的。
    你只需要把这个配置改成true,或者直接删掉它(默认值就是true)就行。举个YAML配置的例子:

    management:
      health:
        defaults:
          enabled: true
        show-details: always  # 建议打开这个,方便查看所有指标的详细状态
    
  • 确认自定义HealthIndicator的实现正确性
    确保你的自定义类是正确实现了HealthIndicator接口(或者继承AbstractHealthIndicator),并且被Spring上下文扫描到(比如加了@Component或者通过@Bean注册)。正确的实现示例:

    @Component
    public class CustomHealthIndicator implements HealthIndicator {
        @Override
        public Health health() {
            // 这里写你的自定义健康检查逻辑
            boolean serviceIsUp = checkCustomServiceStatus();
            if (serviceIsUp) {
                return Health.up()
                        .withDetail("custom-service", "运行正常")
                        .withDetail("check-time", System.currentTimeMillis())
                        .build();
            } else {
                return Health.down()
                        .withDetail("custom-service", "连接失败")
                        .build();
            }
        }
    
        private boolean checkCustomServiceStatus() {
            // 模拟检查逻辑,实际替换成你的业务检查
            return true;
        }
    }
    

    只要你的Bean是合法的HealthIndicator类型,Spring的健康聚合器会自动把所有同类Bean都整合到/actuator/health端点里。

  • 排查自动配置是否被排除
    检查你的启动类有没有用@SpringBootApplication(exclude = ...)排除了默认健康指标的自动配置类,比如DataSourceHealthIndicatorAutoConfiguration、DiskSpaceHealthIndicatorAutoConfiguration这类。如果有,去掉对应的排除配置,让Spring自动加载这些默认指标。

  • 确认Actuator依赖是否完整
    确保你的项目里正确引入了spring-boot-starter-actuator依赖,没有这个依赖的话,默认的健康指标逻辑根本不会生效。Maven依赖示例:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    

如果以上步骤都排查过还是有问题,可以看看启动日志,搜索关键词HealthIndicator,看看默认的那些指标类(比如DiskSpaceHealthIndicator)有没有被Spring加载。如果日志里完全没出现这些类,那大概率是自动配置被拦截了,需要进一步检查配置类或者依赖。

内容的提问来源于stack exchange,提问作者Christian Bongiorno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:20:58