Мониторинг статус-кодов HTTP NGINX в Zabbix

Monitoring / Zabbix 21-06-2021, 11:23 sobir 1 283 0

access log сайта расположен в /var/log/nginx/newsite_com_ssl_access.log

Пользователь 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 с помощью скрипта на bash:

vi /opt/get_response_http_codes.sh
#!/bin/bash

tail -n 1 /var/log/nginx/newsite_com_ssl_access.log | awk '{print $9}'
Меняем владельца скрипта и предоставляем права на выполнение:
chown zabbix /opt/get_response_http_codes.sh
chmod u+x /opt/get_response_http_codes.sh
Разрешаем выполнение удаленных команд агенту Zabbix:
vi /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1
После внесенных изменений, необходимо перезапустить агент Zabbix:
systemctl restart zabbix-agent

Далее создадим элемент данных в Zabbix:
Key Value
Name HTTP Status Codes
Type Zabbix agent
Key system.run[sh /opt/get_response_http_codes.sh]
Type of Information numeric (unsigned)
Update Interval 1m
Похожие новости
Мониторинг реплики AlwaysON с помощью Zabbix

Мониторим estimated recovery time репликационных баз SQL Server AlwaysON в Zabbix....

Подробнее
Мониторим сервисы Zimbra в Zabbix

Мониторинг почтового сервера Zimbra в Zabbix....

Подробнее
Ограничение SFTP доступа группе пользователей в CentOS 8 / RHEL 8

Ограничиваем доступ группе пользователей по протоколу SFTP и создадим синонимы директорий в дереве файловой...

Подробнее
Разворачиваем NGINX в Docker

Создание кастомного образа nginx из Dockerfile....

Подробнее
Установка веб сервера NGINX в CentOS 8 / RHEL 8

Установка последней стабильной версии популярного веб сервера NGINX....

Подробнее
Получаем валидные сертификаты SSL от Let's Encrypt для NGINX

Получаем валидные сертификаты SSL от Let's Encrypt для NGINX с использованием плагина webroot....

Подробнее
Комментарии (0)
Новые комментарии
komronu8 сентября 2022 18:23

Салом, можно ещё создать файл в /etc/nginx/proxy_params, a потом добавить туда

img
К комментарию
sobir26 августа 2022 10:43

Можно ещё так: 1. Создаем отдельную сеть для наших контейнеров docker network

img
К комментарию
komronu22 августа 2022 15:12

Спасибо за отзыв, написал отдельную статью по установке и настройке Ansible

img
К комментарию
sobir19 августа 2022 18:00

Думаю в статье необходимо также описать процесс установки Ansible.

img
К комментарию
sobir17 октября 2021 11:40

Принудительное обновление сертификата: certbot certonly --force-renew -d

img
К комментарию
sobir3 июля 2021 14:19

Можно, но я решил описать процесс копирования ключей более подробно.

img
К комментарию
Все комментарии
Какой дистрибутив Linux вы часто используете?
Календарь
«    Июнь 2023    »
ПнВтСрЧтПтСбВс
 1234
567891011
12131415161718
19202122232425
2627282930 
Подпишись на канал