Munin

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 18:05, 6 июня 2018.
Munin
Munin open project logo.svg.png
Создатели: Джимми Олсен
Разработчики: Джимми Олсен
Состояние разработки: Поддерживается
Написана на: Perl
Платформа: UNIX-подобные
Тип ПО: Мониторинг сети
Лицензия: GNU GPL (General Public License)
Веб-сайт munin-monitoring.org
Munin – свободное приложение с открытым исходным кодом для мониторинга ПО компьютерной системы, сети и инфраструктуры. Оно предлагает услуги отслеживания и оповещения для серверов, коммутаторов, приложений и т.д. Программа информирует пользователей в первый раз в случае неполадок, и во второй - после решения проблемы.

Munin написана на Perl и использует RRDtool для создания графиков, доступных через веб-интерфейс[Источник 1]. Акцент делается на возможностях Plug and play. К настоящему времени существует около 500 плагинов для мониторинга. Программа предназначена, чтобы системные администраторы могли легко определить "что изменилось за сегодня", если возникает проблема производительности и необходимо проверить ресурсы и их использование.


История

Munin была создан Джимми Олсеном в конце 2003 года на основе RRDTool. После 2005 года развитие замедлилось, но по-прежнему выпускаются актуальные и стабильные версии...

"Его название происходит от скандинавской мифологии. Одного из двух воронов, сообщающих о новостях мира богу Одину, зовут Мунин, а другого зовут Хугин. Мунин олицетворяет память, а Хугин мысль"[Источник 2].

Архитектура

Munin имеет узловую архитектуру, где так называемый мастер соединяется со всеми узлами через регулярные промежутки времени и запрашивает данные, которые затем сохраняет в RRD файл, а также (при необходимости) обновляет графики. Одной из главных целей написания программы - простота создания новых плагинов (в виде графиков).

Плагины

Плагины - это специализированные программы, запрашивающие у узлов текущие данные и описывающие их представление. Существует более 300 плагинов для распределения ядра, более 180 плагинов от 3 официальных участников, и неизвестное число независимых опубликованных плагинов.

Они могут быть написаны на любом скриптовом языке или языке программирования. Все, что они должны сделать, это напечатать разделенные пробелами ключи и значение пар на стандартном выводе. Такая структура значительно упрощает написание плагинов.

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

Фактически, каждый плагин — исполняемый файл, который на выходе должен выдать текущие значения параметров.

Проще всего разобрать это на простейшем примере.

Для руководства сети очень нравится когда вся «жизнедеятельность» сети представлена понятными графиками, позволяющими им быстро оценить происходящее. И первый же график, который меня попросили сделать был количеством людей, сейчас подключенных в Интернет.

В качестве 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 — описание оси;

Источники

  1. Munin FAQ // Munin [2018]. Дата изменения: 11.03.2018. URL: http://munin-monitoring.org/wiki/faq#Q:Whatisrequiredtoinstallmunin (Дата обращения: 28.05.2018).
  2. Munin—the Raven Reports // Linux Journal [2018]. Дата изменения: 01.04.2009. URL: https://www.linuxjournal.com/magazine/muninmdashthe-raven-reports?page=0,0 (Дата обращения: 28.05.2018).