Как рассчитать использование процессора контейнеров в кубернетах с прометеем в качестве мониторинга?
Я хочу рассчитать использование процессора всеми модулями в кластере кубернетов. Я нашел две метрики в прометее, которые могут быть полезны:
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...
Ответы
Ответ 1
Это я использую для получения использования ЦП на уровне кластера:
sum (rate (container_cpu_usage_seconds_total{id="/"}[1m])) / sum (machine_cpu_cores) * 100
Я также отслеживаю использование ЦП для каждого модуля.
sum (rate (container_cpu_usage_seconds_total{image!=""}[1m])) by (pod_name)
У меня есть полное решение kubernetes-prometheus на GitHub, возможно, может помочь вам с большей метрикой: https://github.com/camilb/prometheus-kubernetes
![введите описание изображения здесь]()
![введите описание изображения здесь]()
Ответ 2
Ну, вы также можете использовать запрос ниже:
avg (rate (container_cpu_usage_seconds_total{id="/"}[1m]))
Ответ 3
Я создал свой собственный экспортер prometheus (https://github.com/google-cloud-tools/kube-eagle), в первую очередь, чтобы получить лучший обзор использования моих ресурсов для каждого узла. Но он также предлагает более интуитивно понятный способ мониторинга ресурсов процессора и оперативной памяти. Запрос на загрузку ЦП в кластере будет выглядеть так:
sum(eagle_pod_container_resource_usage_cpu_cores)
Но вы также можете легко получить использование процессора по пространству имен, узлу или пулу узлов.