Небольшие хитрости с MRTG

()

Мы уже ранее писали об использовании системы мониторинга 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]: &nbsp;Max:
LegendO[ping_ylsoftware]: &nbsp;Min:

Полученный график будет иметь вид:

Заключение

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

На этом всё. Приятной работы!

Корректор: Регина Васильева (reggi86@mail.ru)

Ключевые слова: ejabberd, mrtg, iostat, ping, mrtg-ping-probe.

Подписаться на обновления: RSS-лента Канал в TamTam Telegram канал Канал в ICQ

Комментарии:

Новый комментарий

Жирный текстКурсивный текстПодчёркнутый текстЗачёркнутый текстПрограммный кодСсылкаИзображение




© 2006-2024 Вадим Калинников aka MooSE
Политика конфиденциальности