Как вычислить использование памяти kubernetes с помощью Grafana

#kubernetes #grafana

#kubernetes #grafana

Вопрос:

Я настроил новую плату grafana, отслеживающую использование памяти моими узлами Kubernetes. У меня есть build to metrics, которые я могу отслеживать отдельно.

Общий объем памяти для всех узлов:

 sum (machine_memory_bytes{kubernetes_io_hostname=~"^$Node$"}) by (kubernetes_io_hostname)
  

И использование памяти узлами:

 sum (container_memory_working_set_bytes{id="/",kubernetes_io_hostname=~"^$Node$"}) by (kubernetes_io_hostname)
  

Обе метрики показывают ожидаемые значения. Но то, что я пытаюсь заархивировать, — это использование в процентах.

  metric-1 / metric-2 * 100
  

Что-то вроде:

 sum (container_memory_working_set_bytes{id="/",kubernetes_io_hostname=~"^$Node$"})  
/ 
sum (machine_memory_bytes{kubernetes_io_hostname=~"^$Node$"}) 
* 100
by (kubernetes_io_hostname)
  

Но это не сработало. Потому что метрика теперь недействительна. Как я могу этого добиться?

Ответ №1:

Да, я думаю, что невозможно разделить два временных ряда, чтобы получить среднее значение. для этого существуют такие функции, как «AsPercent» или, если вы используете Prometheus

сумма (скорость (container_memory_working_set_bytes{id=»/»,kubernetes_io_hostname=~»^ $Node $»})[1m]) / сумма (machine_memory_bytes{kubernetes_io_hostname=~»^$ Node $»}) *100 на (kubernetes_io_hostname)

эта ссылка может быть полезной https://github.com/camilb/prometheus-kubernetes

Комментарии:

1. Я попробовал это, но теперь получаю следующую ошибку: «ошибка синтаксического анализа в char 84: спецификации диапазона должен предшествовать селектор метрики, но следует за * promql. Вызовите вместо этого»

2. Теперь я нашел следующее решение: суммировать (container_memory_usage_bytes{id=»/»,kubernetes_io_hostname=~»^ $ Node $»}) с помощью (kubernetes_io_hostname) / on (kubernetes_io_hostname) machine_memory_bytes{kubernetes_io_hostname=~»^ $ Node $»}