如何在Grafana结合Prometheus展示每日燃气用量差值?
当日燃气用量差值计算方案
核心思路
通过获取当前燃气累计读数(gas_m3)与当日零点时刻的读数差值,得到当日至今的使用量。
可行查询语句
方案1:使用last_over_time + @midnight(推荐)
直接用gas_m3@midnight可能因零点无精确采样返回空值,改用last_over_time获取零点附近的最近有效读数:
gas_m3{bron="homewizard", instance="http://192.168.1.232/api/v1/data", job="json"} - last_over_time(gas_m3{bron="homewizard", instance="http://192.168.1.232/api/v1/data", job="json"}[1d] @ midnight)
- 逻辑:
last_over_time([1d] @ midnight)会提取当日零点时刻往前1天内的最后一个燃气读数,确保能拿到零点时的有效数值。
方案2:使用offset动态计算时间偏移
如果@midnight语法不兼容,可通过计算当日已过时长来偏移查询:
gas_m3{bron="homewizard", instance="http://192.168.1.232/api/v1/data", job="json"} - gas_m3{bron="homewizard", instance="http://192.168.1.232/api/v1/data", job="json"} offset (day_of_week() * 24 + hour())h
- 逻辑:
(day_of_week() *24 + hour())h计算从当日零点到现在的小时数,用offset回退到零点时刻查询读数。
关键注意事项
- 确保
gas_m3是单调递增的累计值(燃气表读数符合这个特性),如果是瞬时用量值,需改用sum_over_time(gas_m3[1d])来统计当日累计。 - 若零点无采样数据,
last_over_time会自动取零点前最近的有效读数,符合燃气表的实际读数逻辑。 - 在Grafana中设置时间范围为「Today」,配合上述查询可稳定展示当日用量差值。
内容的提问来源于stack exchange,提问作者beastdjw
相关产品推荐
相关产品推荐

