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

Grafana面板查询问题:如何统计选定时段内HTTP状态码请求数

正确的PromQL查询语句方案

一、统计具体HTTP状态码的请求次数

如果需要单独统计200、400、500这类具体状态码的请求次数,只需将查询中的固定时间范围[1m]替换为Grafana内置变量[$__range],让时间范围自动适配面板选定的时间段:

sum(increase(http_client_requests_second_count{uri=~"$apiUri"}[$__range])) by (status)

如果需要同时按接口URI和请求方法拆分结果,保留by (uri, method, status)即可:

sum(increase(http_client_requests_second_count{uri=~"$apiUri"}[$__range])) by (uri, method, status)

二、统计聚合类别(SUCCESS/CLIENT_ERROR/SERVER_ERROR)的请求次数

要得到2xx(SUCCESS)、4xx(CLIENT_ERROR)、5xx(SERVER_ERROR)的汇总次数,需要通过标签映射将状态码归类后再聚合,这里提供两种直观的写法:

写法1:先拆分具体状态码,再替换标签并聚合

sum(increase(http_client_requests_second_count{uri=~"$apiUri"}[$__range])) by (status)
| label_replace("$1", "status_category", "SUCCESS", "status", "2..")
| label_replace("$1", "status_category", "CLIENT_ERROR", "status", "4..")
| label_replace("$1", "status_category", "SERVER_ERROR", "status", "5..")
| sum by (status_category)

写法2:直接关联状态码与类别标签后聚合

sum by (status_category) (
  increase(http_client_requests_second_count{uri=~"$apiUri"}[$__range])
  * on(status) group_left(status_category) (
    label_replace(1, "status_category", "SUCCESS", "status", "2..")
    or label_replace(1, "status_category", "CLIENT_ERROR", "status", "4..")
    or label_replace(1, "status_category", "SERVER_ERROR", "status", "5..")
  )
)

关键说明

  • 替换[1m]为[$__range]是核心:固定时间范围会导致结果和面板选定时间段不匹配,而$__range会自动使用面板当前的时间范围参数。
  • 聚合类别时,通过label_replace将匹配的状态码映射到对应的类别标签,再通过sum by完成最终汇总。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 01:25:11