Мы уже ранее писали об использовании системы мониторинга MRTG, которая изначально создавалась для мониторинга сетевых интерфейсов, но может быть использована и в других целях, например для наблюдения за температурой, почтовым или прокси-сервером.
Однако на этом возможные области применения MRTG не заканчиваются. Далее будет приведено ещё несколько интересных примеров использования MRTG.
Мы будем предполагать, что у нас есть сервер под управлением Ubuntu Server 9.10 и уже настроенный на нём MRTG.
#1 Мониторинг Jabber-сервера ejabberd
Допустим, что у нас есть jabber-сервер под управлением ejabberd, подобный описанному ранее, и мы хотим рисовать графики общего количества пользователей на сервере и количества подключенных пользователей.
В решении задачи нам поможет утилита ejabberdctl, с помощью которой можно получить все необходимые данные, остаётся только "подсунуть" эти данные MRTG. Для этого создадим скрипт /root/scripts/mrtgstat_ejabberd.sh следующего содержания:
#!/bin/sh
# Показываем количество зарегистрированных пользователей
/usr/sbin/ejabberdctl stats registeredusers
# Показываем количество подключенных пользователей
/usr/sbin/ejabberdctl stats onlineusers
# Показываем время работы сервиса
/usr/sbin/ejabberdctl stats uptime-seconds
# Показываем имя хоста
/bin/hostname
Далее в конфигурацию MRTG нужно добавить строки:
Target[ejabberd]: `/root/scripts/mrtgstat_ejabberd.sh`
MaxBytes[ejabberd]: 1
AbsMax[ejabberd]: 1250000
Title[ejabberd]: ejabberd statistics
PageTop[ejabberd]: <h1>ejabberd statistics</h1>
Options[ejabberd]: gauge,nopercent,nobanner
YLegend[ejabberd]: Users per Hour
ShortLegend[ejabberd]: users
Legend1[ejabberd]: Online users
Legend2[ejabberd]: Registered users
Через некоторое время начнёт заполняться график. Он будет выглядеть примерно вот так:

#2 Мониторинг использования диска
Допустим, что нам нужно наблюдать скорости чтения и записи на софтверный RAID-массив md0. Количество считанных и записанных байт можно узнать из вывода команды iostat, а скорости можно получить, наблюдая изменения этих величин с течением времени.
Для начала создадим скрипт /root/scripts/mrtgstat_iostat.sh следующего содержания:
#!/bin/sh
# Этому скрипту в качестве первого параметра передаётся имя устройства,
# данные о котором необходимо получить
# Если имя устройства передано
if [ ! -z ${1} ]; then
# Получаем строку с информацией по устройству
DATA=`iostat -k ${1} | tail -n 2 | head -n 1`
# Отображаем количество записанных байт
echo ${DATA} | awk '{ print $6; }'
# Отображаем количество считанных байт
echo ${DATA} | awk '{ print $5; }'
# Отображаем временную метку в формате юникс
date +%s
# Отображаем имя хоста
hostname
fi
Далее добавляем в конфигурацию MRTG строки:
Target[iostat_md0]: `/root/scripts/mrtgstat_iostat.sh md0`
MaxBytes[iostat_md0]: 1
Title[iostat_md0]: md0 r/w statistics
PageTop[iostat_md0]: <h1>md0 r/w statistics</h1>
AbsMax[iostat_md0]: 1250000
Options[iostat_md0]: integer,nopercent,nobanner
YLegend[iostat_md0]: kilobytes per second
ShortLegend[iostat_md0]: kbps
Legend1[iostat_md0]: Read kilobytes per second
Legend2[iostat_md0]: Write kilobytes per second
Получаемый график будет выглядеть примерно вот так:

#3 Мониторинг времени отклика хоста
Достаточно хорошей характеристикой канала в Интернет является время отклика от некоего хоста с заведомо быстрым откликом.
Наблюдать за качеством канала можно, производя периодические замеры времени отклика. Попробуем нарисовать графики максимального и минимального времени отклика заданного хоста в зависимости от времени.
В Debian-based дистрибутивах (в том числе и в Ubuntu) присутствует готовый скрипт для этой задачи, он находится в пакете mrtg-ping-probe, установим его:
apt-get install mrtg-ping-probe
При вызове скрипта нужно указать имя хоста. По умолчанию будет сделано десять попыток и потом выбрано минимальное и максимальное время отклика. Если количество попыток нужно изменить то можно использовать ключ -k.
Добавим в конфигурацию MRTG строки:
Target[ping_ylsoftware]: `/usr/bin/mrtg-ping-probe -k 3 ylsoftware.com.`
SetEnv[ping_ylsoftware]: MRTG_INT_IP="ylsoftware.com" MRTG_INT_DESCR="ping"
Title[ping_ylsoftware]: Ping of ylsoftware VPS
MaxBytes[ping_ylsoftware]: 1000
AbsMax[ping_ylsoftware]: 3000
Options[ping_ylsoftware]: gauge,nobanner
YLegend[ping_ylsoftware]: ping time (ms)
ShortLegend[ping_ylsoftware]: ms
Legend1[ping_ylsoftware]: Maximum Round Trip Time in ms
Legend2[ping_ylsoftware]: Minimum Round Trip Time in ms
Legend3[ping_ylsoftware]: Maximal 5 Minute Maximum Round Trip Time in ms
Legend4[ping_ylsoftware]: Maximal 5 Minute Minimum Round Trip Time in ms
LegendI[ping_ylsoftware]: Max:
LegendO[ping_ylsoftware]: Min:
Полученный график будет иметь вид:

Заключение
Выше было показано, как с помощью несложных скриптов существенно расширить функционал системы мониторинга MRTG, однако на этих скриптах возможности этой системы не заканчиваются, практически под любые данные можно написать скрипт, который позволит визуализировать эти данные с помощью MRTG.
На этом всё. Приятной работы!
Корректор: Регина Васильева (reggi86@mail.ru) |