LXF120:DrBrown2

Материал из Linuxformat.

Перейти к: навигация, поиск

Летите, голуби

Munin Отслеживает тенденции в загрузке сервера, предотвращая нехватку ресурсов до того, как она случится.

Недавно мне попалась программа для мониторинга Munin. Она наблюдает за сервером или несколькими серверами и строит графики изменений в их поведении в долгосрочной перспективе. В Munin используется архитектура «мастер–узел».

На главном узле Munin активизируется раз в пять минут (заботой Cron) и соединяется с утилитой munin-node, работающей на каждом из отслеживаемых узлов. По каждому узлу набор плагинов Munin собирает коллекцию характеристик загрузки сервера – среднюю загрузку, использование памяти, сетевой трафик, использование файловой системы, использование файла подкачки, почтовая активность и многое другое. Данные собираются и представляются в графическом виде в формате, подходящем для их доставки web-сервером системному администратору.

На серверной стороне у Munin есть довольно простой файл конфигурации munin.conf. Вот его минимальная версия:

# Здесь munin держит свою базу данных:
dbdir /var/lib/munin
# Сюда munin будет писать свой HTML-вывод:
htmldir /var/www/munin
# Здесь будут находиться файлы журналов munin:
logdir /var/log/munin
# Далее определяются узлы, подлежащие мониторингу:
[server1.example.com]
address 192.168.1.71
[server2.example.com]
address 192.168.1.73

Для переименования графиков или объединения графиков с разных клиентов есть и более причудливые конструкции.

На ушко…

Просто если вы подзабыли скандинавскую мифологию, напомню, что Хугин и Мунин – это два ворона: первый – мысль, а второй – память. На рассвете они вылетали, путешествовали по миру, узнавая, что происходит на свете, а вечером возвращались, садились на плечи верховному богу Одину и шептали ему на ушко новости.

На клиентских компьютерах программа munin-node слушает соединения на порту 4949 и собирает данные с помощью набора плагинов – скриптов в каталоге /usr/share/munin/plugins. Большинство из них написаны на Perl, есть и сценарии оболочки; вообще они могут быть написаны на любом языке, позволяющем отправлять данные в стандартный вывод. Munin поставляется с большим набором модулей (почти 90 в моем Ubuntu, хотя только около двадцати активированы по умолчанию), а на «бирже плагинов» Munin по адресу http://muninexchange.projects.llnpro.no доступно еще больше.

Розыск в сети

На «бирже» есть поиск по категории, от Amavis (почтовый антивирус) до Yum (менеджер пакетов). Статистику можно собирать на самых различных данных, включающих (навскидку) свободное место на диске, уровень заряда батареи ноутбука, частоту ошибочных HTTP-ответов, температуру процессора, число активных подключений к серверу LDAP, число запросов к серверу DNS в секунду и многое другое.

Графики строятся за период в день, неделю, месяц, год, и главная сила Munin – в долгосрочных графиках, позволяющих легко оценить тенденции. Некоторые модули получают информацию из /proc, другие манипулируют данными от утилит мониторинга ресурсов типа df, NetStat и vmstat.

Рассмотрим плагины более подробно. Этот (сценарий оболочки) отслеживает размер очереди Sendmail:

На «бирже плагинов» Munin множество написанных пользователями модулей; многие предоставляют предпросмотр, как этот.

MSP_QUEUE=/var/spool/mqueue-client
 MTA_QUEUE=/var/spool/mqueue
 if [$mspqueue]; then MSP_QUEUE=$mspqueue ; fi
 if [$mtaqueue]; then MTA_QUEUE=$mspqueue ; fi
 if [ “$1” = “autoconf]; then
 if [ -d ${MSP_QUEUE} -a -d ${MTA_QUEUE} ] ; then
 echo yes
 exit 0
 else
 echo no
 exit 1
 fi
 fi
 if [ “$1” = “config” ]; then
 echo ‘graph_title Sendmail queued mails’
 echo ‘graph_order mails’
 echo ‘graph_vlabel mails in queue’
 echo ‘graph_category sendmail’
 echo ‘mails.label mails’
 exit 0
 fi
 mspmails=`find ${MSP_QUEUE} -type f -name ‘[qQ]*’ 2>/
 dev/null | wc -l`
 mtamails=`find ${MTA_QUEUE} -type f -name ‘[qQ]*’ 2>/dev/
 null | wc -l`
 echo “mails.value `expr ${mspmails} + ${mtamails}`”

Главное, что нужно отметить – модуль, вызванный с аргументом config, выводит текстовое описание графика, с помощью которого внутренняя утилита rrdtool построит его. Если он вызывается без аргумента, то выводит строку вида

mails.value 47

Взглянув на три последние строки скрипта, вы увидите, что он вычисляет результат, просто подсчитывая количество файлов в очередях в каталогах /var/spool/mqueue-client и /var/spool/mqueue. Руководство по написанию и установке модулей можно найти по адресу http://muninprojects.llnpro.no/wiki/HowToWritePlugins.

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию