- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
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:
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.