通过Prometheus查询计算Kubernetes集群中Pod 的CPU、内存使用率等指标

如题所述

第1个回答  2022-07-14
Kubernetes的kubelet组件内置了cadvisor,将Node上容器的指标以Prometheus支持的格式展示,可以通过这些指标计算得到更多有用的数据。

在Prometheus的配置文件中,配置了相关的Target之后,这些指标就可以从Prometheus中查询到。

直接访问Kubelet的apiserver接口,可以读取以Prometheus支持的格式呈现的指标:

从 man top 手册中找到了CPU使用率的定义:

即在过去的一段时间里进程占用的CPU时间与CPU总时间的比率,如果有多个CPU或者多核,需要将每个CPU的时间相加。
kubelet中的cadvisor采集的指标与含义,见: Monitoring cAdvisor with Prometheus 。

其中有几项是:

container_cpu_usage_seconds_total是container累计使用的CPU时间,用它除以CPU的总时间,就得到了容器的CPU使用率。
Pod 在1s内累计使用的CPU时间为:

container_spec_cpu_quota 是容器的CPU配额,它的值是:为容器指定的CPU个数*100000。
故,Pod在1s内CPU的总时间为:Pod的CPU核数 * 1s:

将上面两个公式的结果相除,就得到了容器的CPU使用率:

Pod 内存使用率的计算就简单多了,直接用内存实际使用量除以内存限制使用量即可:
相似回答