Назад | Перейти на главную страницу

Как получить процент использования ЦП для пространства имен от Prometheus?

Наш продукт находится в кластере Kubernetes на нашем сервере. Он еще не запущен в производство, поэтому в кластере работает несколько экземпляров для разных целей, каждый в своем собственном пространстве имен. Мне нужно запустить несколько нагрузочных тестов в одном из пространств имен, а тем временем мне нужно отслеживать использование ЦП. У нас есть Прометей и Графана для мониторинга.
Одна из целей этих тестов - узнать, какая нагрузка приводит к максимальной загрузке ЦП.

Итак, я ищу способ запросить использование ЦП пространства имен в процентах.

Вот что я собрал на основе примеров:

sum (rate (container_cpu_usage_seconds_total{namespace="$Namespace"}[1m])) / sum(kube_pod_container_resource_limits{resource="cpu", unit="core", namespace="$Namespace"}) * 100

Однако что-то должно быть не так с этим решением, потому что иногда на панели инструментов отображаются значения, превышающие 100%. Думая, что единицы должны быть разными, я попытался найти точную спецификацию этих показателей, но мне это не удалось.

(К сожалению, я даже не знаю, как рассчитывается загрузка ЦП и что на самом деле означает 100%.)

Я искал показатели, которые можно было бы использовать для решения этой проблемы, с помощью нескольких экспортеров: cAdvisor, Узел, куб-состояние-метрики и больше. Даже в этот На вид исчерпывающая статья, которая была доведена до моего сведения, заявляет, что метрика, которую я ищу, является важной, но не предусмотрено никакого способа ее запросить.

Любая помощь будет оценена, спасибо.

Я выяснил, почему я не могу использовать указанную выше метрику. Это потому, что обычно есть только несколько модулей, у которых даже есть настройка ограничения ЦП. В общем, это не нужно и сделает кластер неповоротливым.

Так

sum(kube_pod_container_resource_limits{resource="cpu", unit="core", namespace="$Namespace"})

суммирует все существующие ограничения для модулей пространства имен, но это не теоретическое 100% использование ЦП пространства имен. Поэтому иногда появляются проценты, превышающие 100%.

Однако я узнал, что теоретически пространство имен может использовать все ресурсы, делегированные узлам кластера. Я также узнал, что наш продукт, скорее всего, будет работать на машинах, очень похожих на этот тестовый сервер в производстве. Итак, чтобы получить процент использования ЦП, можно рассчитать namespace CPU usage / available CPU in cluster в моем счастливом случае.

Вот как я это делаю:

sum (rate (container_cpu_usage_seconds_total{namespace="$Namespace"}[1m])) / sum(machine_cpu_cores) * 100

где $Namespace это имя пространства имен.

(То же самое касается использования памяти.)

Это то, что я собираюсь отслеживать при выполнении нагрузочных и стресс-тестов.

Вы можете проверить использование ЦП пространства имен, используя произвольные метки с Prometheus. В эта статья вы полностью опишите, что вам нужно сделать. Формула будет выглядеть примерно так:

namespace:container_cpu_usage_seconds_total:sum_rate =
   sum(rate(container_cpu_usage_seconds_total{image!=""}[5m])) by (namespace)

namespace:container_memory_usage_bytes:sum =
   sum(container_memory_usage_bytes{image!=""}) by (namespace)

Также другой подход - использовать Прометей экспортер что позволяет легко узнать об использовании ЦП по пространству имен, узлу или пулу узлов.