Munin: Мониторинг php-fpm
Jan 19, 2017 21:04 · 340 words · 2 minute read
Давайте разберемся, как отслеживать нагрузку на 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-интерфейсе системы мониторинга.