如何使用SpringBoot2、InfluxDB与Grafana理解并应用Micrometer指标
指标单位相关说明
Spring Boot 指标导出底层默认基于 Micrometer 实现,官方内置的核心指标都有明确的单位定义:
- 时间类指标(如请求耗时、GC 暂停时长)默认单位为秒,如果你的配置中没有手动修改导出单位,就可以按秒计算
- 计数类指标(如请求次数、GC 次数)无单位,为纯计数数值
- 内存类指标默认单位为字节
如果是自定义业务指标,单位由你注册指标时指定的参数决定。如果拿不准单位,可以查看同指标在 Prometheus 导出格式下的 HELP 注释,里面会明确标注单位定义。
histogram 类型指标字段含义与绘图方式
metric_type = histogram 是分布统计类指标,各字段含义统一如下:
count:统计窗口内对应事件的总发生次数sum:统计窗口内所有事件的数值总和mean:统计窗口内事件的平均值,等价于sum / countupper:统计窗口内事件的最大值
你说的没错,这类指标确实可以生成两类常用图表:
计数类图表
用 count 字段计算即可:
- 接口请求场景:用
non_negative_derivative("count", 1s)计算每秒请求数(QPS),也可以按 uri、status 等标签分组统计不同接口、不同状态码的请求量 - GC 场景:按
action标签分组,统计年轻代、老年代 GC 的累计次数或者每秒发生次数
时长类图表
用 sum、mean、upper 字段计算即可:
- 接口请求场景:可以直接展示
mean得到平均请求耗时,展示upper得到最大请求耗时,也可以统计指定周期内的总请求处理时长 - GC 场景:可以展示
mean得到单次 GC 平均暂停时长,展示upper得到单次 GC 最大暂停时长,也可以统计指定周期内的 GC 总暂停时长
结合你的示例补充说明
你给出的 HTTP 请求指标示例里,count=1 表示该统计窗口内只有 1 次 /actuator/health 接口的 GET 请求,sum=0.892144 表示这次请求总耗时 0.89 秒左右,因为只有 1 次请求,所以均值和最大值相等。
你给出的 GC 指标示例里,count=1 表示该统计窗口内发生了 1 次年轻代 GC,sum=2 表示这次 GC 总暂停时长为 2 秒(如果数值明显不符合你的实际业务情况,可以检查 Micrometer 配置是否修改了默认的时间导出单位)。
内容的提问来源于stack exchange,提问作者Juan Vega
相关产品推荐
相关产品推荐

