Мониторинг системы на базе 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/

Дополнительно