/usr/ports/sysutils/munin-main/pkg-descr
Munin network-wide graphing framework (node)

Munin is a tool for graphing all sorts of information about one or more servers and displaying it in a web interface. It uses the excellent
RRDTool (written by Tobi Oetiker) and is written in Perl. Munin has a master/node architecture. The master connects to all the nodes at regular
intervals, and asks them for data. It then stores the data in RRD-files, and (if needed) updates the graphs. One of the main goals have been ease
of creating own "plugins" (graphs).

This is the collector. It is installed on the machine that shall collect and display performance data.
WWW разработчика


В двух словах и по-русски. Munin, программа на перле, функционально состоит из двух частей:

munin-main - периодически запускаемый по крону скрипт-сборщик информации, который:

  • Опрашивает сервера, перечисленные у него в конфиге.
  • Заносит данные в rrd-базу (каждый параметр в отдельный файл).
  • Создает дерево статических html-файлов и картинок с графиками.
  • Отправляет по почте сообщения о превышении параметров (или при невозможности получения этих параметров).
  • и munin-node - демон (net-server), который:

  • Слушает указанный порт (по-умолчанию 4949) и принимает запросы в соответствии с настройками правил доступа
  • Запускает локальные скрипты, поставляющие данные в систему

  • Образцы различных скриптов:
    healthd_
    mail-nginx_127_0_0_1-day.png
    nginx_status
    munin-graph.diff
    Ping a multiple hosts
    Zfs datasets status


    По большому счету, вызываемый скрипт должен:
  • Выполняться в консоли.
  • Реагировать на параметр "config".
  • В случае отсутствия параметров, выдавать имена переменных и их значения. Аналогично mrtg, только тут числа не обязательно должны быть целыми.


  • В запускаемом на стороне munin-node скрипте, кроме отображаемых параметров, можно указать опасные
    и критические значения параметров, по достижении которых сборщик (munin-main) отправит письмо по указанным в munin.conf контактам.

    Фрагмент исполняемого файла плагина:
    if [ "$1" = "config" ]; then
    case $what in
            TEMP)
                    echo 'graph_title Motherboard Temperature'
                    echo 'graph_order TEMP0 TEMP2 TEMP1'
                    echo 'graph_category sensors'
                    echo 'graph_vlabel C'
                    echo 'graph_scale no'
                    echo 'TEMP0.label Temperature 1'
                    echo 'TEMP1.label Temperature 2'
                    echo 'TEMP2.label Temperature 3'
                    echo 'TEMP2.warning :74'
                    echo 'TEMP2.critical :84'
                    exit 0
    
  • Начиная с версии 1.4 - munin умеет отправлять почтовые извещения о достижении определенным параметром критического значения. Правда, на нынешнем этапе достаточно много ложных срабатываний: например, при единичном сбое (таймауте) - программа формирует сообщение о потере связи, и через некоторое время - приходит сообщение, что "Все ОК", хотя, на мой взгляд, более правильно было бы отправлять сообщение в случае N сбоев подряд.
    Для использования этой возможности необходимо указать e-mail адрес отправки сообщения в конфигурационном файле munin-main (образец там есть) и параметр в скрипте на стороне munin-node, исходя из которого принимается решение о том, достигло значение критического, или еще нет (TEMP2.critical в примере выше).