我想计算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 ...
我用它来获得集群级别的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
我创建了自己的prometheus导出器(https://github.com/google-cloud-tools/kube-eagle),主要是为了更好地概述每个节点的资源利用率。但它还提供了一种更直观的方式来监控CPU和RAM资源。获取群集范围CPU使用率的查询如下所示:
sum(eagle_pod_container_resource_usage_cpu_cores)
但您也可以通过命名空间,节点或节点池轻松获取CPU使用率。
那你也可以使用下面的查询:
avg (rate (container_cpu_usage_seconds_total{id="/"}[1m]))