Ani*_*ita 5 cpu percentage prometheus promql
理想情况下,我必须找出每个节点上 Pod 的 CPU 使用率百分比。但我试图找出每个节点的CPU使用率。我已经编写了查询,但它给了我超过 100%(可以是 150% - 200%),即使包含多个 cpu 的情况(我取了平均值)。您能帮我理解下面的查询有什么问题吗?
(1 - avg(irate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance)) * 100 / scalar(sum(machine_cpu_cores))
Run Code Online (Sandbox Code Playgroud)
通过阅读多本书和解决方案,我还发现该查询仅适用于多个节点(container_spec_cpu_quota不适用于AWS ECS上的某些实例)
avg(rate(container_cpu_usage_seconds_total{name!~".*prometheus.*", image!="", instance=""}[1m])) by (pod) / scalar(sum(container_spec_cpu_quota{name!~".*prometheus.*", image!="", instance=""} / container_spec_cpu_period{name!~".*prometheus.*", image!="", instance=""}))
Run Code Online (Sandbox Code Playgroud)
以下查询返回[0 ... 100]%
过去 5 分钟每个节点的平均 CPU 使用率(以百分比表示):
100 * avg(1 - rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance)
Run Code Online (Sandbox Code Playgroud)
此查询假设每个受监控主机都运行一个node_exporter ,并且 Prometheus 已正确配置为抓取所有这些节点导出器。
该查询按以下方式工作:
rate(node_cpu_seconds_total{mode="idle}[5m])
每秒增长率([5m]
参见方括号中)。这基本上是过去 5 分钟内给定 CPU 核心每秒空闲的平均秒数。例如,该值在 范围内[0 .. 1]
,其中0
表示 CPU 核心在过去 5 分钟内 100% 繁忙,而1
表示 CPU 核心在过去 5 分钟内 100% 空闲。1 - rate(...)
每个主机每个 CPU 核心的 CPU 使用率。avg(...) by (instance)
的平均CPU 使用率(也称为Prometheus 生态系统)。host
100 * ...
每台主机的平均 CPU 使用率乘以 100,以获得该范围的百分比[0 ... 100]%
。现代主机通常有多个 CPU 核心。有时CPU核心之间的负载可能不均匀。例如,如果一个只能使用单个 CPU 核心的应用程序运行在具有 2 个 CPU 核心的主机上,则该主机的 CPU 使用率永远不会超过 50%,因为第二个 CPU 核心始终处于空闲状态,而该应用程序无法使用扩大规模。在这些情况下,监视每个主机的可用 CPU 核心之间的最大CPU 使用率可能会很有用:
100 * max(1 - rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance)
Run Code Online (Sandbox Code Playgroud)
此查询可以帮助您识别 CPU 负载不均匀的主机,其中某些应用程序无法扩展到更多 CPU 核心。
小智 5
以下查询返回每个节点的 CPU 使用情况:
100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21063 次 |
最近记录: |