Munin: Мониторинг php-fpm

Jan 19, 2017 21:04 · 340 words · 2 minute read munin monitoring php-fpm

Давайте разберемся, как отслеживать нагрузку на web-сервер с несколькими сайтами, работающими на php-fpm и отображать собранные метрики на графиках в системе мониторинга Munin!

Считаем, что у нас уже установлен и настроен Munin и все необходимые зависимости. Действия производятся на:

lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 8.6 (jessie)
Release:	8.6
Codename:	jessie

Версия php:

php -v
PHP 7.0.12-1~dotdeb+8.1 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.12-1~dotdeb+8.1, Copyright (c) 1999-2016, by Zend Technologies

Для каждого сайта в каталоге /etc/php/7.0/fpm/pool.d должен быть создан отдельный конфиг примерно следующего содержания:

[letsclearitup]
user = www-data
group = www-data
listen = /run/php/$pool.sock
listen.owner = www-data
listen.group = www-data
pm = ondemand
pm.max_children = 20
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 5000
pm.status_path = /status
ping.path = /ping
request_terminate_timeout = 5
request_slowlog_timeout = 3
access.log = /var/log/php/$pool.access.log
access.format = "%{REMOTE_ADDR}e %{%Y.%m.%d %H:%M:%S}t \"%m %{REQUEST_URI}e%Q%q\" %s %{mili}d %{kilo}M %C%%"
slowlog = /var/log/php/$pool.log.slow
security.limit_extensions = .php .inc

Значения параметров выставляем в соответствии со своими требованиями, главное — чтобы присутствовал параметр pm.status_path = /status. После внесения необходимых изменений в конфигурационные файлы выполняем:

service php7.0-fpm restart

Далее вносим изменения в конфиги сайтов на Nginx, например для сайта letsclearitup.com.ua в файле /etc/nginx/conf.d/letsclearitup.conf добавляем:

...
    location /status {
        fastcgi_pass unix:/run/php/letsclearitup.sock;
        include fastcgi.conf;
        allow 127.0.0.1;
        deny all;
    }
...

и перечитываем конфигурацию:

nginx -s reload

Устанавливаем необходимые плагины для мониторинга php-fpm, для этого переходим в каталог с предустановленными плагинами и скачиваем их:

cd /usr/share/munin/plugins
git clone git://github.com/tjstein/php5-fpm-munin-plugins.git

Делаем плагины исполняемыми:

chmod +x php5-fpm-munin-plugins/phpfpm_*

Подключаем нужные плагины (например, я подключал только 3 из 5) для каждого сайта, который хотим мониторить:

ln -s /usr/share/munin/plugins/php5-fpm-munin-plugins/phpfpm_connections /etc/munin/plugins/phpfpm_letsclearitup_connections
ln -s /usr/share/munin/plugins/php5-fpm-munin-plugins/phpfpm_status /etc/munin/plugins/phpfpm_letsclearitup_status
ln -s /usr/share/munin/plugins/php5-fpm-munin-plugins/phpfpm_processes /etc/munin/plugins/phpfpm_letsclearitup_processes

и

ln -s /usr/share/munin/plugins/php5-fpm-munin-plugins/phpfpm_connections /etc/munin/plugins/phpfpm_animania_connections
ln -s /usr/share/munin/plugins/php5-fpm-munin-plugins/phpfpm_status /etc/munin/plugins/phpfpm_animania_status
ln -s /usr/share/munin/plugins/php5-fpm-munin-plugins/phpfpm_processes /etc/munin/plugins/phpfpm_animania_processes

Правим /etc/munin/plugin-conf.d/munin-node, добавляем следующие секции:

...
[phpfpm_letsclearitup_*]
env.phpbin php-fpm
env.phppool letsclearitup
env.url https://letsclearitup.com.ua/status
 
[phpfpm_animania_*]
env.phpbin php-fpm
env.phppool animania
env.url http://animania.dp.ua/status

И перезапускаем munin-node:

service munin-node restart

Спустя некоторое время графики появятся в web-интерфейсе системы мониторинга.

tweet Share