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

Spring Boot 2.7.5 Actuator健康端点description字段来源与配置疑问

Spring Boot 2.7.5 Actuator /health 空description字段处理方案

空description字段的来源

在Spring Boot 2.7.x版本的Actuator健康端点逻辑中,当内置或自定义健康指示器未配置描述信息时,框架会默认返回空值的description字段,这是健康信息序列化的默认行为,常见于未自定义配置的内置指示器(如DiskSpaceHealthIndicator)。

解决方法

1. 隐藏空description字段

通过配置文件直接控制描述信息的展示逻辑:

  • 在application.properties中添加:
# 仅当用户授权时才展示描述,未授权则隐藏
management.endpoint.health.show-description=when-authorized
# 或者完全关闭描述展示
management.endpoint.health.show-description=never
  • 若需更精细化控制,可自定义HealthEndpointCustomizer过滤空描述:
@Component
public class EmptyDescriptionFilter implements HealthEndpointCustomizer {
    @Override
    public void customize(HealthEndpoint endpoint) {
        endpoint.getContributors().forEach((name, contributor) -> {
            if (contributor instanceof HealthIndicator indicator) {
                Health originalHealth = indicator.health();
                if (originalHealth.getDescription() == null || originalHealth.getDescription().isBlank()) {
                    // 构建不含空描述的健康对象
                    Health.Builder builder = Health.status(originalHealth.getStatus());
                    originalHealth.getDetails().forEach(builder::withDetail);
                    // 替换原指示器的返回结果
                    endpoint.addHealthIndicator(name, builder::build);
                }
            }
        });
    }
}

2. 自定义填充描述

针对特定健康指示器添加描述信息:

  • 以磁盘空间检查为例,替换默认指示器:
@Configuration
public class HealthIndicatorConfig {
    @Bean
    public HealthIndicator diskSpaceHealthIndicator(DiskSpaceHealthIndicatorProperties properties) {
        DiskSpaceHealthIndicator indicator = new DiskSpaceHealthIndicator(properties);
        return () -> indicator.health().withDescription("系统磁盘空间状态检查");
    }
}
  • 全局统一为所有无描述的指示器添加默认描述:
@Component
public class DefaultDescriptionSetter implements HealthEndpointCustomizer {
    @Override
    public void customize(HealthEndpoint endpoint) {
        endpoint.getContributors().forEach((name, contributor) -> {
            if (contributor instanceof HealthIndicator indicator) {
                Health originalHealth = indicator.health();
                if (originalHealth.getDescription() == null || originalHealth.getDescription().isBlank()) {
                    endpoint.addHealthIndicator(name, () -> originalHealth.withDescription("[" + name + "] 默认健康检查"));
                }
            }
        });
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:07:05