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

使用Grafana 7.5和Prometheus查询每日最大值缺失当日数据求助

解决方案:获取每日数据(含当日)并按需求聚合

核心问题分析

设置Min step=1d后看不到当日数据,是因为Prometheus的步长对齐按自然日边界(如00:00)执行,当日未结束时没有完整的1d步长数据点。需要用PromQL范围向量函数提取每日的最后非空值或最大值,同时兼容当日未完成的数据。

针对需求的查询语句

1. 单个module的每日最后非空值(或最大值)

因为数据每日清空后只增不减,最后值等价于当日最大值,用last_over_time函数提取:

last_over_time(my_total{job="$job",app="$appRepeatVar"}[1d])

该查询会对每个自然日(含当前未结束的日),提取对应module过去24小时内的最后一个非空值,完美兼容当日数据。

2. 按module求和后的每日总值

若需将所有module的数值求和得到每日总值(含当日),先对每个module取每日最后值再求和:

sum(last_over_time(my_total{job="$job",app="$appRepeatVar"}[1d])) by (app)

如果需要保留module维度,去掉by (app)即可:

sum(last_over_time(my_total{job="$job",app="$appRepeatVar"}[1d])) by (module, app)

3. 用最大值替代最后值的写法

如果更倾向于取每日最大值(效果和最后值一致),替换函数为max_over_time:

max_over_time(my_total{job="$job",app="$appRepeatVar"}[1d])

面板配置调整

  • 无需设置Min step=1d,上述查询已通过范围向量[1d]实现按日聚合。
  • 保持Bar Gauge的Calculation=total(求和场景),或根据需求选择Last/Max(单个module场景)。
  • 时间范围选“今天”或“最近N天”时,当日数据会正常显示。

验证逻辑

  • 已结束的日期:last_over_time会提取当日最后一个数据点(即当日最大值)。
  • 当前日期:会提取到查询时刻为止的最后一个非空值,实时反映当日累计数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:42:40