如何在Prometheus查询中对标签进行分组?

时间:2017-07-17 23:10:22

标签: prometheus promql

如果我的指标包含以下标签:

my_metric{group="group a"}  100
my_metric{group="group b"}  100
my_metric{group="group c"}  100
my_metric{group="misc group a"}  1
my_metric{group="misc group b"}  2
my_metric{group="misc group c"}  1
my_metric{group="misc group d"}  1

是否可以进行查询,甚至是label_replace结合了' misc'小组一起?

(我意识到公制基数需要改进,我已经更新了应用程序来修复它。但是如果我想通过稍后的查询来修复指标,我就会留下这个问题)

3 个答案:

答案 0 :(得分:15)

是的,您可以使用标签替换将所有misc组合在一起:

sum by (new_group) (
  label_replace(
    label_replace(my_metric, "new_group", "$1", "group", ".+"),
    "new_group", "misc", "group", "misc group.+"
  )
)

内部label_replace将所有值从group复制到new_group,外部覆盖匹配" misc group。+"使用" misc",然后我们按" new_group"标签。使用新标签的原因是,如果我们只是覆盖"组"该系列将不再是唯一的。标签,总和不会起作用。

答案 1 :(得分:8)

更容易

sum by (group) (my_metric)

答案 2 :(得分:4)

您可以使用正则表达式查询:

my_metric{group=~"misc group.+"}

这将为您提供group以“misc group”开头的所有内容。