Nginx – это широко используемый веб-сервер, который часто используется для обслуживания статического контента, обратного прокси или балансировки нагрузки веб-трафика. Он известен своей надежностью, гибкостью и высокой производительностью. Как и с любым сервером, важно контролировать Nginx, чтобы убедиться, что он функционирует должным образом, и решать любые проблемы, которые могут возникнуть. В этой статье мы рассмотрим, как мониторить Nginx с помощью Zabbix для обнаружения и устранения проблем с вашим сервером Nginx.
Подготовка
Прежде чем мы начнем изучать процесс мониторинга Nginx с помощью Zabbix, необходимо убедиться, что у нас есть все необходимое:
- Сервер с установленным Nginx, за которым вы хотите наблюдать
- Запущенный сервер Zabbix
- Установленный и настроенный агент Zabbix на сервере, на котором работает Nginx.
Настройка Nginx
Откройте файл /etc/nginx/conf.d/stub_status.conf любым удобным вам редактором и вставьте следующий текстовый блок:
server {
listen 127.0.0.1:80;
server_name 127.0.0.1;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
location = /basic_status {
stub_status;
allow 127.0.0.1;
allow ::1;
deny all;
}
}
Эти настройки позволят серверу генерировать базовую информацию о состоянии на странице /basic_status, доступной только с этого же сервера, чтобы наш агент мог получить ее.
Теперь давайте проверим, работает ли процесс Nginx с новыми настройками, выполнив следующие команды:
nginx -t
systemctl restart nginx
systemctl status nginx
Затем давайте проверим, работает ли новая страница состояния с помощью curl:
curl http://127.0.0.1/basic_status
Настройка логов
Вы должны проверить, генерирует ли Nginx необходимые для Zabbix логи, проверив настройки логирования в файле /etc/nginx/nginx.conf
Теперь, чтобы Zabbix смог работать с логами, давайте закомментируем оригинальную строку access_log и вставим этот фрагмент:
error_log /var/log/nginx/error.log notice; access_log /var/log/nginx/access.log main; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
Он должен выглядеть примерно так: Проверьте и перезапустите Nginx еще раз, и приступим к настройке Zabbix.
Настройка Zabbix
Предполагая, что все предыдущие инструкции выполнены, вам теперь нужно только создать хост для этого сервера и добавить к нему Nginx с помощью шаблона Zabbix agent, или добавить его к уже существующему. Назначьте шаблон хосту с установленным Nginx, перейдя в Configuration → Hosts → Выберите хост → Templates → Add.
Если все правильно, вы сможете работать с данными, предоставляемыми шаблоном:
- Общие показатели: использование процессора и памяти, количество открытых подключений к серверу.
- Метрики запросов: среднее время отклика на запрос, процент запросов, приводящих к ошибке, количество запросов, обрабатываемых Nginx в секунду.
- Метрики SSL: количество обработанных Nginx рукопожатий в секунду, количество поддерживаемых Nginx шифров и количество ошибок сертификатов, с которыми сталкивается Nginx.
- Время работы: отслеживает, как долго Nginx работает без простоев.
Шаблон Zabbix также включает ряд триггеров, которые уведомляют вас о проблемах с вашим сервером Nginx. Эти триггеры оповещают вас о таких проблемах, как высокая загрузка процессора, высокое использование памяти, высокий уровень ошибок и простои. Например:
- Триггер высокой загрузки процессора: этот триггер будет оповещать вас, когда использование процессора на вашем сервере Nginx превысит определенный порог.
- Триггер высокого использования памяти: этот триггер будет оповещать вас, когда использование памяти на вашем сервере Nginx превысит определенный порог.
- Триггер высокого уровня ошибок: этот триггер будет оповещать вас, когда уровень ошибок на вашем сервере Nginx превысит определенный порог.
- Триггер простоя: этот триггер будет оповещать вас, если ваш сервер Nginx перестанет работать.
Вывод
Вы изучили, как подготовить Nginx для мониторинга с помощью Zabbix и добавить подходящий шаблон в Zabbix, что позволяет вам проактивно отслеживать работу вашего сервера и быстро решать возникающие проблемы.