升级spring-boot-starter-actuator至2.7.0后部分Tomcat指标消失如何恢复
解决Spring Boot Actuator 2.7.0中Tomcat指标缺失的问题
Spring Boot 2.7.x版本对Tomcat指标的采集逻辑做了调整,默认不再自动启用tomcat.cache.access、tomcat.cache.hit、tomcat.global.error这类旧指标,可通过以下步骤恢复:
步骤1:确认依赖正确性
确保pom.xml(或build.gradle)中已引入版本匹配的spring-boot-starter-actuator及Micrometer相关依赖(若需导出到Prometheus等监控系统,需额外引入对应registry依赖):
<!-- Maven示例 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> <version>2.7.0</version> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>1.9.0</version> <!-- 与Spring Boot 2.7.0兼容的版本 --> </dependency>
步骤2:开启Tomcat指标全局采集
在配置文件(application.yml或application.properties)中启用Tomcat指标开关:
# application.yml management: metrics: enable: tomcat: true # 全局开启Tomcat指标采集
步骤3:手动注册缺失的Tomcat MBean指标
若上述配置后仍有指标缺失,说明默认绑定未覆盖这些项,需自定义Bean手动注册所有Tomcat MBean指标:
import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.binder.tomcat.TomcatMetrics; import org.apache.catalina.Server; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class TomcatMetricsConfiguration { @Autowired(required = false) private Server tomcatServer; @Bean public MeterRegistryCustomizer<MeterRegistry> tomcatMetricsCustomizer() { return registry -> { if (tomcatServer != null) { // 绑定Tomcat全量MBean指标,包含cache、全局错误等缺失项 new TomcatMetrics(tomcatServer, "tomcat").bindTo(registry); } }; } }
验证
重启应用后,访问/actuator/metrics端点,即可看到tomcat.cache.access、tomcat.cache.hit、tomcat.global.error等指标重新出现。
内容的提问来源于stack exchange,提问作者Rodriguez
相关产品推荐
相关产品推荐

