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

Munin-monitoring
Munin — сетевая утилита мониторинга потребления ресурсов сервера. Munin опрашивает все компьютеры и помнит все полученные данные, которые предоставляет в виде графиков с помощью веб-интерфейса.
Далее мы рассмотрим установку и минимальную настройку munin-node.
В CentOS я использую пакетный менеджер yum, для которого необходимо добавить репозиторий, содержащий необходимый нам пакет.

CentOS/RHEL 6, 32 Bit (i386):

# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

CentOS/RHEL 6, 64 Bit x86_64):

# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

CentOS/RHEL 5, 32 Bit (i386):

# rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm

CentOS/RHEL 5, 64 Bit (x86_64):

# rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

После этого установим munin-node и необходимые компоненты:

# yum --enablerepo=epel install munin-node rrdtool

Теперь можно заняться настройкой ноды. В подробности углубляться не буду, основные моменты:
1) в /etc/munin/munin-node.conf добавить строки, разрешающие доступ к ноде.

allow ^127\.0\.0\.1$
allow ^::1$
allow ^8\.8\.8\.8$

Обратите внимание на формат записи ip-адреса
2)

# munin-node-configure --suggest

покажет довольно подробную статистику по плагинам, какие активны, какие нет и иногда недостающие компоненты
к примеру:

mysql_ | no | no [Missing dependency Cache::Cache]
ipmi_ | no | no [missing ipmitool command]
apache_accesses | no | no [apache server-status not found. check if mod_status is enabled]
apache_processes | no | no [apache server-status not found. check if mod_status is enabled]
apache_volume | no | no [apache server-status not found. check if mod_status is enabled]
exim_mailstats | no | no ['/usr/sbin/exim -bP log_file_path' returned an error]

и много других

3)

# munin-node-configure --shell

покажет какие плагины можно добавить в систему мониторинга. Запись вида

# munin-node-configure --shell | sh -x

автоматически создаст симлинки на ВСЕ рабочие плагины. Вывод команды:

# munin-node-configure --shell
ln -s '/usr/share/munin/plugins/df_inode' '/etc/munin/plugins/df_inode'
ln -s '/usr/share/munin/plugins/entropy' '/etc/munin/plugins/entropy'
ln -s '/usr/share/munin/plugins/forks' '/etc/munin/plugins/forks'
ln -s '/usr/share/munin/plugins/fw_conntrack' '/etc/munin/plugins/fw_conntrack'
ln -s '/usr/share/munin/plugins/fw_forwarded_local' '/etc/munin/plugins/fw_forwarded_local'
ln -s '/usr/share/munin/plugins/if_err_' '/etc/munin/plugins/if_err_venet0'
ln -s '/usr/share/munin/plugins/interrupts' '/etc/munin/plugins/interrupts'
ln -s '/usr/share/munin/plugins/netstat' '/etc/munin/plugins/netstat'
ln -s '/usr/share/munin/plugins/open_files' '/etc/munin/plugins/open_files'
ln -s '/usr/share/munin/plugins/open_inodes' '/etc/munin/plugins/open_inodes'
ln -s '/usr/share/munin/plugins/proc_pri' '/etc/munin/plugins/proc_pri'
ln -s '/usr/share/munin/plugins/sendmail_mailqueue' '/etc/munin/plugins/sendmail_mailqueue'
ln -s '/usr/share/munin/plugins/sendmail_mailstats' '/etc/munin/plugins/sendmail_mailstats'
ln -s '/usr/share/munin/plugins/sendmail_mailtraffic' '/etc/munin/plugins/sendmail_mailtraffic'
ln -s '/usr/share/munin/plugins/threads' '/etc/munin/plugins/threads'
ln -s '/usr/share/munin/plugins/vmstat' '/etc/munin/plugins/vmstat'

После правки конфигураций и добавления плагинов следует перезапустить ноду:

# service munin-node restart
Stopping Munin Node agents: [ OK ]
Starting Munin Node: [ OK ]

Можно сразу и проверить работоспособность:

# telnet localhost 4949
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
# munin node at localhost.localdomain
#Получаем список активных плагинов
list
cpu df fw_packets if_venet0 load memory nginx_request nginx_status phpfpm_average phpfpm_connections phpfpm_memory phpfpm_processes phpfpm_status processes swap uptime users
#Выходим
quit
Connection closed by foreign host.

Прелесть munin в том, что плагины можно писать самостоятельно. А можно использовать уже написанные кем то. Так и получилось, когда я хотел добавить в список опрашиваемых сервисов php-fpm. На этом остановимся чуть подробнее.

Сами исполняемые файлы плагинов находятся в /usr/share/munin/plugins/, а в /etc/munin/plugins/ только симлинки.
Скачаем плагины для 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_*

Судя по всему автор плагина писал его для Ubuntu, так что придется чуток подправить код:
в /etc/munin/plugins/phpfpm_average заменить

PHP_BIN=${phpbin-"php5-fpm"}

на

PHP_BIN=${phpbin-"php-fpm"}

в /etc/munin/plugins/phpfpm_memory заменить

my $PHP_BIN = exists $ENV{'phpbin'} ? $ENV{'phpbin'} : "php5-fpm";

на

my $PHP_BIN = exists $ENV{'phpbin'} ? $ENV{'phpbin'} : "php-fpm";

в /etc/munin/plugins/phpfpm_processes заменить

PHP_BIN=${phpbin-"php5-fpm"}

на

PHP_BIN=${phpbin-"php-fpm"}

Теперь эти 3 плагина будут работать и отдавать результаты. Проверить можно так:

# cd /etc/munin/plugins && munin-run phpfpm_average
php_average.value 16805888
# munin-run phpfpm_connections
accepted.value 44199
# munin-run phpfpm_processes
php_processes.value 3

Для того, что бы заработали остальные плагины нужно немного больше:
в конфигурационном файле /etc/php-fpm.d/www.conf необходимо раскоментировать строку

pm.status_path = /status

и перезапустить сервис

# service php-fpm restart

В итоге получаем нечто вроде
phpfpm_average-day

phpfpm_status-day

Мониторинг php-fpm с помощью munin: 1 комментарий

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