Мониторинг Nginx, Apache и PHP-FPM в Zabbix: что собирать и как не открыть status наружу
Веб-сервер может отвечать на TCP-порт и при этом работать плохо: запросы зависают, PHP-FPM упирается в лимит процессов, растёт очередь или backend начинает отдавать 5xx. Поэтому полезный мониторинг веб-стека должен смотреть не только доступность порта, но и внутренние метрики сервисов.
Nginx: начните с официального шаблона
В актуальных версиях Zabbix есть официальные шаблоны для Nginx через agent и HTTP. Они используют stub_status и позволяют получать число активных соединений, запросы, accepted/handled connections и состояние процесса.
location = /basic_status {
stub_status;
allow 127.0.0.1;
deny all;
}Не публикуйте status endpoint в интернет без ограничений. Для удалённого HTTP-шаблона разрешите доступ только с адреса Zabbix Server/Proxy.
Apache: используйте server-status и готовый template
Для Apache также есть официальные шаблоны. Они дают более полезную картину, чем проверка процесса: занятые workers, запросы, uptime и другие показатели, которые позволяют увидеть деградацию до полного отказа сайта.
PHP-FPM: контролируйте пул, а не только процесс php-fpm
Для PHP-FPM важны active/idle processes, total processes, очередь и достижение pm.max_children. Источником обычно служит status page PHP-FPM, доступная только локально или через служебную сеть. Метрики можно забирать HTTP Agent, Zabbix Agent или своим шаблоном.
Какие триггеры действительно полезны
- сервис недоступен;
- время ответа выросло выше нормального;
- растёт доля 5xx;
- Nginx/Apache начинает сбрасывать соединения;
- PHP-FPM регулярно достигает лимита процессов;
- очередь PHP-FPM не возвращается к нулю;
- процесс перезапускается чаще обычного.
Разделяйте мониторинг сервиса и сайта
Метрики Nginx или Apache показывают состояние веб-сервера, но не гарантируют, что конкретный сайт работает. Дополните их Web Scenario или HTTP-проверкой реального URL с ожидаемым статусом и, при необходимости, содержимым ответа.
После обновления Zabbix проверяйте шаблоны
Встроенные шаблоны не всегда обновляются автоматически вместе с сервером, чтобы не затереть локальные изменения. После обновления Zabbix имеет смысл сравнить используемые шаблоны с актуальными шаблонами для вашей ветки.
Итог: для Nginx и Apache лучше начинать с официальных templates, а PHP-FPM добавлять как отдельный слой. В результате триггер говорит не просто «порт 80 открыт», а показывает, где именно узкое место: веб-сервер, PHP-пул или само приложение.