我想计算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 ......
答案 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
答案 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使用率。