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

如何对Prometheus指标的URI标签应用正则聚合API请求计数

解决带查询参数的API请求统一统计问题

你当前的PromQL会因为uri包含不同查询参数,把同一API的请求拆分开统计。要实现将带不同查询参数的同一API归为一类统计,需要先对uri标签做清洗,去掉查询参数部分再进行聚合,这里提供两种可行的写法:

方法1:使用regex_replace(Prometheus 2.27+版本支持)

这种方式更简洁,直接在分组时对uri做正则替换,去掉?及后面的所有内容:

sum by (method, regex_replace(uri, "\\?.*$", "")) (
  rate(http_client_requests_seconds_count{app="$application", uri!~".*actuator.*"}[2m])
)

regex_replace(uri, "\\?.*$", "")会把/api/users?id=123这类uri转换成/api/users,同一路径的请求不管查询参数是什么,都会被归为一组统计。

方法2:使用label_replace(兼容旧版本Prometheus)

如果你的Prometheus版本低于2.27,可先用label_replace生成一个不带查询参数的新标签,再按新标签聚合:

sum by (method, clean_uri) (
  label_replace(
    rate(http_client_requests_seconds_count{app="$application", uri!~".*actuator.*"}[2m]),
    "clean_uri", "$1", "uri", "^([^?]+)(\\?.*)?$"
  )
)

这里label_replace会给每个请求序列添加一个clean_uri标签,值为uri中?之前的路径部分,后续聚合就基于这个“干净”的标签进行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:12:42