Стало быть появилась нужда в статистике. Я особо не выбирал, взял munin и начал установку. Понравилось:
- клиент-серверное ПО
- 194 диагностических плагина в стандартной поставке, которые подключаем по мере потребности
- отчёты в виде графиков на одной странице
- при обилии серверов-удобная навигация в отчётах
Всё ниже написаное я делал на серверах под FreeBSD 8.2, munin 1.4.6
Установка и настройка munin-node
portinstall munin-node
Ждём пока установятся перловые зависимости, и собственно сам munin. Кстати их будет много. На серваке, где я установил munin-node и munin-master у меня добавилось 97 новых пакетов. Настрока node предельно проста
cd /usr/local/etc/munin
В munin-node.conf указываем адрес сервера, который будет брать данные
allow ^xx\.xx\.xx\.xx$
Можно указать host если нужно, чтоб munin висел на определённом интерфейсе. Переходим в в папку plugins, где и подключаем нужные плагины. Я здесь укажу лишь те, которые у меня подключены на разных серверах, но суть-то не меняется
ln -s /usr/local/share/munin/plugins/cpu cpu ln -s /usr/local/share/munin/plugins/if_ if_net0 ln -s /usr/local/share/munin/plugins/iostat iostat ln -s /usr/local/share/munin/plugins/load load ln -s /usr/local/share/munin/plugins/memcached_ memcached_bytes ln -s /usr/local/share/munin/plugins/memcached_ memcached_rates ln -s /usr/local/share/munin/plugins/memory memory ln -s /usr/local/share/munin/plugins/mysql_bytes mysql_bytes ln -s /usr/local/share/munin/plugins/mysql_queries mysql_queries ln -s /usr/local/share/munin/plugins/mysql_slowqueries mysql_slowqueries ln -s /usr/local/share/munin/plugins/mysql_threads mysql_threads ln -s /usr/local/share/munin/plugins/mysql_3307_bytes mysql_3307_bytes ln -s /usr/local/share/munin/plugins/mysql_3307_queries mysql_3307_queries ln -s /usr/local/share/munin/plugins/mysql_3307_slowqueries mysql_3307_slowqueries ln -s /usr/local/share/munin/plugins/mysql_3307_threads mysql_3307_threads ln -s /usr/local/share/munin/plugins/mysql_3308_bytes mysql_3308_bytes ln -s /usr/local/share/munin/plugins/mysql_3308_queries mysql_3308_queries ln -s /usr/local/share/munin/plugins/mysql_3308_slowqueries mysql_3308_slowqueries ln -s /usr/local/share/munin/plugins/mysql_3308_threads mysql_3308_threads ln -s /usr/local/share/munin/plugins/nginx_request nginx_request ln -s /usr/local/share/munin/plugins/nginx_status nginx_status ln -s /usr/local/share/munin/plugins/swap swap ln -s /usr/local/share/munin/plugins/systat systat ln -s /usr/local/share/munin/plugins/uptime uptime ln -s /usr/local/share/munin/plugins/vmstat vmstat
Внимание! Если имя подключаемого плагина заканчивается на «_», то это означает, что в имени линка после «_» должен быть параметр, как в случае с if_, memcached_ и т.д. Далее в rc.conf.local добавляем munin_node_enable=»YES» и стартуем. Список подключённых/отключённых модулей можно посмотреть командой
munin-node-configure
Установка и настройка munin-master
Ставим на том же сервере где и установили клиент или на другом. Перед установкой нужно разрешить cron для пользователя munin, иначе ругнется
crontab: you (munin) are not allowed to use this program*** Error code 1
Stop in /usr/ports/sysutils/munin-master.*** Error code 1
Stop in /usr/ports/sysutils/munin-master.** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade20111207-7314-1v9hqdn-0 env UPGRADE_TOOL=portupgrade UPGRADE_PORT=munin-master-1.4.6 UPGRADE_PORT_VER=1.4.6 make -DFORCE_PKG_REGISTER reinstall
vi /var/cron/allow
Добавили, записали
portinstall munin-master
Настройка опций в munin.conf предельно ясно
dbdir /var/db/munin htmldir /usr/home/stat/www logdir /var/log/munin rundir /var/run/munin tmpldir /usr/local/etc/munin/templates includedir /usr/local/etc/munin/munin-conf.d
dbdir, htmldir,logdir,rundir — должны быть доступны для записи пользователю munin.
[server1] use_node_name yes address yy.yy.yy.yy
Указываем с какого сервера брать статистику. Записываем, и ждем когда в htmldir появятся отчёты. Настройку конфига apache/nginx’а для отображения графиков я опускаю, там по сути делать нечего
Теперь самое интересное 🙂 Ловля глюков
memcached
Мастер не смог получить инфу от ноды о мемкеше, в логах ошибка
Can’t use an undefined value as a HASH reference at /usr/local/etc/munin/plugins/memcached_conns line 202.Service ‘memcached_conns’ exited with status 2/0.Error output from memcached_rates:Can’t exec «/usr/local/etc/munin/plugins/memcached_conns»: No such file or directory at /usr/local/lib/perl5/site_perl/5.12.4/Munin/Node/Service.pm line 215, <STDIN> line 13.Service ‘memcached_rates’ exited with status 42/0
Лечится установкой p5-Cache-Memcached на мастере
mysql
Это отдельная песня. Если у вас один сервер mysql и висит он на стандартном 3306 порту или работает через стандартный сокет, то проблем быть не должно. Но это не мой случай. Мне пришлось развесить его на 3306, 3307, 3308 порты. Соответственно как снимать статистику? Выход следующий
cd /usr/local/share/munin/plugins ln -s mysql_bytes mysql_3307_bytes ln -s mysql_queries mysql_3307_queries ln -s mysql_slowqueries mysql_3307_slowqueries ln -s mysql_threades mysql_3307_threades ln -s mysql_bytes mysql_3308_bytes ln -s mysql_queries mysql_3308_queries ln -s mysql_slowqueries mysql_3308_slowqueries ln -s mysql_threades mysql_3308_threades
Теперь понятно, что это были за линки с номерами портов для mysql в папке plugins. Да, получается линк на линк. Теперь в plugins.conf пишем
[mysql_*] user root env.mysqladmin /usr/local/bin/mysqladmin env.mysqlshow /usr/local/bin/mysqlshow env.mysqlopts --defaults-extra-file=/usr/local/etc/munin/plugin-conf.d/mysql3306.conf [mysql3307*] user root env.mysqladmin /usr/local/bin/mysqladmin env.mysqlshow /usr/local/bin/mysqlshow env.mysqlopts --defaults-extra-file=/usr/local/etc/munin/plugin-conf.d/mysql3307.conf [mysql3308*] user root env.mysqladmin /usr/local/bin/mysqladmin env.mysqlshow /usr/local/bin/mysqlshow env.mysqlopts --defaults-extra-file=/usr/local/etc/munin/plugin-conf.d/mysql3308.conf
В mysql3306.conf указываем
[client] env.socket = /tmp/mysql3306.sock env.user = statuser env.password = ********
Аналогично делаем для mysql3307.conf и mysql3308.conf незабывая указывать сокеты через которые работают mysql’и. Ясно, что конфиги приведены для случая, когда mysql и munin-noda установлены на одном сервере. Это первый вариант решения вопроса. Второй вариант описан в этой статье. Не знаю-не пробовал, если вы попробуете, напишите ваши впечатления
nginx
Для получения графиков о работе nginx’а необходимо в nginx.conf в секции http добавить
server { listen 127.0.0.1:80; server_name localhost; location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } }
nginx -s reload
Однако графики были пусты. Смотрим в логи и видим ошибку
Error output from nginx_request:Can’t locate object method «new» via package «LWP::UserAgent» at /usr/local/etc/munin/plugins/nginx_request line 106.Service ‘nginx_request’ exited with status 255/0.Error output from nginx_status:Can’t locate object method «new» via package «LWP::UserAgent» at /usr/local/etc/munin/plugins/nginx_status line 109.Service ‘nginx_status’ exited with status 2/0.
Лечится установкой p5-libwww на мастере.
Далее, если мы рассмотрим скрипты nginx_request и nginx_status то увидим, что в строки
my $URL = exists $ENV{'url'} ? $ENV{'url'} :
разные. Я в nginx_request заменил $fqdn на localhost и график в риквестами появился. Досадный глюк, при апдейте нужно будет не забыть поменять
php-fpm
По умочанию модулей для диагностики php-fpm в munin нет. Но их можно скачать с гита. Пример с подключением там же. Основное, на что следует обратить внимание:
- должна быть доступна /status
- для FreeBSD процесс php-fpm, а не php5-fpm
тоесть заглянуть в каждый скрипт и поправить значения на нужные
П.С.
Статья получилась немного кучерявой, однако думаю основное я указал. Буду пополнять по мере того, какие плагины буду подключать и какие глюки при этом будут вылазить. Если кто-либо имеет что добавить к выше написаному, присылайте, вставлю для полноты картины с копирайтом естественно и ссылкой на ваш сайт. Рекомендую также заглянуть в середину каждого плагина, что может навести на мысль и значительно облегчить настройку

- Системный администратор с 2000 года
- Участник Хабр Q&A и cyberforum
- Кейсы