使用Micrometer Prometheus Registry时404请求URI被聚合为/**的问题
问题分析与配置修复
你遇到的核心问题是404请求的指标里uri显示/**且exception为None,这是因为Spring Boot默认不会捕获NoHandlerFoundException,也不会将未匹配到处理器的请求路径正确记录到指标中,需要调整以下配置:
1. 开启未找到处理器的异常抛出
在application.yml或application.properties中添加配置,让DispatcherServlet在找不到请求对应的处理器时抛出异常:
spring: mvc: throw-exception-if-no-handler-found: true
或properties格式:
spring.mvc.throw-exception-if-no-handler-found=true
2. 关闭静态资源默认映射(可选)
如果你的服务不需要处理静态资源,需关闭默认静态资源映射,避免静态资源请求被默认处理器拦截,确保真正的404请求能触发异常:
spring: web: resources: add-mappings: false
或properties格式:
spring.web.resources.add-mappings=false
3. 效果验证
开启上述配置后,NoHandlerFoundException会被正常抛出,此时Micrometer会将exception标签设置为NoHandlerFoundException,同时uri会记录为实际请求的路径,而非通配符/**。调整后的404指标会类似:
http_server_requests_seconds_count{exception="NoHandlerFoundException",method="GET",outcome="CLIENT_ERROR",status="404",uri="/your-actual-request-path",} 1.0
内容的提问来源于stack exchange,提问作者Ahsan Naseem
相关产品推荐
相关产品推荐

