0

我正在努力理解有关 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 的百分比值。如果这是预期的差异,这种差异代表什么?

4

2 回答 2

1

对指标求和是不正确的*_total——您应该应用rate它们然后对结果求和:

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

此查询应返回过去 5 分钟内每个 pod 使用的 CPU 内核数。

请参阅此博客文章,解释为什么sum(rate())应该使用而不是rate(sum())

于 2020-07-05T13:47:40.517 回答
1

我不知道 cAdvisor 究竟是如何工作的,但与 Node_Exporter 的工作方式相提并论,我认为除了“用户”和“系统”之外还有更多的 CPU 模式可以增加总 CPU 使用率。

查看所有可用的 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
于 2020-01-09T16:23:55.990 回答