我目前有以下Promql查询,可让我查询我的每个K8S Pod使用的内存:
sum(container_memory_working_set_bytes{image!="",name=~"^k8s_.*"}) by (pod_name)
pod名称后跟K8S定义的哈希。所以我有一些像这样的pod名称:
weave-net-kxpxc
weave-net-jjkki
weave-net-asdkk
哪个都属于同一个应用程序:weave-net
我想要的是汇总属于同一应用程序的所有pod的内存。
因此,查询将汇总所有weave-net
容器的内存,并将结果放入名为weave
的应用程序中。这样的结果将是:
{pod_name="weave-net"} 10
代替
{pod_name="weave-net-kxpxc"} 5
{pod_name="weave-net-jjkki"} 3
{pod_name="weave-net-asdkk"} 2
是否有可能这样做,如果可以,怎么办?
答案 0 :(得分:1)
您可以使用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