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

如何用PromQL检测最近1天新增的Counter类型时间序列

修正后的Prometheus查询方案

原查询的问题在于,它仅判断过去1天内是否有数据上报,而非序列是否是最近1天内新生成的——只要序列后续持续上报数据,即使超过1天也会一直返回1,不符合你的需求。

修正思路

核心是找到目标标签组合序列的首次出现时间戳,然后判断当前时间与该时间戳的间隔是否≤24小时(86400秒):

  1. 用min(timestamp(My_metric{...})) by (label_1, label_2)获取指定标签组合的最早样本时间戳(即序列生成时间)
  2. 用当前时间time()减去该时间戳,判断差值是否在24小时内

最终查询语句

time() - min(timestamp(My_metric{label_1="v1",label_2="v2"})) by (label_1, label_2) <= 86400

效果说明

  • 当序列在最近24小时内生成时,查询返回值为1,标签为label_1="v1",label_2="v2"
  • 当序列生成超过24小时,或该标签组合从未有过数据时,查询返回空值

注意事项

  • 确保Prometheus的数据保留时间≥1天,否则无法正确获取序列的首次出现时间戳
  • 如果需要明确返回0而非空值,可以用or vector(0)扩展,但通常空值更符合监控告警场景的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:00:15