Spring Boot应用Actuator缺失http.server.requests与http.client.requests指标问题求助
你好呀!我看了你的问题描述,确实遇到了Spring Boot Actuator里HTTP请求相关指标(比如http.server.requests、http.client.requests)缺失的情况,别着急,咱们一步步来排查解决:
首先先确认你的问题场景:
我的Spring Boot应用里看不到任何HTTP相关的metrics,只能看到以下这些指标:
{ "names": [ "application.ready.time", "application.started.time", "disk.free", "disk.total", "executor.active", "executor.completed", "executor.pool.core", "executor.pool.max", "executor.pool.size", "executor.queue.remaining", "executor.queued", "jvm.buffer.count", "jvm.buffer.memory.used", "jvm.buffer.total.capacity", "jvm.classes.loaded", "jvm.classes.unloaded", "jvm.gc.live.data.size", "jvm.gc.max.data.size", "jvm.gc.memory.allocated", "jvm.gc.memory.promoted", "jvm.gc.overhead", "jvm.gc.pause", "jvm.memory.committed", "jvm.memory.max", "jvm.memory.usage.after.gc", "jvm.memory.used", "jvm.threads.daemon", "jvm.threads.live", "jvm.threads.peak", "jvm.threads.states", "logback.events", "process.cpu.usage", "process.files.max", "process.files.open", "process.start.time", "process.uptime", "resilience4j.retry.calls", "system.cpu.count", "system.cpu.usage", "system.load.average.1m", "tomcat.sessions.active.current", "tomcat.sessions.active.max", "tomcat.sessions.alive.max", "tomcat.sessions.created", "tomcat.sessions.expired", "tomcat.sessions.rejected" ] }
接下来是具体的排查方向:
确认依赖是否齐全
确保你的项目pom.xml(或build.gradle)里已经引入了spring-boot-starter-actuator和spring-boot-starter-web(如果是Web应用的话),这两个依赖是HTTP指标采集的基础。如果是Spring Boot 3.x版本,不用担心Micrometer的版本问题,starter会自动适配好。检查Metrics相关配置
打开你的application.properties或application.yml,做这两项检查:- 确认
management.endpoints.web.exposure.include配置里包含了metrics,比如可以设置成management.endpoints.web.exposure.include=health,metrics,这样才能正常访问metrics端点。 - 查看是否存在
management.metrics.web.server.auto-time-requests=false的配置,这个参数默认是true,如果被手动改成false,就会关闭HTTP请求的自动指标采集,把它改回true或者直接删掉该配置即可。
- 确认
验证是否有实际请求触发指标
要注意,http.server.requests这类HTTP指标是懒加载的——只有当你的应用收到实际的HTTP请求后,才会生成并显示这个指标。你可以试着调用一下应用里的任意接口,之后再重新访问http://localhost:8081/actuator/metrics,看看指标是否出现了。排查自定义配置是否拦截了Metrics采集
如果你项目里有自定义的WebMvcConfigurer、Filter或者其他Web相关配置,检查一下是否无意中排除了Micrometer的MetricsFilter,这个过滤器是负责采集HTTP请求指标的核心组件。另外,从你的指标列表里看到了Resilience4j的相关指标,也可以确认下Resilience4j的配置是否影响了Actuator的Metrics自动配置。检查Spring Boot版本兼容性
不同版本的Spring Boot对Actuator和Micrometer的集成有细微差异,比如较老的2.0.x之前的版本,可能需要额外配置才能开启HTTP指标采集。建议确认你的Spring Boot版本是否在官方支持的范围内,必要时可以尝试升级到稳定版本。
备注:内容来源于stack exchange,提问作者Shridutt Kothari

