代码之家  ›  专栏  ›  技术社区  ›  George Shuklin

检查标签值是否在prometheus的可能值列表中

  •  1
  • George Shuklin  · 技术社区  · 2 年前

    我想检查度量的值是否高于标签中具有特定值的度量的阈值。我有一长串这些值(~30),而且只有这些。

    a_metric_total {alabel="foo"} >= 1
    

    alabel可以是foo、foobar、bar(但不能 barfoo ,所以我不想使用regexp)。

    我想要这样的东西:

    a_metric_total {alabel in ["foo", "bar", "foobar"]} >= 1
    

    有办法吗 in 标签和常量集/列表的操作?

    1 回复  |  直到 2 年前
        1
  •  1
  •   markalex    2 年前

    基于标签的多个值选择度量的正确方法是regex。

    因此,对于您的示例,此查询将返回您所描述的内容:

    a_metric_total{alabel=~"foo|bar|foobar"} >= 1
    

    请注意,标签的正则表达式选择器是完全锚定的(因此示例中的选择器等效于 ^(foo|bar|foobar)$ )因此没有发生部分匹配。要使promql中的regex选择器部分匹配,您需要手动指定: .*foo.*|.*bar.* 将匹配任何包含“foo”或“bar”的标签,但是 foo|bar 只匹配“foo”或“bar”,但不匹配“foobar”。

    推荐文章