我想检查度量的值是否高于标签中具有特定值的度量的阈值。我有一长串这些值(~30),而且只有这些。
a_metric_total {alabel="foo"} >= 1
alabel可以是foo、foobar、bar(但不能 barfoo ,所以我不想使用regexp)。
barfoo
我想要这样的东西:
a_metric_total {alabel in ["foo", "bar", "foobar"]} >= 1
有办法吗 in 标签和常量集/列表的操作?
in
基于标签的多个值选择度量的正确方法是regex。
因此,对于您的示例,此查询将返回您所描述的内容:
a_metric_total{alabel=~"foo|bar|foobar"} >= 1
请注意,标签的正则表达式选择器是完全锚定的(因此示例中的选择器等效于 ^(foo|bar|foobar)$ )因此没有发生部分匹配。要使promql中的regex选择器部分匹配,您需要手动指定: .*foo.*|.*bar.* 将匹配任何包含“foo”或“bar”的标签,但是 foo|bar 只匹配“foo”或“bar”,但不匹配“foobar”。
^(foo|bar|foobar)$
.*foo.*|.*bar.*
foo|bar