如何计算每个节点上特定Pod CPU使用率的百分比?

时间:2019-11-16 22:47:24

标签: kubernetes prometheus promql

我在具有3个节点的k8s集群上有一个Fluentd守护程序集。我想获得一个代表百分比的值,该值可以为我提供有关当前节点上流利的Pod占用的每个节点上的CPU(以百分比为单位)的信息。

在普罗米修斯做这件事的方式是什么?

谢谢。

1 个答案:

答案 0 :(得分:2)

您可能想在Prometheus中使用container_cpu_usage_seconds_total查询。

像这样:

sum (rate (container_cpu_usage_seconds_total{}[5m])) by (container_name)

这将返回系统中所有pod by容器名称的CPU使用率。


您还可以应用一些过滤器来细化输出。例如:

sum (rate (container_cpu_usage_seconds_total{container_name=~"fluentd.*"}[5m])) by (container_name)

上面的查询将返回与以fluentd开头的容器名称相匹配的pod的CPU使用率


您可以将这些Pod的使用除以群集的总cpu核心,以百分比找到使用情况,如下所示:

sum (rate (container_cpu_usage_seconds_total{container_name=~"fluentd.*"}[5m])) / sum (machine_cpu_cores{}) * 100

最后,为了获得特定容器名称上特定节点上cpu核心使用总量的百分比,您可以添加其他过滤器:instance =“ INSTANCE_NAME”:

sum (rate (container_cpu_usage_seconds_total{container_name=~"fluentd.*", instance="INSTANCE_NAME"}[5m])) / sum (machine_cpu_cores{}) * 100

N.B:根据K8S版本,container_cpu_usage_seconds_total查询返回的字段可能有所不同。在某些系统上,容器的名称由container_name字段表示,而在某些系统上则为container