Мониторинг PHP-FPM в Zabbix: установка и настройка (Debian/Ubuntu)

Мониторинг PHP-FPM в Zabbix: установка и настройка (Debian/Ubuntu)

Стандартный мониторинг 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):

  1. Добавьте или раскомментируйте строку: pm.status_path = /php-fpm-status
  2. Перезапустите службу: sudo systemctl restart php8.3-fpm

4. Настройка в панели Zabbix

  1. Импорт шаблона: Перейдите в Configuration → Templates → Import. Выберите файл zabbix_php_fpm_template_4.0.xml из распакованного ранее архива (из папки /tmp/zabbix-php-fpm-files).
  2. Привязка: Перейдите в настройки нужного узла сети (Host) и добавьте шаблон Template App PHP-FPM by Ramil Valitov.
  3. Макросы: Если вы изменили путь к странице статуса в пункте 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 и сможете вовремя заметить нехватку воркеров или рост очереди запросов.

Комментарии

Комментариев пока нет. Почему бы ’Вам не начать обсуждение?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *