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

如何用PromQL筛选耗时超50ms的PUT请求?Grafana查询异常求助

问题分析与解决

原查询的问题

你写的PromQL逻辑完全偏离需求:(sum(rate(http_server_requests_seconds_bucket{exception="None", app="Myapp", method="PUT"}[5m])) by (le) > 0.05) 是在判断每个直方图桶的请求速率是否大于0.05,和“筛选耗时超过50ms的请求”没有关系,所以才会只返回le=0.05556的桶(这个桶的请求速率刚好满足>0.05的条件)。

正确查询方式

1. 获取耗时超过50ms(0.05秒)的请求速率

用直方图总请求数减去耗时≤0.05秒的请求数,得到耗时>0.05秒的请求速率:

sum(rate(http_server_requests_seconds_bucket{exception="None", app="Myapp", method="PUT", le="+Inf"}[5m]))
- sum(rate(http_server_requests_seconds_bucket{exception="None", app="Myapp", method="PUT", le="0.05"}[5m]))

2. 获取耗时超过50ms的请求占比

如果需要看超耗时请求在总请求中的占比,用以下查询:

(
  sum(rate(http_server_requests_seconds_bucket{exception="None", app="Myapp", method="PUT", le="+Inf"}[5m]))
  - sum(rate(http_server_requests_seconds_bucket{exception="None", app="Myapp", method="PUT", le="0.05"}[5m]))
)
/ sum(rate(http_server_requests_seconds_bucket{exception="None", app="Myapp", method="PUT", le="+Inf"}[5m]))

关键说明

http_server_requests_seconds_bucket是Prometheus的直方图指标,le表示该桶包含所有耗时≤le值的请求。要统计耗时超过某个阈值的请求,必须用le="+Inf"(总请求数)减去le=阈值的桶数据,这是直方图的标准用法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:20:47