组合两个普罗米修斯查询并使用布尔值表示结果

问题描述 投票:0回答:1

以下两个查询都会产生布尔输出。

查询1

state{token="59cdefc6f4e9ac94"}  1

查询2

state{token="c86fc1f35d479759"}  0

如何根据以下逻辑组合这两个查询?谢谢。

[Q1]&[Q2]
1  &  1  ->  1
1  &  0  ->  0
0  &  1  ->  0
0  &  0  ->  0
prometheus
1个回答
0
投票

我推荐这个查询:

state{token="59cdefc6f4e9ac94"} + on() state{token="c86fc1f35d479759"} == bool 2

这里:

  • + on()
    对提供的值求和,忽略任何标签。结果不包含标签集中的任何标签,
  • 如果 LHS 等于 2,
  • == bool 2
    返回 1,否则返回 0。

请注意,此查询假定每个查询恰好返回一个时间序列。如果情况并非如此,并且您的查询最终可能返回任何其他数量的时间序列,我会使用

(
   vector(1)
   and on() (state{token="59cdefc6f4e9ac94"}==1)
   and on() (state{token="c86fc1f35d479759"}==1)
) or vector(0)

如果两个选择器中的任何时间序列等于 1,则此查询将返回 1,否则返回 0。

© www.soinside.com 2019 - 2024. All rights reserved.