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.
В двух словах и по-русски. Munin, программа на перле, функционально состоит из двух частей:
munin-main - периодически запускаемый по крону скрипт-сборщик информации, который:
Опрашивает сервера, перечисленные у него в конфиге.
Заносит данные в rrd-базу (каждый параметр в отдельный файл).
Создает дерево статических html-файлов и картинок с графиками.
Отправляет по почте сообщения о превышении параметров (или при невозможности получения этих параметров).
и munin-node - демон (net-server), который:
Слушает указанный порт (по-умолчанию 4949) и принимает запросы в
соответствии с настройками правил доступа
Запускает локальные скрипты, поставляющие данные в систему
В случае отсутствия параметров, выдавать имена переменных и их значения.
Аналогично 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 в примере выше).