Мониторинг системы на базе Munin
Материал из Shinkei.ru UNIX doc&howto
Munin - средство мониторинга, доступное также в портах FreeBSD. Munin собирает информацию о жизненно важных процессах и состоянии системы и рисует всё это на графиках по дням, неделям, месяцам и годам.[1] В отличии от mrtg, Munin представляет собой полностью законченное решение на базе rrd, включая в себя множество плагинов. Так же munin позволяет прогнозировать например расход трафика или увеличение использования оперативной памяти.
Munin состоит из двух частей
- коллектора информации (собирает информацию с нод, ведёт базу и рисует графики), своеобразный сервер, аггрегатор.
- ноды (собирает информацию для коллектора, запускается непосредственно на обслуживаемом хосте), т.е. клиентская часть.
Содержание |
Установка ноды
cd /usr/ports/sysutils/munin-node/ make install distclean
Порт потянет за собой зависимости и спросит пару вопросов при установке (на них надо отвечать "y"):[2]
You need a group "munin". Would you like me to create it [y]? y ... Would you like me to set up log rotation [y]? y
Далее редактируем ee /etc/rc.conf и добавляем туда:
munin_node_enable="YES"
Конфигурация ноды
ee /usr/local/etc/munin/munin-node.conf
Самое главное, что необходимо поменять в конфигурации - список разрешенных адресов. По умолчанию разрешён только localhost для доступа к ноде. Если munin-main сервер (коллектор) запускается на текущей машине - этого достаточно, если на другой машине - необходимо прописать адрес удалённой машины,[3] на которой запущен munin-main. В моей инсталляции сервер будет находиться на другой машине - прописываю его адрес:
allow ^192\.168\.15\.2$
Далее запускаем процесс munin-node:
/usr/local/etc/rc.d/munin-node.sh start
После запуска munin-node можно проверить работоспособность демона:
telnet localhost 4949 Trying 127.0.0.1... Connected to localhost.shinkei.ru. Escape character is '^]'. # munin node at melchior.shinkei.ru. version munins node on melchior.shinkei.ru. version: 1.2.6 fetch netstat active.value 285907 passive.value 406554 failed.value 4 established.value 673890 resets.value 259 resets.value 0 . quit
Установка munin-main (коллектора)
Munin-main - сервер, который идёт отдельно от нод, собирает данные, рисует графики. Он должен быть установлен только на центральной машине,[4] которая будет опрашивать ноды. Сервер устанавливается из портов следующей командой:
cd /usr/ports/sysutils/munin-main make install distclean
Скрипт спросит пару вопросов относительно нужных ему пользователей. На все лучше соглашаться:
You need a group "munin". Would you like me to create it [y]? y Done. You need a user "munin". Would you like me to create it [y]? y
У munin-main есть конфигурационный файл, который содержит IP адреса нод и некоторые вопросы графического оформления. Для добавления нод кроме той, что крутится локально, необходимо отредактировать файл:
ee /usr/local/etc/munin/munin.conf
Директория по умолчанию, куда munin-main кладёт графику и html файлы - /usr/local/www/munin. Для доступа к ней необходимо иметь настроенный web сервер и виртуальный хост, описывающий данную директорию. Так же необходимы особые права на данную директорию:
chown -R munin:munin /usr/local/www/munin/
Добавление нод к дереву munin-main
В файле munin.conf уже есть ветка, содержащая локальную машину (localhost).
# a simple host tree [melchior.shinkei.ru] address 127.0.0.1 use_node_name yes
Для добавления других нод, скопируйте уже существующий раздел про localhost и пропишите IP и имена машин, на которых запущены munin-node:
# a simple host tree [melchior.shinkei.ru] address 127.0.0.1 use_node_name yes [balthasar.shinkei.ru] address 192.168.15.1 use_node_name yes [caspar.shinkei.ru] address 192.168.15.4 use_node_name yes
Таким образом munin-main узнает о машинах,[5] где запущены munin-node и будет собирать с них информацию.
Запуск munin-main
Munin-main не запускается как демон и не имеет стартовых скриптов. Он надеется на cron. Таким образом необходимо добавить правило в cron для периодического запуска munin-main:
su munin crontab -e
И добавим задание, если его ещё нет:
MAILTO=admin@example.com */5 * * * * /usr/local/bin/munin-cron
Вот и всё. Если всё правильно настроено, результат должен быть примерно таким как на http://stat.shinkei.ru/munin/ У меня с первого раза не завелось. Благодаря cron, который при выполении скрипта сообщил по e-mail об ошибке, удалось быстро исправить ситуацию (потребовался модуль perl - p5-DateTime-HiRes-0.01:
cd /usr/ports/devel/p5-DateTime-HiRes make install clean
Пример конфигурации apache
Где-нибудь в конфигурационном файле httpd.conf в самом конце можно записать такую конструкцию:
Alias /munin-stat/ "/usr/local/www/munin/" <Directory "/usr/local/www/munin"> Options -Indexes MultiViews FollowSymlinks AllowOverride None Order allow,deny Allow from all </Directory>
После этого перезапустить apache командой
apachectl restart
и глядеть графики, используя адрес http://IP_адрес_сервера/munin-stat/
Дополнительно
- Сайт проекта: http://munin.projects.linpro.no/
- Обсуждение: http://shinkei.ru/node/5#comment-form
