如何在Prometheus中计算每日0点起Counter变量的变化值?
实现COUNTER指标每日重置的当日累计统计
核心思路
把持续增长的COUNTER指标,转换成当日0点到当前时刻的增量值,本质就是当前指标值 - 当日0点的指标快照值,这样就能实现每日0点从零开始计数的效果。
PromQL 具体实现
直接用以下表达式即可,替换your_counter_metric为你的实际指标名:
your_counter_metric - your_counter_metric @ floor(time() / 86400) * 86400
- 逻辑解释:
floor(time()/86400)*86400会计算出当日0点的精确时间戳,@符号用于获取该时间点的指标快照值,两者相减得到的就是当日0点至今的累计增量。 - 示例(新用户数统计):如果你的指标是
new_users_total,表达式则为:new_users_total - new_users_total @ floor(time() / 86400) * 86400
Grafana 可视化优化
如果用Grafana展示,可做这些配置让效果更贴合需求:
- 面板类型选Time series
- 数据源选择Prometheus,填入上面的PromQL表达式
- 面板选项里开启Fill功能,能更直观呈现当日累计增长的趋势
- 把图例名称改成
当日累计新增,方便快速识别 - X轴设为时间,Y轴设为累计数值,和你需要的示例效果(当日0点数值为0,随时间持续增长,次日0点重置)完全匹配
内容的提问来源于stack exchange,提问作者progquester
相关产品推荐
相关产品推荐

