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

如何查询具有特定值和时间偏移的Prometheus向量?,prometheus,promql,Prometheus,Promql,在普罗米修斯中,我想查询一个值为1的过去瞬间向量。我可以用PromQL来实现这一点,还是需要用录制规则来实现这一点 凭直觉,我尝试了以下方法: up{instance="192.168.0.100"} == 1 offset 30m 但它给了我一个错误: 执行查询时出错:参数“query”无效:char 39处的分析错误:偏移量修饰符前面必须有即时选择器或范围选择器,但后面必须是*promql.numberlateral 我认为这是一个运营商订单问题,因为offset之前的部分是一个即时向量。

在普罗米修斯中,我想查询一个值为1的过去瞬间向量。我可以用PromQL来实现这一点,还是需要用录制规则来实现这一点

凭直觉,我尝试了以下方法:

up{instance="192.168.0.100"} == 1 offset 30m
但它给了我一个错误: 执行查询时出错:参数“query”无效:char 39处的分析错误:偏移量修饰符前面必须有即时选择器或范围选择器,但后面必须是*promql.numberlateral

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

(up{instance="192.168.0.100"} == 1) offset 30m
但这也带来了另一个错误: 执行查询时出错:参数“query”无效:字符34处的分析错误:无法分析剩余的输入“offset 30m”


我想问的是,有没有办法得到一个向量,30分钟前的值等于1?我必须使用记录规则来实现这一点吗?

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


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

还有一个问题,当它不是偏移量而是一个时间范围时,如何使它工作?e、 g.(up{instance=“192.168.0.100”}==1)[30m]没有work@jallen0927,如果使用时间范围,它将成为范围向量,结果类型将为“矩阵”。除非使用比较运算符,否则不能直接使用比较运算符。随着时间的推移求和(up{instance=“instance-1”,job=“node”}[1m])的结果是12,我的刮取间隔是5s。@jallen0927,你能通过添加时间范围来解释你想在这里查询什么吗?vinodk,谢谢你的回答。我想尝试的是得到一个范围向量,其中记录在该时间范围内,值等于1,即通过
value==1
过滤。这不是一个特定的任务,但我只是好奇,看看在学习PromQL时是否可以实现。