Стандартный мониторинг PHP-FPM часто ограничивается проверкой того, запущен ли процесс. Однако для высоконагруженных систем важно видеть внутренние метрики: количество активных процессов, длину очереди и число свободных воркеров. В этой статье мы настроим решение от Рамиля Валитова, которое поддерживает автоматическое обнаружение (LLD) нескольких пулов и работу через Unix-сокеты.
1. Подготовка Zabbix-агента
Все действия выполняются на сервере, где запущен PHP-FPM и установлен Zabbix-агент.
Для работы скриптов обнаружения и обработки данных (в формате JSON) нам понадобятся дополнительные утилиты. Установите их командой:
sudo apt-get update
sudo apt-get install -y grep gawk lsof jq libfcgi-bin bc unzip
Скачаем последнюю стабильную версию шаблона напрямую из GitHub в каталог /tmp:
curl -L $(curl -s https://api.github.com/repos/rvalitov/zabbix-php-fpm/releases/latest | grep 'zipball_' | cut -d\" -f4) --output /tmp/zabbix-php-fpm.zip
unzip -j /tmp/zabbix-php-fpm.zip "/zabbix/" -d /tmp/zabbix-php-fpm-files
2. Установка скриптов и конфигурация
Теперь необходимо разместить файлы в системных директориях Zabbix.
Скопируйте скрипты и файл параметров:
# Копируем параметры агента
sudo cp /tmp/zabbix-php-fpm-files/userparameter_php_fpm.conf /etc/zabbix/zabbix_agentd2.d/plugins.d/
# Копируем скрипты мониторинга
sudo cp /tmp/zabbix-php-fpm-files/zabbix_php_fpm_discovery.sh /etc/zabbix/
sudo cp /tmp/zabbix-php-fpm-files/zabbix_php_fpm_status.sh /etc/zabbix/
# Устанавливаем права на исполнение
sudo chmod +x /etc/zabbix/zabbix_php_fpm_discovery.sh
sudo chmod +x /etc/zabbix/zabbix_php_fpm_status.sh
Скрипты должны иметь возможность просматривать открытые сокеты от имени суперпользователя. Выполните команду sudo visudo и добавьте в конец файла следующую строку:
zabbix ALL = NOPASSWD: /etc/zabbix/zabbix_php_fpm_discovery.sh, /etc/zabbix/zabbix_php_fpm_status.sh
После этого перезапустите агент:
sudo systemctl restart zabbix-agent2
3. Настройка PHP-FPM
Чтобы Zabbix мог получать данные, в каждом пуле PHP-FPM должна быть включена страница статуса.
Отредактируйте ваш конфигурационный файл пула (например, /etc/php/8.3/fpm/pool.d/www.conf):
- Добавьте или раскомментируйте строку:
pm.status_path = /php-fpm-status - Перезапустите службу:
sudo systemctl restart php8.3-fpm
4. Настройка в панели Zabbix
- Импорт шаблона: Перейдите в Configuration → Templates → Import. Выберите файл
zabbix_php_fpm_template_4.0.xmlиз распакованного ранее архива (из папки/tmp/zabbix-php-fpm-files). - Привязка: Перейдите в настройки нужного узла сети (Host) и добавьте шаблон Template App PHP-FPM by Ramil Valitov.
- Макросы: Если вы изменили путь к странице статуса в пункте 3, перейдите во вкладку Macros хоста и добавьте:
{$PHP_FPM_STATUS_URL}=ваш_путь(например,/status).
5. Проверка работы
Чтобы убедиться, что агент правильно считывает данные, выполните команду на сервере с агентом:
zabbix_agentd -t php_fpm.discover
В ответе вы должны увидеть JSON-структуру со списком ваших пулов и путями к сокетам. Если JSON появился — через 1-5 минут в Zabbix появятся первые данные и графики.
Совет: Если данных нет, проверьте логи агента (
/var/log/zabbix/zabbix_agentd.log) на предмет ошибок прав доступа (Permission denied).
Готово! Теперь вы контролируете состояние PHP-FPM и сможете вовремя заметить нехватку воркеров или рост очереди запросов.
