首页 > 解决方案 > 如何查询具有特定值和时间偏移的 Prometheus 向量?

问题描述

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

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

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

但它给了我错误:“执行查询时出错:无效参数'查询':在字符 39 处解析错误:偏移量修饰符必须在一个即时或范围选择器之前,但在 *promql.NumberLiteral 之后”

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

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

但它给出了另一个错误:“执行查询时出错:无效参数'查询':在字符 34 处解析错误:无法解析剩余输入“偏移 30m”...”

所以我问是否有任何方法可以在 30 分钟前获得一个值等于 1 的向量?我必须使用录制规则来实现这一点吗?

标签: prometheuspromql

解决方案


不确定您的用例,但请尝试以下方法:

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


推荐阅读