如何查询具有特定值和时间偏移量的 Prometheus 向量?

How to query Prometheus vectors with specific value and with time offset?

在 Prometheus 中,我想查询过去的值等于 1 的即时向量。我可以使用 PromQL 来实现还是需要使用记录规则来实现?

凭直觉,我尝试了类似的方法:

up{instance="192.168.0.100"} == 1 offset 30m

但它给了我错误: "Error executing query: invalid parameter 'query': parse error at char 39: offset modifier must be preceded by an instant or range selector, but follows a *promql.NumberLiteral instead"

我认为这是操作员顺序问题,因为 offset 之前的部分是即时向量。所以我加了括号:

(up{instance="192.168.0.100"} == 1) offset 30m

但它给出了另一个错误: "Error executing query: invalid parameter 'query': parse error at char 34: could not parse remaining input "偏移 30m"..."

所以我想问一下有没有什么办法可以得到一个30分钟前的时间值为1的vector?我必须使用记录规则来实现吗?

我不确定你的用例,但尝试这样的事情:

(up{instance="localhost:9090",job="prometheus"} offset 30m) == 1