Мониторинг статус-кодов HTTP NGINX в Zabbix
Monitoring / Zabbix 17-11-2023, 15:51 sobir 6 490 0
Пользователь zabbix от которого запущен агент Zabbix не имеет прав доступа на чтение лога.
Доступ к лог-файлам в директории /var/log/nginx имеет владелец www-data и группа adm. Проверить можно командой:
ls -l /var/log/nginx/
Для возможности чтения логов nginx, добавим пользователя zabbix в группу adm:
usermod -aG adm zabbix
После изменений прав доступа пользователя zabbix, необходимо перезапустить агент Zabbix:
systemctl restart zabbix-agent
Проверяем изменения, получаем последние записи лог-файла от имени пользователя zabbix:
sudo -u zabbix bash -c 'tail -f /var/log/nginx/newsite_com_ssl_access.log'
Далее создадим элемент данных в Zabbix:
Key | Value |
---|---|
Name | HTTP Status Codes |
Type | Zabbix (active) |
Key | log[/var/log/nginx/newsite_com_ssl_access.log,"^(\S+) (\S+) (\S+) \[([\w:\/]+\s[+\-]\d{4})\] \"(\S+)\s?(\S+)?\s?(\S+)?\" (\d{3}|-)",,,,\8,,] |
Type of Information | numeric (unsigned) |
Update Interval | 1m |
Регулярное выражение:
^(\S+) (\S+) (\S+) \[([\w:\/]+\s[+\-]\d{4})\] \"(\S+)\s?(\S+)?\s?(\S+)?\" (\d{3}|-) (\d+|-)\s?\"?([^\"]*)\"?\s?\"?([^\"]*)\"
разбивает каждую строку лога на несколько групп. Код состояния HTTP находится в \8-й группе.
Рассмотрим вариант получения количества статус-кодов HTTP 50x с помощью скрипта на bash:
vi /opt/get_500_status_codes.sh
#!/bin/bash
get_date=`date +%d/%b/%Y:%H:`
cat /var/log/nginx/newsite_com_ssl_access.log | grep $get_date | awk '{print $9}' | grep -E "500|502|504|505" | wc -l
Меняем владельца скрипта и предоставляем права на выполнение:
chown zabbix /opt/get_500_status_codes.sh
chmod u+x /opt/get_500_status_codes.sh
Разрешаем выполнение удаленных команд агенту Zabbix:
vi /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1
AllowKey=system.run[*]
После внесенных изменений, необходимо перезапустить агент Zabbix:
systemctl restart zabbix-agent
Далее создадим элемент данных в Zabbix:
Key | Value |
---|---|
Name | HTTP Status Codes |
Type | Zabbix agent |
Key | system.run[sh /opt/get_500_status_codes.sh] |
Type of Information | numeric (unsigned) |
Update Interval | 1m |
Мониторим estimated recovery time репликационных баз SQL Server AlwaysON в Zabbix....
ПодробнееОграничиваем доступ группе пользователей по протоколу SFTP и создадим синонимы директорий в дереве файловой...
ПодробнееУстановка последней стабильной версии популярного веб сервера NGINX....
ПодробнееПолучаем валидные сертификаты SSL от Let's Encrypt для NGINX с использованием плагина webroot....
ПодробнееНовые комментарии
Цитата: FidoNet Цитата: sobir Цитата: FidoNet Спасибо за статью. Остальные
К комментариюЦитата: sobir Цитата: FidoNet Спасибо за статью. Остальные статьи что находил
К комментариюЦитата: FidoNet Цитата: sobir Цитата: FidoNet Можт быть дело в
К комментариюЦитата: sobir Цитата: FidoNet Можт быть дело в dnsmasq.service? Ошибка Failed
К комментариюЦитата: FidoNet Цитата: sobir Цитата: FidoNet Спасибо за статью. Остальные
К комментариюМожт быть дело в dnsmasq.service? Ошибка Failed to set DNS configuration: Unit
К комментариюКакой дистрибутив Linux вы часто используете?
Календарь
« Ноябрь 2024 » | ||||||
---|---|---|---|---|---|---|
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |