Это возможно с помощью показателей kube_pod_container_resource_limits_memory_bytes (предоставляемых kube-state-metrics ) и container_memory_usage_bytes (предоставляемых kubelet / cAdvisor)
label_replace(
label_replace(
kube_pod_container_resource_limits_memory_bytes{},
"pod_name",
"$1",
"pod",
"(.+)"
),
"container_name",
"$1",
"container",
"(.+)"
)
-
on(pod_name,namespace,container_name)
avg(
container_memory_usage_bytes{pod_name=~".+"}
)
by (pod_name,namespace,container_name)
Небольшое объяснение запроса: Itвычитание предела памяти и фактического использования.label_replace
функции необходимы для соответствия имен меток обеих метрик, так как они получены из разных целей.avg
используется для получения среднего значения между перезапусками модуля, так как каждый перезапуск модуля создает новую метрику.{pod_name=~".+"}
используется для фильтрации метрик из container_memory_usage_bytes
, которые не подходят для этого случая