#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 $»}