11

我目前有以下 Promql 查询,它允许我查询每个 K8S pod 使用的内存:

sum(container_memory_working_set_bytes{image!="",name=~"^k8s_.*"}) by (pod_name)

Pod 的名称后跟 K8S 定义的哈希:

weave-net-kxpxc
weave-net-jjkki
weave-net-asdkk

这都属于同一个应用程序:weave-net

我想要的是聚合属于同一应用程序的所有 pod 的内存。

因此,查询将汇总所有weave-netpod 的内存并将结果放在名为weave. 比如结果会是:

{pod_name="weave-net"}            10

代替

{pod_name="weave-net-kxpxc"}       5
{pod_name="weave-net-jjkki"}       3
{pod_name="weave-net-asdkk"}       2

是否有可能这样做,如果可以,怎么做?

4

1 回答 1

16

您可以使用label_replace

sum(label_replace(container_memory_working_set_bytes{image!="",name=~"^k8s_.*"}, "pod_set", "$1", "pod_name", "(.*)-.{5}")) by (pod_set)

您将包含一个新标签 ( pod_set),该标签与标签上的正则表达式匹配,与第一组 ($1) 匹配pod_name。然后你总结新标签pod_set

[已编辑]

于 2019-06-13T15:23:43.103 回答