用PromQL划分组

时间:2018-09-10 13:29:46

标签: kubernetes prometheus promql

我想通过将使用的内核数除以CPU限制(可分配的内核数)来计算容器的实际CPU使用率。因此,对于4个吊舱,我得到了两个不同的指标:

  • 每个吊舱已使用的内核数
  • 每个吊舱的可用核心数

我的问题:

我想获取每个容器的CPU使用率(已使用核心数/可用核心数)。

我尝试过的事情:

这两个查询中的每一个都完全返回我想要的内容:

  1. 每个Pod当前使用的内核数:

(我之所以使用label_replace,是因为一个指标使用pod_name作为指标名称,而另一个指标使用pod

label_replace(sum(rate(container_cpu_usage_seconds_total{pod_name=~"rewe-bd-palantir-vernemq.*", container_name="vernemq"}[1m])) by (pod_name), "pod", "$1", "pod_name", "(.*)")

响应:https://monosnap.com/direct/6EPuLF59HBJaYsAmKG6CM0fRPyUXDk

  1. 每个吊舱的可用核心数:

sum(kube_pod_container_resource_limits_cpu_cores{pod=~"rewe-bd-palantir-vernemq.*", container="vernemq", job="kubernetes-pods"}) by (pod)

响应:https://monosnap.com/direct/dRBfitwcxHIrTRYDmYHwV5YkomYJjH

此查询无效(未返回任何数据点):

label_replace(sum(rate(container_cpu_usage_seconds_total{pod_name=~"rewe-bd-palantir-vernemq.*", container_name="vernemq"}[1m])) by (pod_name), "pod", "$1", "pod_name", "(.*)") / sum(kube_pod_container_resource_limits_cpu_cores{pod=~"rewe-bd-palantir-vernemq.*", container="vernemq", job="kubernetes-pods"}) by (pod)

我的问题:

我如何实现一个查询,该查询返回每个Pod的CPU使用率(已使用内核数/可用内核数)?

1 个答案:

答案 0 :(得分:0)

您还需要使用on()函数。就是这样。

label_replace(sum(rate(container_cpu_usage_seconds_total{pod_name=~"rewe-bd-palantir-vernemq.*", container_name="vernemq"}[1m])) by (pod_name), "pod", "$1", "pod_name", "(.*)") / on(pod) sum(kube_pod_container_resource_limits_cpu_cores{pod=~"rewe-bd-palantir-vernemq.*", container="vernemq", job="kubernetes-pods"}) by (pod)