Вы здесь

Мониторинг php-fpm с помощью Zabbix

Для мониторинга обработчика PHP - PHP-FPM (в связке с nginx) я использую Zabbix, и шаблон для него, от китайского автора netkiller.

Ссылка на шаблон
Github

Файл шаблона zbx_export_templates.xml для Zabbix 3.2 у меня не загрузился, судя по всему из-за несоответствия версий (у меня стоит 3.4.6), поэтому нужные мне элементы я создал вручную. Мой шаблон можете скачать по ссылке внизу поста.

Настройка мониторинга PHP-FPM

1. В основном файле конфигурации PHP-FPM (по умолчанию - /etc/php-fpm.d/www.conf) нужно раскомментировать следующие строки (убрать ; перед началом строки):
pm.status_path = /status
ping/ping/ = /ping

и перезапустить php-fpm

  1. systemctl reload php-fpm

2. Теперь в конфигурационный файл Nginx (/etc/nginx/nginx.conf ) нужно добавить два location, чтобы он проксировал статистику по адресу http://127.0.0.1/status (вместо локального адреса подставьте ваш IP или домен)

  1. location /status {
  2. stub_status on;
  3. access_log off;
  4. allow 127.0.0.1; # тут укажите IP хоста, с которого хотите смотреть или мониторить статистику.
  5. deny all;
  6. }
  7. location ~ ^/(status|ping)$ {
  8. access_log off;
  9. allow 127.0.0.1;
  10. deny all;
  11. fastcgi_pass 127.0.0.1:9000;
  12. fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
  13. include fastcgi_params;
  14. }

Обратите внимание что в директике allow нужно указать ip адреса хостов, с которых хотите смотреть статистику и мониторить.
Перечитываем конфиг nginx:

  1. systemctl reload nginx

После вышеуказанных настроек у вас должен по адресу http://127.0.0.1/status окно статистики примерно такого вида:

  1. pool: www
  2. process manager: ondemand
  3. start time: 08/Aug/2018:18:14:19 +0000
  4. start since: 479272
  5. accepted conn: 1388458
  6. listen queue: 0
  7. max listen queue: 18
  8. listen queue len: 128
  9. idle processes: 11
  10. active processes: 3
  11. total processes: 14
  12. max active processes: 23
  13. max children reached: 0
  14. slow requests: 0



Настройка Zabbix


Настройка Zabbix - агента

После установки агента на целевом хосте, в каталоге /etc/zabbix/ создаем папку scripts и в ней файл php-fpm.sh со следующим содержимым:

  1. #!/bin/bash
  2. ##################################################
  3. # AUTHOR: Neo <netkiller@msn.com>
  4. # WEBSITE: http://www.netkiller.cn
  5. # Description:zabbix 通过 status 模块监控 php-fpm
  6. # Note:Zabbix 3.2
  7. # DateTime: 2016-11-22
  8. ##################################################
  9.  
  10. HOST="localhost"
  11. PORT="80"
  12. status="status"
  13.  
  14. function query() {
  15. curl -s http://${HOST}:${PORT}/${status} | grep "$1" | cut -d : -f 2 | awk '{print $1}'
  16. }
  17.  
  18. if [ $# == 0 ]; then
  19. echo $"Usage $0 \"{pool|process manager|start time|start since|accepted conn|listen queue|max listen queue|listen queue len|idle processes|active processes|total processes|max active processes|max children reached|slow requests}\""
  20. exit
  21. else
  22. query "$1"
  23. fi

Измените значение переменной HOST и PORT на свои.

Этот же файл на github.

Добавляем в /etc/zabbix/zabbix_agentd.conf в самый конец строки с нашими параметрами:

  1. UserParameter=php.fpm.ping,/etc/zabbix/scripts/php-fpm.sh
  2. UserParameter=php-fpm.status[*],/etc/zabbix/scripts/php-fpm.sh $1

и рестартуем агент.


Настройка Zabbix - сервера

Итак, после добавления узла в Zabbix, заходим в Настройки - Узлы сети, выбираем наш узел, переходим на вкладку Элементы данных, в правом углу жмём - Создать новый элемент.

Имя: php-fpm status $1
Тип: Zabbix-агент
Ключ: php-fpm.status[listen-queue]
Тип информации: Целое положительное

Остальные параметры можно оставить по умолчанию.
По аналогии создаем остальные элементы - меняется только значение в поле ключ, которое в квадратных скобках (listen-queue, max listen queue и т.д)

Таким образом, zabbix - агент будет запускать скрипт php-fpm.sh с нужным нам параметром, который указан в поле Ключ в квадратных скобках. Скрипт будет обращаться к странице нашего хоста по пути /status, парсить возвращенную xml - страницу, и передавать данные на сервер.

ВложениеРазмер
Файл Файл шаблона для Zabbix12.69 КБ

Комментарии

Спасибо за статью! Хочу поделиться скриптом и шаблоном для автоматического обнаружения пулов PHP-FPM и их дальнейшего мониторинга для Zabbix 4.0+ https://github.com/rvalitov/zabbix-php-fpm
Работает со всеми типам пулов (dynamic, static, ondemand), имеет все необходимые скрины и триггеры.
Надеюсь, что кому-нибудь это пригодится

Также рекомендуем