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

如何按天对Prometheus指标分组?实现HTTP请求每日总数统计

按天分组统计每日HTTP请求总数的方案

修正PromQL查询逻辑

你之前用的sum(sum_over_time(http_server_requests_seconds_count{}[24h]))存在逻辑问题——http_server_requests_seconds_count是计数器类型指标,它的值是持续累加的,sum_over_time会把24小时内所有样本的累计值加起来,这并不是你要的“每日请求总数”。正确的做法是用increase函数获取计数器的增量,也就是这段时间内的实际请求数。

按天分组的PromQL写法

根据你的需求,要统计过去x天的每日请求总数并按天分组,推荐用以下两种写法:

方法1(Prometheus 2.40+版本支持)

利用date()函数直接将时间戳转为日期字符串,分组更直观:

sum by (date) (
  increase(http_server_requests_seconds_count{}[1d])
  * on() group_left(date)
  vector(date(timestamp(http_server_requests_seconds_count{})))
)

方法2(兼容低版本Prometheus)

通过时间戳计算每日起始时间,再转成日期格式:

sum by (day) (
  increase(http_server_requests_seconds_count{}[1d])
  * on() group_left(day)
  vector(strftime("%Y-%m-%d", floor(time()/86400)*86400))
)

Grafana配置要点

  1. 选择Prometheus作为数据源,输入上述查询语句
  2. 时间范围设置为「过去x天」(比如过去7天)
  3. 图表类型推荐选条形图,更清晰展示每日数据对比;如果看趋势也可以用折线图
  4. 图例设置为{{date}}或{{day}},让每个条形/折线对应具体日期

注意事项

  • 确保Prometheus的存储保留时长足够覆盖你要查询的x天数据,否则会丢失历史数据
  • 如果你的应用有多个实例,sum()会自动累加所有实例的请求数,符合“总数”需求
  • 若需要按接口、请求方法等维度拆分,可把对应标签加到by()里,比如sum by (day, endpoint, method) (...)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 07:02:37