PromQL正确获取CPU使用率百分比

时间:2020-01-09 15:18:07

标签: prometheus promql cadvisor

我正在努力了解有关cAdvisor指标(由Prometheus抓取)的一些概念,尤其是cpu使用率指标。

它提供以下三种有关CPU使用率的度量标准类型:

  • container_cpu_system_seconds_total:累计系统cpu时间
  • 已消耗的container_cpu_user_seconds_total:累计用户cpu时间
  • 消耗的container_cpu_usage:累计使用的cpu时间消耗

当我考虑它们的比率时,我想获得相应CPU的百分比(* 100)。例如,下面的PromQL:

sum by (pod) (container_cpu_usage_seconds_total)

但是,cpu_user和cpu_system百分比值的总和不等于cpu_usage的百分比值。如果这是预期的差异,那么该差异代表什么?

2 个答案:

答案 0 :(得分:1)

我不知道cAdvisor的工作原理如何,但与Node_Exporter的工作方式相似,我认为除了“用户”和“系统”之外,还有更多CPU模式可以累加总CPU使用率。 / p>

查看所有可用的Node_Exporter CPU模式:

# HELP node_cpu_seconds_total Seconds the cpus spent in each mode.
# TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{cpu="0",mode="idle"} 5.96744154e+06
node_cpu_seconds_total{cpu="0",mode="iowait"} 6523.35
node_cpu_seconds_total{cpu="0",mode="irq"} 0
node_cpu_seconds_total{cpu="0",mode="nice"} 936.5
node_cpu_seconds_total{cpu="0",mode="softirq"} 8087.39
node_cpu_seconds_total{cpu="0",mode="steal"} 21.29
node_cpu_seconds_total{cpu="0",mode="system"} 33360.63
node_cpu_seconds_total{cpu="0",mode="user"} 862602.25

答案 1 :(得分:0)

*_total个指标求和是不正确的-您应将rate应用于它们,然后对结果求和:

sum by (pod) (rate(container_cpu_usage_seconds_total[5m]))

此查询应返回最近5分钟内每个Pod使用的CPU内核数。

请参见this blog post explaining why sum(rate()) should be used instead of rate(sum())