You need to enable JavaScript to run this app. Spring Boot带_max/_count/_sum后缀的指标如何在Grafana中正确使用
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot带_max/_count/_sum后缀的指标如何在Grafana中正确使用

三类后缀指标的本质

你看到的带_max、_count、_sum后缀的指标,是Micrometer中**计时器(Timer,用于耗时类统计)和分布摘要(Distribution Summary,用于数值类统计比如字节数、调用次数)**类型的指标,暴露给Prometheus时自动拆分的三个统计维度,各自含义如下:

  • _count:统计周期内事件的总发生次数,比如HTTP请求数、Repository调用次数
  • _sum:统计周期内所有事件的对应数值总和,比如HTTP请求总耗时、客户端接收总字节数
  • _max:统计周期内单次事件的最大数值,比如最高的单请求耗时、最大的单响应字节数

你提到的PromQL正确性说明

网上的写法存在笔误,Prometheus指标名的分隔符是下划线而非双冒号,修正后逻辑是完全正确的:

# 计算最近5分钟的平均请求耗时
irate(http_server_requests_seconds_sum{exception="None", uri!~".*actuator.*"}[5m]) / irate(http_server_requests_seconds_count{exception="None", uri!~".*actuator.*"}[5m])

这个公式的逻辑是用「单位时间内的总耗时增量」除以「单位时间内的请求数增量」,得到对应时间窗口内的单次请求平均耗时。如果要观察长周期的平均趋势,可以把irate替换为rate。


常用查询场景汇总

1. 计算事件发生频次(QPS、调用频次等)

直接基于_count的增长率计算即可,还可以按标签分组看不同维度的流量分布:

# 按URI、状态码分组,查看最近5分钟各HTTP接口的QPS
sum(irate(http_server_requests_seconds_count{exception="None", uri!~".*actuator.*"}[5m])) by (uri, status)

2. 计算周期内的总吞吐

针对流量、耗时总和类的统计,用increase函数计算指定时间窗口的增量即可:

# 计算最近1小时HTTP客户端总共接收的字节数
sum(increase(reactor_netty_http_client_data_received_bytes_sum[1h]))

# 计算最近30分钟所有Repository调用的总耗时
sum(increase(spring_data_repository_invocations_seconds_sum[30m]))

3. 查看峰值指标

直接用_max即可获取对应周期内的单次事件最大值,排查尖峰问题非常实用:

# 查看最近10分钟内/xxx接口的最高请求耗时
max(http_server_requests_seconds_max{uri="/api/xxx", exception="None"}[10m])

4. 多维度聚合计算

三类指标的标签完全对齐,可以灵活按业务维度聚合做统计:

# 按异常类型分组,计算最近5分钟各异常类请求的平均耗时
avg(irate(http_server_requests_seconds_sum{uri!~".*actuator.*"}[5m]) / irate(http_server_requests_seconds_count{uri!~".*actuator.*"}[5m])) by (exception)

注意事项

  • 做除法计算时,两个指标的过滤条件必须完全一致,否则会出现空值或错误结果
  • _max默认对应Micrometer的滑动窗口(默认2分钟),如果要查更长周期的峰值,需要在外层套max()+指定时间范围
  • 时间窗口的长度要大于Prometheus的采样间隔,避免数据漏算

内容的提问来源于stack exchange,提问作者PatPanda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 22:54:02