0

我有 2 个查询。如果它们匹配,我需要触发警报但它不起作用:

up {name="DEV-DB-1-EC2"} == 0 and up {name="DEV-DB-2-EC2"} == 0

我关闭了两台服务器但没有获取数据,它说:no data作为输出。

如果我分别运行每个查询,它就可以工作。

长话短说:

如果主数据库(DEV-DB-1-EC2)从数据库(DEV-DB-2-EC2)都出现故障,我需要触发警报。

有人可以为此要求提供正确的语法吗?

4

1 回答 1

0

就像 Prometheus 中的每个二元运算符一样,逻辑二元运算符都受到标签集匹配的影响。

vector1 和 vector2 产生一个由 vector1 的元素组成的向量,其中 vector2 中的元素具有完全匹配的标签集。

在您的情况下,名称显然不匹配,因此您需要添加一个ON()/IGNORING()子句。

一个简单的最小修复是:

up {name="DEV-DB-1-EC2"} == 0 and on() up {name="DEV-DB-2-EC2"} == 0

如果您有多个主要/次要并需要匹配它们,您可能需要对其进行细化。

于 2020-05-10T16:38:45.413 回答