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

如何编写PromQL告警规则查找两个时间区间的共有标签值

PromQL跨时间窗口匹配共有标签值实现

场景说明

两个时间窗口采集到的fruits指标如下:

  • now-60m 至 now-30m 区间采集结果:
fruits{name="apple"} 1
fruits{name="orange"} 1
fruits{name="pear"} 1
  • now-30m 至 now 区间采集结果:
fruits{name="banana"} 1
fruits{name="pear"} 1
fruits{name="watermelon"} 1

需求为检测同时出现在两个指标集合中的name标签值,本例预期返回结果为pear。

实现PromQL

直接用PromQL自带的集合交集运算符and就能实现,搭配max_over_time区间函数覆盖整个时间窗口的存在性判断,不用关心指标具体值,只要序列在窗口内出现过就会被纳入匹配,语句如下:

max_over_time(fruits[30m] offset 30m) and max_over_time(fruits[30m])

语句说明

  • max_over_time(fruits[30m] offset 30m):覆盖now-60m到now-30m区间,提取该窗口内所有出现过的fruits序列
  • and:集合交集操作符,仅保留左右两侧标签完全一致的时间序列,自动过滤仅在单侧存在的序列
  • max_over_time(fruits[30m]):覆盖now-30m到now区间,提取该窗口内所有出现过的fruits序列

执行结果

上述语句执行后,仅会返回标签为name="pear"的fruits序列,和预期结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:57:21