Prometheus-通过正则表达式聚合并重新标记

时间:2018-07-31 13:02:04

标签: prometheus promql

我目前有以下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

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

1 个答案:

答案 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

求和