You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Grafana&Prometheus:如何合并重复路径标签后按标签分组计算平均延迟?

解决PromQL中路径标签合并计算平均延迟的问题

直接用PromQL的label_replace函数就能搞定,不需要依赖Grafana的转换或值映射功能——后者只是在展示层合并标签,底层计算还是分开的,会导致平均延迟结果不准确。

修改后的查询语句

sum by (normalized_path) (
  label_replace(rate(http_server_latency_milliseconds_sum[$__rate_interval]), "normalized_path", "$1/", "path", "^(.*[^/])$")
) / sum by (normalized_path) (
  label_replace(rate(http_server_latency_milliseconds_count[$__rate_interval]), "normalized_path", "$1/", "path", "^(.*[^/])$")
)

逻辑说明

  1. 统一路径格式:label_replace函数通过正则表达式^(.*[^/])$匹配所有不以/结尾的path标签,把它们替换成$1/($1是匹配到的路径主体部分,末尾补/);已经以/结尾的路径不会被匹配,保持原样。处理后生成统一的normalized_path标签。
  2. 聚合计算平均延迟:分别对处理后的sum和count序列按normalized_path分组求和,再做除法得到各路径的平均延迟,这样就自动合并了"/users"和"/users/"这类实际相同的路径。

注意事项

  • 如果你的应用存在空路径这类特殊场景,可以调整正则表达式适配,比如^(.*[^/])?$(不过一般业务路径不会出现空值)。
  • 这个方式是在计算rate之后做标签替换再聚合,能保证每个时间窗口的速率计算准确,再合并同路径的统计值,结果比展示层合并更可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 07:14:56