Kubernetesクラスター内のすべてのポッドのCPU使用量を計算します。プロメテウスの2つの指標が役立つことがわかりました。
_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)
_
しかし、sum(process_cpu_seconds_total)
の増分よりも大きい_container_cpu_usage{id="/"}
_の毎秒の増分が見つかりました。そのため、使用量は1より大きい場合があります...
これは、クラスターレベルでCPU使用率を取得するために使用しています。
sum (rate (container_cpu_usage_seconds_total{id="/"}[1m])) / sum (machine_cpu_cores) * 100
また、各ポッドのCPU使用率も追跡します。
sum (rate (container_cpu_usage_seconds_total{image!=""}[1m])) by (pod_name)
GitHubに完全なkubernetes-prometheusソリューションがあります。もっと多くのメトリックで役立つかもしれません: https://github.com/camilb/prometheus-kubernetes
主にノードごとのリソース使用率の概要を把握するために、独自のプロメテウスエクスポーター( https://github.com/google-cloud-tools/kube-eagle )を作成しました。しかし、CPUとRAMリソース。
sum(eagle_pod_container_resource_usage_cpu_cores)
ただし、名前空間、ノード、またはノードプールごとにCPU使用率を簡単に取得することもできます。
以下のクエリも使用できます:
avg (rate (container_cpu_usage_seconds_total{id="/"}[1m]))