如何在Kubernetes中使用Prometheus获得pod(milli)核心CPU使用率?

时间:2018-02-19 18:21:37

标签: kubernetes prometheus

我运行了v1.9.2 Kubernetes的自定义设置,并使用Prometheus v2.1.0抓取各种指标。其中,我抓取了kubeletcAdvisor指标。

我想回答这个问题:" 我的部署中requestslimits定义的CPU资源实际上由pod(及其容器)使用了多少就(毫)核心而言?"

有很多可用的指标,但没有这样的。也许它可以通过CPU使用时间以秒计算,但我不知道如何。

我认为这是不可能的 - 直到一位朋友告诉我她在她的群集中运行Heapster,其内置的Grafana中有一个图表,告诉完全:它显示了pod(及其容器)在(milli)核心中的单独CPU使用率。

由于Heapster还使用kubeletcAdvisor指标,我想知道:我怎样才能计算出相同的指标? InfluxDB中的指标名为cpu/usage_rate,但即使使用Heapster的代码,我也无法弄清楚它们是如何计算的。

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:5)

我们正在使用container_cpu_usage_seconds_total指标来计算Pod CPU使用率。此指标包含按核心容器消耗的CPU秒总数(这很重要,因为Pod可能包含多个容器,每个容器可以跨多个核心进行调度;但是,度量标准具有我们可以用于聚合的pod_name注释。特别感兴趣的是该指标的变化率(可以使用PromQL's rate() function计算)。如果它在一秒钟内增加1,那么Pod在那一秒内消耗1个CPU核心(或1000毫安核心)。

以下PromQL查询就是这样:在五分钟内平均计算所有Pod的CPU使用率(使用sum(...) by (pod_name)操作):

sum(rate(container_cpu_usage_seconds_total[5m])) by (pod_name)