Kubernetes: сравнение использования RSS-памяти модулей и требований к Pod-памяти в Prometheus / PromQL

#kubernetes #prometheus #cadvisor #promql

#kubernetes #prometheus #cadvisor #promql

Вопрос:

У нас есть метрика container_memory_rss из cadvisor и метрика kube_pod_container_resource_requests_memory_bytes из самого Kubernetes.

Возможно ли объединить показатели друг с другом, чтобы мы могли напрямую сравнить соотношение обоих показателей? Более конкретно, я хотел бы в основном «объединить» следующие показатели:

 sum(kube_pod_container_resource_requests_memory_bytes) by (pod, namespace)
sum(container_memory_rss) by (container_label_io_kubernetes_pod_name, container_label_io_kubernetes_pod_namespace)
  

‘Join’ будет относиться к имени модуля и пространству имен.

Может ли PromQL сделать это, учитывая, что названия меток различаются?

Ответ №1:

Вы можете использовать функцию label_replace для изменения меток на одной стороне выражения таким образом, чтобы они совпадали:

   sum by (pod_name, namespace) (container_memory_rss) 
/ 
  sum by (pod_name, namespace) (
    label_replace(
      kube_pod_container_resource_requests_memory_bytes, 
      "pod_name", "$1", "pod", "(.*)"
    )
  )