Pull to refresh

Munin — мониторинг сети это просто!

Configuring Linux *

В жизни каждого системного администратора рано или поздно наступает момент, когда глаз и рук уже не хватает уследить за всеми серверами, то там, то там возникают какие-то проблемы, а для решения их очень хочется узнать что же было «до этого». И именно здесь на выручку приходят они — вел
икие и ужасные системы мониторинга. Долгое время я пользовался Nagios, и до сих пор, при всём удобстве, иначе как монстрообразным назвать не могу. В итоге реально использовались лишь 10% возможностей этой прекрасной системы. Всё изменилось, когда я наткнулся на Munin — прекрасное решение для мониторинга небольших сетей.

Сама система состоит из двух независимых частей: сервера (сам munin), устанавливается на одну машину, куда и будут собираться все данные, и небольшого демона munin-node, который устанавливается на машины, которые мы будем мониторить. Сам этот демон представляет собой небольшой Perl-скрипт, который слушает 4949 порт с помощью Net::Server. При своём запуске он просматривает плагины, установленные в /etc/munin/plugins и запоминает их имена. Раз в 5 минут сервер munin подключается ко всем нодам, получает информацию от всех плагинов и сохраняет себе в базы rrdtool. Таким образом, для работы Munin'а не нужен даже MySQL.

Плагины — самое вкусное что есть в Munin'е. Невероятная простота их реализации позволяет написать плагины для всего, что хотите в системе затратив минимум времени на чтение документации. Видимо это и объясняет то, что сравнительно молодая система уже обросла большим количеством готовых плагинов.
Фактически, каждый плагин — исполняемый файл, который на выходе должен выдать текущие значения параметров.
Проще всего разобрать это на простейшем примере.

Для руководства сети очень нравится когда вся «жизнедеятельность» сети представлена понятными графиками, позволяющими им быстро оценить происходящее. И первый же график, который меня попросили сделать был количеством людей, сейчас подключенных в Интернет.
В качестве NAS используется FreeBSD (MPD). Клиенты подключены по PPTP, так что количество существующих ng интерфейсов в точности соответствует количеству абонентов онлайн (благо mpd5 научился «подметать лишние интерфейсы). Другими словами мы можем получить требуемое значение командой
ifconfig | grep ^ng | wc -l

Всё. этого достаточно для реализации плагина. В данном случае для реализации плагина нам достаточно sh (хотя никто не запрещает для написания плагинов использовать bash/perl/ruby/что-вы-хотите-и-знаете).
Вот код самого плагина:

#!/bin/sh
#
# Плагин для мониторинга количества пользователей биллинга
#

if [ „$1“ = „config“ ]; then
    echo 'graph_title Billing users'
    echo 'graph_vlabel users'
    echo 'graph_noscale true'
    echo 'graph_category Billing'
    echo 'users.label users'
    echo 'graph_info This graph shows amount of users connected to Internet';
    echo 'users.info Users amount'
    exit 0
fi

echo -n „users.value “
echo `/sbin/ifconfig | /usr/bin/grep '\-->' | wc -l`


Таким образом мы видим, что единственный параметр обрабатываемый скриптом — магическое слово config. Именно его передает плагину munin при первом запросе. В ответ на него скрипт должен возвратить спецификации будущего графика для rrdtool. За полной документацией я отсылаю Вас к замечательному руководству по написанию плагинов для Munin, сейчас же я разберу только используемые мной параметры.

graph_title Billing users — просто заголовок графика. Обращаю Ваше внимание, что по крайней мере на FreeBSD, rrdtool некорректно работает с великим и могучим, так что приходится обходиться английским;
graph_vlabel users — по вертикальной оси откладываем значение параметра users;
graph_noscale true — запрещаем rrdtool масштабировать график. Это полезно для того чтобы по оси откладывались реальные значения (2000 пользователей вместо 2*103);
graph_category Billing — категория графика. Графики из одной категории будут сформированы на одной странице;
users.label users — название оси „users“. Оно должно быть достаточно коротким чтобы уместиться на графике;
users.info Users amount — описание оси;

Крайне приятным открытием для меня стало существование munin-node-win, что позволяет мониторить и Windows-сервера, кои, пусть в небольшом количестве, но присутствуют у меня.

И в завершение, пару слов, о том что собственно на выходе. Я думаю демо скажет лучше тысячи слов — на выходе у нас сгенерированный html без единого намёка на скрипты.

Полезные ссылки
muninexchange.projects.linpro.no — коллекция готовых плагинов для Munin.
Сравнение систем мониторинга сети — крайне информативная таблица в Википедии, позволяющая быстро оценить насколько Вам подходит та или иная система мониторинга.
linux-ru.blogspot.com/2007/02/munin.html — об установке Munin на русском.
munin.projects.linpro.no/wiki/HowToContactNagios — дружим Nagios и Munin
Tags:
Hubs:
Total votes 37: ↑33 and ↓4 +29
Views 105K
Comments Comments 42