Munin на CentOS с Plesk-панелью

Вообще-то я сторонник мониторинга с mrtg + rrd-tool и ручной настройкой, так как графики в таком случае рисуются только при запросе, а все данные хранятся в rrd-файлах, что существенно уменьшает нагрузку при большом количестве серверов и параметров. Однако, в отдельном случае, быстрее и проще настроить munin, он по умолчанию генерирует все графики каждые 5 минут. Пример настройки на CentOS 5.5 с установленной Plesk-панелью.
Munin так же можно настроить на отрисовку графиков по запросу, об этом в самом конце.


Для начала, ставим репозиторий rpmforge.
Устанавливаем необходимые пакеты:

yum -y install munin munin-node

Переходим к настройке мониторинга. Так как в первую очередь меня интересовало мониторить apache и mysql, ну и до кучи bind, то необходимо включить нужные плагины. В случае мониторинга bind, есть несколько вариантов, я остановился на одном из них — bind9_rndc.
Создаем симвлические ссылки:

cd /etc/munin/plugins/
ln -s /usr/share/munin/plugins/apache_* ./
ln -s /usr/share/munin/plugins/mysql_* ./
ln -s /usr/share/munin/plugins/bind9_rndc ./

Редактируем конфиг apache — /etc/httpd/conf/httpd.conf , ищем строки, раскомментируем, меняем — должно получится вот так:

LoadModule status_module modules/mod_status.so
ServerSignature On
<Location /server-status>
  SetHandler server-status
  Order deny,allow
  Deny from all
  Allow from 127.0.0.1 ::1
</Location>

в файле /etc/httpd/conf.d/munin.conf делаем корректировку на предмет доступа, кому как удобно, можно и по логину с паролем, мне удобнее по IP, добавляем, заменив my_ip_address на свой ip-адрес:

<Directory /var/www/munin/cgi/>
  Order Deny,Allow
  Deny from all
  Allow from my_ip_address
</Directory>

<Directory /var/www/munin/>
  Order Deny,Allow
  Deny from all
  Allow from my_ip_address
</Directory>

перезапускаем apache — /etc/init.d/httpd restart

Редактируем /etc/munin/munin.conf

[имя_сервера]
  address 127.0.0.1
  use_node_name yes

Если необходимо мониторить несколько машин, добавляем соответствующие ноды. На этих машинах надо будет разрешить доступ на порт 4949, и в конфиг ноды прописать IP с которого будет обращатся munin.
Собственно на этом настройка munin завершена, осталось настроить munin-node.
Хочется добавить, что мониторинг работает как client-server, то есть client опрашивает все указанные ноды (nodes), в наше случае, нода будет одна, локальный сервер.
Редактирует /etc/munin/munin-node.conf , добавляем:

host_name имя_сервера

обращаем внимание на

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

именно здесь и придется вписать IP-адрес, если munin обращается с другой машины, в нашем случае ничего менять не надо.

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

[mysql*]
env.mysqlopts -u admin -pПароль #пароль admin-а к mysql - для Plesk соответствует паролю на панель.
env.mysqladmin /usr/bin/mysqladmin
env.mysqlshow /usr/bin/mysqlshow

[apache*]
env.ports 80
env.url http://localhost/server-status?auto

[bind9_rndc]
user root
env.querystats /var/cache/bind/named.stats

меняем права на файл:

chmod 640 /etc/munin/plugin-conf.d/munin-node

все-таки у нас там пароль в открытом виде.

Надо еще подредактировать файл настроек bind-а, для этого в секцию options добавляем:

statistics-file "/var/cache/bind/named.stats";

Хочу заметить, что в Plesk-панели, bind работает в chroot окружении в папке /var/named/run-root/ , соответственно, все пути будут относительно этой папки. Иногда сталкивался что rndc глючит с путями, поэтому создаю сим-линки и в пути от корня.

cd /var/named/run-root/var
mkdir -p cache/bind
chown named:named cache/bind
chown named:named cache
cd /var/named/run-root/var/cache/bind
touch named.stats
chown named:named named.stats
cd /var/cache/
mkdir bind
chown named:named bind
cd bind/
ln -s /var/named/run-root/var/cache/bind/named.stats ./
cd /var/run
ln -s /var/named/run-root/var/cache/bind/named.stats ./
cd /var/named/run-root/var/run
ln -s /var/named/run-root/var/cache/bind/named.stats ./

Далее перезапускаем bind — /etc/init.d/named restart

Мне пришлось еще поправить файл /etc/cron.d/munin из за того что у меня русская локаль и при отрисовке графиков, русские буквы не отрисовывались правильно:
*/5 * * * * munin LANG=C test -x /usr/bin/munin-cron && LANG=C /usr/bin/munin-cron

Вот и все, теперь достаточно зайти на http://адрес_вашего_сервера/munin/ и Вы сможете увидет статистику по многим параметрам сервера.
apache_accesses-day
bind9_rndc-day
cpu-day
memory-day
mysql_bytes-day

Отрисовка графиков по запросу

Для этого изменим некоторые параметры в конфигурации, редактируем /etc/munin/munin.conf, добавляем строки:

graph_strategy cgi
cgiurl_graph /munin/cgi/munin-cgi-graph

редактируем /etc/logrotate.d/munin , меняем

create 640 munin adm

на

create 660 munin apache

так же, необходимо поменять права на некоторые файлы:

chgrp apache /usr/share/munin/munin-graph
chgrp apache /var/log/munin /var/log/munin/munin-graph.log
chmod g+w /var/log/munin /var/log/munin/munin-graph.log
chgrp -R apache /var/www/munin/ваш_домен
chmod -R g+w /var/www/munin/ваш_домен

И наконец, необходимо за комментировать строчку в файле /usr/bin/munin-cron содержащую

/usr/share/munin/munin-graph

Теперь все графики будут создаваться при запросе, что существенно сократит потребление ресурсов при большом объеме графиков.

Удачи в настройках.
© shadow_alone