我有两个表达式A和B,并希望创建一个prometheus警报,以便((A != 0) AND (B <30))
、PromQL中的and操作符执行set操作。而且A和B的结果也有不同的标签。我能够执行A!=0
和B<30
,但不知道AND。
A的产出:
B的产出:
发布于 2022-11-22 02:27:28
默认情况下,普罗米修斯根据and
对and
左侧和右侧的每对时间序列分别执行这些医生操作,并根据这些医生使用相同的标签集。
在您的示例中,A and B
不返回任何内容,因为A
返回一个带有空标签集的时间序列,而B
返回一个带有非空标记集的时间序列,因此Prometheus无法找到一对具有匹配标签的时间序列来执行and
操作。
这可以通过使用on()
修饰符来解决,该修饰符指示Prometheus在搜索and
运算符左侧和右侧的时间序列匹配对时,要考虑到在and
中指定的标签集。因此,下面的查询应该适用于您的情况:
A and on() B
此查询指定on()
内部的空标签集,因此Prometheus将A
中的任何时间序列与来自B
的任何时间序列匹配。见这些文档关于on()修饰符。
https://stackoverflow.com/questions/74489544
复制相似问题