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

如何编写PromQL实现Grafana展示Prometheus counter当日零点至今增量

Prometheus Counter 当日零点至今增量查询方案

纯PromQL 原生实现

无需依赖Grafana特性,直接在Prometheus中即可查询:

# 替换your_counter为你的实际指标名,UTC时区适用
clamp_min(
  your_counter - sum_over_time(your_counter[1m] offset (time() - (time() % 86400)) * 1s),
  0
)

逻辑说明

  • time() % 86400 计算当前时间距当日零点的秒数
  • offset (time() - (time() % 86400)) * 1s 将查询偏移到当日零点的时间点
  • sum_over_time(your_counter[1m] offset ...) 取零点前后1分钟的指标值做平滑,避免零点无采样点导致查询失败
  • clamp_min(...,0) 处理极低概率的Counter重置场景,避免出现负数值
  • 如果你所在时区不是UTC,需要添加时区偏移,以东八区为例:
# 东八区适配版本
clamp_min(
  your_counter - sum_over_time(your_counter[1m] offset (time() - ((time() + 28800) % 86400)) * 1s),
  0
)

配合Grafana使用方案

如果使用Grafana做可视化,可以直接利用Grafana的时间宏简化查询:

  1. 若仅需查看当日实时增量,将图表时间范围设置为今日至今,直接使用如下查询即可:
increase(your_counter[$__range])
  1. 若需要在月粒度图表中展示每日的增量对比,将图表步长设置为1天,使用如下查询:
increase(your_counter[1d])

该语句会自动计算每个自然天的Counter增量,不会和历史数据累加,直接满足月维度每日增量对比的需求。

注意事项

  • 如果你100%确认Counter永远不会重置,可以将increase替换为delta,查询效率更高
  • 生产环境建议将sum_over_time中的采样窗口调整为和你的Prometheus采集间隔匹配,比如采集间隔是15s就设为[30s],避免窗口内无采样点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:39:03