如何在 Prometheus 查询中对标签进行分组?
How can I group labels in a Prometheus query?
如果我有一个带有以下标签的指标:
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' 组组合在一起?
(我意识到指标基数需要改进,我已经更新了应用程序来修复它。但是它给我留下了这个问题,如果我想稍后通过查询来修复指标)
您可以使用正则表达式查询:
my_metric{group=~"misc group.+"}
这将为您提供 group
以 "misc group" 开头的所有内容。
是的,您可以使用标签替换将所有杂项组合在一起:
sum by (new_group) (
label_replace(
label_replace(my_metric, "new_group", "", "group", ".+"),
"new_group", "misc", "group", "misc group.+"
)
)
内部label_replace将组中的所有值复制到new_group,外部用"misc"覆盖匹配"misc group.+"的值,然后我们用[=求和17=] 标签。使用新标签的原因是,如果我们只是覆盖 "group" 标签,则该系列将不再是唯一的,并且总和将不起作用。
更简单
sum by (group) (my_metric)
如果我有一个带有以下标签的指标:
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' 组组合在一起?
(我意识到指标基数需要改进,我已经更新了应用程序来修复它。但是它给我留下了这个问题,如果我想稍后通过查询来修复指标)
您可以使用正则表达式查询:
my_metric{group=~"misc group.+"}
这将为您提供 group
以 "misc group" 开头的所有内容。
是的,您可以使用标签替换将所有杂项组合在一起:
sum by (new_group) (
label_replace(
label_replace(my_metric, "new_group", "", "group", ".+"),
"new_group", "misc", "group", "misc group.+"
)
)
内部label_replace将组中的所有值复制到new_group,外部用"misc"覆盖匹配"misc group.+"的值,然后我们用[=求和17=] 标签。使用新标签的原因是,如果我们只是覆盖 "group" 标签,则该系列将不再是唯一的,并且总和将不起作用。
更简单
sum by (group) (my_metric)