41

我想计算 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...

4

4 回答 4

67

我用来获取集群级别的 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

在此处输入图像描述

在此处输入图像描述

于 2016-11-03T00:15:56.073 回答
9

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

sum(eagle_pod_container_resource_usage_cpu_cores)

但是您也可以通过命名空间、节点或节点池轻松获取 CPU 使用率。

于 2019-03-03T12:06:23.930 回答
1

那么您也可以使用以下查询:

avg (rate (container_cpu_usage_seconds_total{id="/"}[1m]))
于 2016-12-07T13:29:27.087 回答
0

我更喜欢每个文档使用这个指标

sum(rate(container_cpu_usage_seconds_total{name!~".*prometheus.*", image!="", container_name!="POD"}[5m])) by (pod_name, container_name) /
sum(container_spec_cpu_quota{name!~".*prometheus.*", image!="", container_name!="POD"}/container_spec_cpu_period{name!~".*prometheus.*", image!="", container_name!="POD"}) by (pod_name, container_name)
于 2021-12-06T13:38:40.190 回答