PromQL для правильного получения процента использования ЦП

Я изо всех сил пытаюсь понять некоторые концепции, касающиеся метрик cAdvisor (при очистке Prometheus), в частности метрик использования процессора.

Он предоставляет следующие три типа показателей, касающихся использования ЦП:

  • container_cpu_system_seconds_total: Общее время ЦП системы
  • использовано container_cpu_user_seconds_total: совокупное время процессора пользователя
  • consmed container_cpu_usage: общее время использования процессора

Я думал получить процент (* 100) соответствующего процессора, когда я измеряю их скорость. Например, со следующим PromQL:

sum by (pod) (container_cpu_usage_seconds_total)

Однако сумма процентных значений cpu_user и cpu_system не суммируется с процентным значением cpu_usage. Если это ожидаемая разница, что представляет собой эта разница?


person Tony.H    schedule 09.01.2020    source источник


Ответы (2)


Я не знаю, как именно работает cAdvisor, но, проводя параллель с тем, как работает Node_Exporter, я думаю, что есть дополнительные режимы ЦП, кроме "пользовательского" и "системного", чтобы добавить к общему использованию ЦП.

Посмотрите на все доступные режимы ЦП Node_Exporter:

# 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
person Marcelo Ávila de Oliveira    schedule 09.01.2020

Суммировать *_total метрики некорректно - нужно применить к ним rate, а затем просуммировать результат:

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

Этот запрос должен возвращать количество ядер ЦП, использованных каждым модулем за последние 5 минут.

См. это сообщение в блоге, в котором объясняется, почему sum(rate()) следует использовать вместо rate(sum()) < / а>

person valyala    schedule 05.07.2020