如何用普罗米修斯计算kubernetes中容器的cpu使用情况作为监控?

时间:2016-10-30 07:55:16

标签: kubernetes prometheus

我想计算kubernetes集群中所有pod的cpu使用情况。我发现prometheus中的两个指标可能很有用:

container_cpu_usage_seconds_total: Cumulative cpu time consumed per cpu in seconds.
process_cpu_seconds_total: Total user and system CPU time spent in seconds.

Cpu Usage of all pods = increment per second of sum(container_cpu_usage_seconds_total{id="/"})/increment per second of sum(process_cpu_seconds_total)

然而,我发现container_cpu_usage{id="/"}的每一秒的增量大于sum(process_cpu_seconds_total)的增量。因此使用量可能大于1 ......

3 个答案:

答案 0 :(得分:21)

我正在使用集群级别的CPU使用情况:

sum (rate (container_cpu_usage_seconds_total{id="/"}[1m])) / sum (machine_cpu_cores) * 100

我还会跟踪每个pod的CPU使用情况。

sum (rate (container_cpu_usage_seconds_total{image!=""}[1m])) by (pod_name)

我在GitHub上有一个完整的kubernetes-prometheus解决方案,也许可以帮助您提供更多指标:https://github.com/camilb/prometheus-kubernetes

enter image description here

enter image description here

答案 1 :(得分:0)

您也可以使用以下查询:

avg (rate (container_cpu_usage_seconds_total{id="/"}[1m]))

答案 2 :(得分:0)

我创建了自己的prometheus导出器(https://github.com/google-cloud-tools/kube-eagle),主要是为了更好地了解每个节点的资源利用率。但是它还提供了一种更直观的方式来监视CPU和RAM资源。获取群集范围的CPU使用率的查询如下所示:

sum(eagle_pod_container_resource_usage_cpu_cores)

但是您也可以按名称空间,节点或节点池轻松获取CPU使用率。