Template Nginx Logs by Zabbix agent
Настраиваем наблюдение за журналом access.log веб-сервера Nginx, а точнее за количеством конкретных HTML-кодов в нём
Требования
- Zabbix 5 и выше
- ОС Debian или Ubuntu
Особенности
- Наблюдение только за журналом access.log
- При обработке журнала фильтруются все данные кроме HTML-кодов
- Вычисляемые элементы данных подсчитывают количество конкретных HTML-кодов за определенный промежуток времени (в шаблоне это указано макросом
{$NGINX.STATUS_CODE_CHECK.PERIOD}
и по умолчанию равно 10 минутам) - Триггеры отсутствуют
Реализация
Чтобы наш Zabbix-агент смог читать журналы, нужно предоставить ему соответствующие права. Смотрим, кто уме имеет доступ:
ls -lh /var/log/nginx/
Обычно это одни из следующих групп: www-data
, nginx
, adm
. Добавим пользователя Zabbix в группу adm
:
sudo usermod -a -G adm zabbix
Совет
Проверить членство в группах пользователя zabbix и то, что он может читать журналы, можно следующими командами:
# отобразить членство в группах groups zabbix # читаем журнал от имени конкретного пользователя sudo -H -u zabbix bash -c 'tail -f /var/log/nginx/access.log'
Скачиваем и импортируем xml-шаблон наблюдения: template_nginx_logs_by_zabbix_agent.zip
Бонус
Собственно сама реализация подсмотрена в схеме telegraf + influxdb + grafana, просто решил её адаптировать под Zabbix. Ну а так как к Zabbix у меня тоже есть своя Grafana, то:
Видимо придётся мне каждый счетчик делать отдельно, т.к. в данной реализации вроде бы нельзя игнорировать только 200 код (и не красить его в красный, когда он превышает порог…).