Micrometer+Spring Boot集成Prometheus时Counter类型指标不显示
解决Micrometer Counter指标(带_total后缀)未在Prometheus显示的问题
核心原因排查与解决
- 避免重复添加_total后缀
Micrometer针对Prometheus的指标命名规则中,会自动为Counter类型指标添加_total后缀。如果你的counterName已经手动包含了_total,最终生成的指标名会变成xxx_total_total,导致你在Prometheus中查询原名称时无法找到。
修正代码示例:
将手动带_total的counterName改为基础名称,让Micrometer自动处理后缀:
// 原代码可能的counterName如"order_create_total",改为"order_create" Counter.builder("order_create") .description("Total Number of order creation operations") .tags(tags) .register(meterRegistry) .increment();
修正后,访问应用的/actuator/prometheus端点,会看到生成的指标名为order_create_total,此时在Prometheus控制台查询该名称即可正常显示。
检查Prometheus抓取过滤规则
查看Prometheus配置文件(prometheus.yml)中的relabel_configs或metric_relabel_configs,确认是否存在过滤_total后缀指标的规则。如果有,移除对应的过滤条件,确保Counter指标能被正常抓取。验证指标是否已生成
先直接访问应用的/actuator/prometheus端点,搜索目标Counter指标的名称(注意Micrometer自动生成的后缀)。如果端点中没有该指标,说明是Micrometer注册环节的问题;如果端点存在但Prometheus中没有,再排查Prometheus的抓取配置与网络连通性。检查自定义命名规则
如果项目中自定义了NamingConvention,确认是否覆盖了Micrometer默认的Prometheus命名规则(默认会给Counter加_total)。若使用了NamingConvention.identity()等不自动添加后缀的规则,需要调整规则或手动确保指标名符合Prometheus规范。
内容的提问来源于stack exchange,提问作者user3917953
相关产品推荐
相关产品推荐

