I want to aggregate the metrics of several pods which belong an application so that I have a continuous grapf in Grafana when pods get deleted.
Since there are more than one application per namespace I want to use the kubernetes labels to sum the metrics by the application name.
I've come accross this article which actually seems to do what I want but it is outdated:
I've the container kubernetes-state-metrics up and running on my cluster and prometheus config is set to receive the metrics:
kube_pod_labels{label_app="app-one",label_application="app-one",label_deployment="app-one-latest-18",label_deploymentConfig="app-one-latest",label_deploymentconfig="app-one-latest",namespace="app-nonprod",pod="app-one-latest-18-05ggg"} 1
kube_pod_labels{label_app="app-two",label_application="app-two",label_deployment="app-two-latest-18",label_deploymentConfig="app-two-latest",label_deploymentconfig="app-two-latest",namespace="app-nonprod",pod="app-two-latest-18-vn794"} 1
One of the metrics I want to aggregate looks like this:
container_memory_working_set_bytes{beta_kubernetes_io_arch="amd64",beta_kubernetes_io_os="linux",container_name="app-one",id="/system.slice/d****pe",image="172.***00/app-nonprod/app-one@sha256:***",instance="***",job="kubernetes-nodes",kubernetes_io_hostname="****",name="k8s_app-one.ccf7757a_app-one-latest-18-05ggg_app-nonprod_dfc****",namespace="app-nonprod",pod_name="app-one-latest-18-05ggg",region="primary"}
I want to sum up the memory metrics of the pods which have the label "app". So I want to combine these two metrics
1.
sum(container_memory_working_set_bytes{namespace=~".+-nonprod",name=~".+",pod_name=~".+"} )by (pod_name,namespace)
{namespace="monitoring-nonprod",pod_name="kube-state-metrics-1-f40wt"} 22065152
{namespace="monitoring-nonprod",pod_name="prometheus-
2534504536-xbptl"} 1056088064
{namespace="app-nonprod",pod_name="app-two-18-05ggg"} 940535808
{namespace="app-nonprod",pod_name="app-two-18-mjfg4"} 956335838
{namespace="app-nonprod",pod_name="app-one-18-vn794"} 952115200
2.
kube_pod_labels{label_app=~".+"}
kube_pod_labels{instance="kube-state-metrics:8080",job="kubernetes-state-exporter",label_app="app",label_application="app",label_deployment="app-one-latest-18",label_deploymentConfig="app-one-latest",label_deploymentconfig="app-one-latest",namespace="app-nonprod",pod="app-one-latest-18-vn794"}
I'd be glad if anyone could help.
Thanks.