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

Prometheus - Aggregate and relabel by regex

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

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

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

因此,查询将对所有 weave-net pods 的内存求和并将结果放入名为 weave 的应用程序中。例如结果将是:

{pod_name="weave-net"}            10

而不是

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

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

您可以使用label_replace

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

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

[已编辑]