На неделе посмотрел бесплатный вебинар (Rebrain) на тему мониторинга Nginx под нагрузкой. Он оказался очень интересным и полезным, потому что узнал новый для себя способ мониторинга Nginx. Он оказался простым в настройке и функциональным. Ниже стек софта для реализации. При желании все инструкции находятся через поиск. Главное, знать что искать. Я обычно nginx мониторю традиционно, через анализ /nginx_status и лог файлов. Ниже будет описан другой способ.
Дано: балансер на Nginx и какое-то количество бэкендов, на которые nginx проксирует запросы. Надо мониторить этот балансер. Конкретно следующие метрики:
- ответы с разбивкой по http кодам;
- некоторые тайминги ответов;
- информация по запросам в разрезе трафика и их количества (rps).
Всё это с разбивкой по бэкендам, чтобы можно было их сравнивать и обнаруживать аномалии на конкретных серверах.
Для подобного мониторинга используется бесплатный nginx-module-vts. Необходимо самостоятельно собрать Nginx с этим модулем. В модуле настраиваются метрики, которые он будет выдавать. Этот модуль по дефолту умеет показывать все свои метрики в html странице. Понятное дело, что для полноценного мониторинга всё это надо отправить в какую-то единую систему.
VTS модуль умеет экспортировать метрики в формате Prometheus и без проблем подключается через static_config. Далее прикручивается Grafana. У неё есть готовые дашборды для VTS.
Подобный мониторинг настраивается буквально за считанные минуты. Самое хлопотное тут - сборка Nginx. Всё остальное по сути представлено в готовом виде: VTS экспортер в prom, докер контейнеры для prometheus и grafana и готовый дашборд. К примеру, в Zabbix всё это так просто не затолкать. Придётся потратить кучу времени, чтобы распарсить вывод модуля и написать шаблон. В настоящий момент я всё это получаю в ELK, но только без разбивки по бэкендам.
#nginx #webserver