Мы уже ранее писали об использовании системы мониторинга 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)