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
相关产品推荐
相关产品推荐

