Мониторинг параметров Nginx в Zabbix
Веб-сервер Nginx умеет отдавать свои статистические данные и было бы не плохо их мониторить с возможность построения различных наглядных графиков.
Мониторинг осуществляется скриптом nginx_v<VERSION>.py из набора Zabbix Data Mining.
Там же есть готовые шаблоны для Zabbix Server'a.
Настройка
Настройка осуществляется через Ansible.
Необходимо указать модуль nginx в переменой zdm_modules_enabled, в этом случае будет:
- установлен пакет библиотек python3-requests
Переменные defaults для роли:
- zdm_cnf_nginx_version - одна из доступных версий скрипта, подходящая к версии приложения.
- zdm_cnf_nginx_stub_status_url - адрес страницы с информацией stub_status
- zdm_cnf_nginx_allow_redirects - разрешить переход по редиректам
- zdm_cnf_nginx_cache_ttl - время хранения результата в кэше.
Скрипт предусматривает кэш, что позволяет сократить количество запросов, а так же снимать элементы данных в одном временном срезе.
Время действия кэша в секундах должно устанавливается чуть меньше чем период опроса элементов.
Необходимо настроить отдачу статистики по определенному адресу:
VirtualHost
server { ... location = /stub_status { stub_status on; access_log off; allow IP.ZABBIX.SEVER.AGENT; deny all; } }
Где IP.ZABBIX.SEVER.AGENT заменяем на IP адрес, с которого будет обращаться Zabbix-Agent (как правило это localhost).
Перезагрузить:
/etc/init.d/nginx reload # or systemctl reload nginx
Nginx должен быть скомпилирован с поддержкой модуля статистики stub_status (--with- http_stub_status_module)
В Gentoo
make.conf
NGINX_MODULES_HTTP="stub_status ..."
Проверка:
curl http://you.site.com/stub_statusВы должны получить статистические данные, если этого не произошло, то конфигурация выполнена не правильно.
Элементы данных
Zabbix Agent UserParameter
UserParameter=nginx.py[*],/opt/zdm3/nginx_v1.10.3.py "$1" "$2" "$3" "$4"
Дополнительную информацию по аргументам скрипта можно получит:
/opt/zdm3/nginx_v1.10.3.py -h
Пример данных:
$ zabbix_get -s 127.0.0.1 -k 'nginx.py[active]' 75
Пример графиков:
Если accepts и handled не равны, увеличите значение worker_connections
Обсуждение