使用 PromQL 分组
Posted
技术标签:
【中文标题】使用 PromQL 分组【英文标题】:Divide groups with PromQL 【发布时间】:2019-02-14 22:53:18 【问题描述】:我想通过将使用的内核数除以 CPU 限制(可分配的内核数)来计算实际的 Container CPU 使用率。因此,我得到了 4 个 pod 的两个不同指标:
每个 pod 使用的核心数 每个 pod 的可用内核数我的问题:
我想获取每个容器的 CPU 使用率(已用内核数/可用内核数)。
我尝试了什么:
这两个查询中的每一个都返回我想要的结果:
-
每个 pod 当前使用的核心数:
(我使用 label_replace 是因为一个指标使用 pod_name
作为指标名称,而另一个使用 pod
)
label_replace(sum(rate(container_cpu_usage_seconds_totalpod_name=~"rewe-bd-palantir-vernemq.*", container_name="vernemq"[1m])) by (pod_name), "pod", "$1", "pod_name", "(.*)")
回复:https://monosnap.com/direct/6EPuLF59HBJaYsAmKG6CM0fRPyUXDk
-
每个 pod 的可用内核数:
sum(kube_pod_container_resource_limits_cpu_corespod=~"rewe-bd-palantir-vernemq.*", container="vernemq", job="kubernetes-pods") by (pod)
回复:https://monosnap.com/direct/dRBfitwcxHIrTRYDmYHwV5YkomYJjH
此查询无效(未返回任何数据点):
label_replace(sum(rate(container_cpu_usage_seconds_totalpod_name=~"rewe-bd-palantir-vernemq.*", container_name="vernemq"[1m])) by (pod_name), "pod", "$1", "pod_name", "(.*)") / sum(kube_pod_container_resource_limits_cpu_corespod=~"rewe-bd-palantir-vernemq.*", container="vernemq", job="kubernetes-pods") by (pod)
我的问题:
如何实现查询,返回每个 pod 的 CPU 使用率(已用内核数/可用内核数)?
【问题讨论】:
【参考方案1】:您还需要使用on()
函数。所以应该是这样的。
label_replace(sum(rate(container_cpu_usage_seconds_totalpod_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_corespod=~"rewe-bd-palantir-vernemq.*", container="vernemq", job="kubernetes-pods") by (pod)
【讨论】:
我找不到任何关于这个on()
函数的文档。谁有链接?以上是关于使用 PromQL 分组的主要内容,如果未能解决你的问题,请参考以下文章