Как рассчитать использование процессора в метриках состояния кубе?

Я наблюдаю за кластером eks, используя и API-интерфейсы Kubernetes, и показатели состояния Kube, дистанционно с помощью Prometheus. в API Kubernetes у нас есть метрики container_cpu_usage_seconds_total который дает процессор использования стручка. Есть ли аналогичные метрики в kube-state-metrics, которые могут дать использование ЦП. На самом деле я пытаюсь получить использование процессора кластера, которое полностью отличается от kubernetes api и kube-state-metrics. Ниже приведены расчеты.

kube-state-metrics:

sum(kube_pod_container_resource_requests_cpu_cores) / sum(kube_node_status_allocatable_cpu_cores) * 100 - это дает 101%

в то время как метрика состояния куба дает 12% который выглядит точным для меня.

kubernetes-api:

sum (rate (container_cpu_usage_seconds_total{id="/",kubernetes_io_hostname=~"^$Node$", job=~"$job$"}[5m])) / sum (machine_cpu_cores{kubernetes_io_hostname=~"^$Node$", job=~"$job$"}) * 100

Я не думаю, что есть какая-либо метрика в kube-state-metric, которая дает использование процессора по сравнению с kubernetes-api

Заранее спасибо.

1 ответ

Решение

Нет, в kube_state_metric нет (одной) конкретной метрики для использования процессора на контейнер .

Значение, которое вы получили: sum(kube_pod_container_resource_requests_cpu_cores) / sum(kube_node_status_allocatable_cpu_cores) * 100 = 101 может быть неправильным, потому что метрики, такие как kube_node_status_allocatable_cpu_cores и kube_pod_container_resource_requests_cpu_cores, помечены как УСТАРЕВШИЕ.

В то же время обратите внимание, что есть метрика, такая как kube_pod_container_resource_limits_cpu_cores. В вашем контейнере может быть установлен лимит ресурсов, поэтому ваш результат может превышать 100%. Если вы установили лимит для каждого контейнера, проверьте, не превышает ли лимит ресурса этот запрос ресурсов, и тогда ваш расчет должен выглядеть следующим образом: [sum(kube_pod_container_resource_requests_cpu_cores) - sum(kube_pod_container_resource_limits_cpu_cores)]/ sum(kube_node_status_allocatable_cpu_cores) * 100,

Посмотрите на все метрики ресурсов в kube_state_metrics для контейнера и узлов: node_metrics, pod_container_metrics.

Другие вопросы по тегам