我有两个表达式A和B,并希望创建一个prometheus警报,以便((A != 0) AND (B <30))、PromQL中的and操作符执行set操作。而且A和B的结果也有不同的标签。我能够执行A!=0和B<30,但不知道AND。
A的产出:

B的产出:

发布于 2022-11-22 10: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
复制相似问题