Смотрим загрузку сети через MRTG

MRTGMRTG (Multi Router Traffic Grapher) – программа для мониторинга различных ресурсов устройств, компьютеров и даже программ через протокол SNMP.
Для работы программы требуется, чтобы на устройстве был включен протокол SNMP, а если собираемся мониторить данные получаемые с компьютера, то на компьютере должен работать демон программы SNMP.
У меня стояла задача посмотреть насколько загружен узловой коммутатор сети, но данная статья применима ко всем сетевым устройствам, умеющим SNMP протокол. Так что можно следить за загрузкой каналов Lan или Wi-Fi у роутеров, ADSL модемов и прочей домашней техники.

Первым делом проверяем, чтобы на устройстве за который хотим следить

  • был включен протокол SNMP
  • если там есть фаерволл, то разрешаем доступ нашей мониторящей машине (открыть на устройстве UDP 161 порт)
  • рекомендуется изменить строку доступа на чтение параметров SNMP (по умолчанию строка доступа – “public”)

Установка MRTG

MRTG имеет следующие зависимости

  • HTTP web сервер
  • perl-SNMP_Session
  • GD библиотека
  • Libpng библиотека
  • zlib библиотека

HTTP web сервер требуется только для просмотра графиков на машине с MRTG. Я рекомендую использовать web сервер apache.
Для установки в Ubuntu (Debian) выполним команду


sudo aptitude install mrtg

После инсталляции конфиг MRTG будет находиться /etc/mrtg, а рабочая директория HTTPсервера в /var/www/mrtg

В FreeBSD инсталляцию пакета лучше всего проводить из портов. От root или sudo выполняем


# cd /usr/ports/net-mgmt/mrtg
# make config && make install clean

Для инсталляции из исходников скачиваем программу со страницы загрузки и конфигурируем с опциями


./configure --prefix=/usr/local/mrtg2 \
            --with-gd-lib \
            --with-gd-inc \
            --with-png-inc=/usr/local/include \
            --with-png-lib=/usr/local/lib

Затем стандартные


#make
#make install

Создание конфигов MRTG

В MRTG пакете есть утилита cfgmaker для содания конфигов устройств. Создаем конфиг для нашего устройства (команда пишется в одну строку)


#cfgmaker --global 'WorkDir: /usr/local/apache/htdocs/stat/mrtg/' public@m254 \
 --output /usr/local/mrtg2/etc/m254.cfg

здесь
–global ‘WorkDir: /usr/local/apache/htdocs/stat/mrtg/’ – рабочий каталог для mrtg, где будут хранится графики загрузки каналов и конфиг
public@m254 – строка доступа для чтения параметров устройства и имя устройства в сети (можно задавать ip адрес)
–output /usr/local/mrtg2/etc/m254.cfg – куда сохраняем наш конфиг для устройства
Я перечислил только самые необходимые переменные для cfgmaker, полный список команд можно посмотреть по команде


cfgmaker --man

Теперь по полученному конфигу устройства сгенерим страничку html для вывода картинок загрузки портов устройства. Это делается через команду indexmaker.


#indexmaker /usr/local/mrtg2/etc/m254.cfg > /usr/local/apache/htdocs/stat/mrtg/index.html

Убедимся что MRTG и наш конфиг устройства с index.html работают. Выполняем


#mrtg /usr/local/mrtg2/etc/m254.cfg

В рабочей директории /usr/local/apache/htdocs/stat/mrtg/ должны появиться файлы картинок *.png , *.log файлы и вспомогательные html файлы.
Можно набирать в браузере http://сервер/stat/mrtg/ и увидеть пока пустые картинки на портах устройства.
Если снимать статистику раз в 5 минут, то через пол дня увидим примерно следующее:

Общая загрузка по портам

Детальный отчет по загрузке конкретного порта устройства

По умолчанию порты комутатора просто пронумерована или имеют свои специфические обозначения. Эти обозначения можно исправить отредактировав вручную файл index.html в рабочей директории.

Для автоматического сбора статистики в /etc/crontab добавляем строку


*/5  *  *  *  *  root  /usr/local/mrtg2/bin/mrtg /usr/local/mrtg2/etc/m254.cfg 1> /dev/null 2>&1
Запись опубликована в рубрике Monitoring, Программы с метками , , . Добавьте в закладки постоянную ссылку.

2 комментариев Смотрим загрузку сети через MRTG

  1. Anton говорит:

    Ввел команду #cfgmaker –global ‘WorkDir: /usr/local/apache/htdocs/stat/mrtg/’ public@m254 \ –output /usr/local/mrtg2/etc/m254.cfg
    Эффект ноль. Убрал с начала # – что это за символ и зачем он нужен?
    Вывод дал много ошибок
    Use of uninitialized value $t in substitution (s///) at /usr/bin/cfgmaker line 1385.
    Use of uninitialized value $t in substitution (s///) at /usr/bin/cfgmaker line 1386.
    Use of uninitialized value $t in substitution (s///) at /usr/bin/cfgmaker line 1387.
    Use of uninitialized value $fs in pattern match (m//) at /usr/bin/cfgmaker line 1392.
    Use of uninitialized value $t in hash element at /usr/bin/cfgmaker line 1393.
    Use of uninitialized value $t in substitution (s///) at /usr/bin/cfgmaker line 1385.
    Use of uninitialized value $t in substitution (s///) at /usr/bin/cfgmaker line 1386.
    Use of uninitialized value $t in substitution (s///) at /usr/bin/cfgmaker line 1387.
    Use of uninitialized value $fs in pattern match (m//) at /usr/bin/cfgmaker line 1392.
    Use of uninitialized value $t in hash element at /usr/bin/cfgmaker line 1393.
    –base: Get Device Info on public@m254:
    Error:
    can’t resolve “m254″ to IP address
    at /usr/share/perl5/SNMP_util.pm line 430.
    SNMPWALK Problem for public@m254::::::v4only
    at /usr/bin/cfgmaker line 960.
    WARNING: Skipping public@m254: as no info could be retrieved

    –base: Get Device Info on public@ –output:
    Error:
    can’t resolve ” –output” to IP address
    at /usr/share/perl5/SNMP_util.pm line 430.
    SNMPWALK Problem for public@ –output::::::v4only
    at /usr/bin/cfgmaker line 960.
    WARNING: Skipping public@ –output: as no info could be retrieved

    –base: Get Device Info on public@/usr/local/mrtg2/etc/m254.cfg:
    Error:
    can’t resolve “/usr/local/mrtg2/etc/m254.cfg” to IP address
    at /usr/share/perl5/SNMP_util.pm line 430.
    SNMPWALK Problem for public@/usr/local/mrtg2/etc/m254.cfg::::::v4only
    at /usr/bin/cfgmaker line 960.
    WARNING: Skipping public@/usr/local/mrtg2/etc/m254.cfg: as no info could be retrieved

    Use of uninitialized value $comment_sysdescr in substitution (s///) at /usr/bin/cfgmaker line 384.
    Use of uninitialized value $sysname in concatenation (.) or string at /usr/bin/cfgmaker line 417.
    Use of uninitialized value $comment_sysdescr in concatenation (.) or string at /usr/bin/cfgmaker line 417.
    Use of uninitialized value $syscontact in concatenation (.) or string at /usr/bin/cfgmaker line 417.
    Use of uninitialized value $syslocation in concatenation (.) or string at /usr/bin/cfgmaker line 417.
    Use of uninitialized value $comment_sysdescr in substitution (s///) at /usr/bin/cfgmaker line 384.
    Use of uninitialized value $sysname in concatenation (.) or string at /usr/bin/cfgmaker line 417.
    Use of uninitialized value $comment_sysdescr in concatenation (.) or string at /usr/bin/cfgmaker line 417.
    Use of uninitialized value $syscontact in concatenation (.) or string at /usr/bin/cfgmaker line 417.
    Use of uninitialized value $syslocation in concatenation (.) or string at /usr/bin/cfgmaker line 417.
    Use of uninitialized value $comment_sysdescr in substitution (s///) at /usr/bin/cfgmaker line 384.
    Use of uninitialized value $sysname in concatenation (.) or string at /usr/bin/cfgmaker line 417.
    Use of uninitialized value $comment_sysdescr in concatenation (.) or string at /usr/bin/cfgmaker line 417.
    Use of uninitialized value $syscontact in concatenation (.) or string at /usr/bin/cfgmaker line 417.
    Use of uninitialized value $syslocation in concatenation (.) or string at /usr/bin/cfgmaker line 417.
    # Created by
    # /usr/bin/cfgmaker –global “WorkDir: /usr/local/apache/htdocs/stat/mrtg/” public@m254 ” –output” /usr/local/mrtg2/etc/m254.cfg

  2. mik говорит:

    # обозначает что команда идет из под пользователя root, ну или можно от обычного пользователя, тогда перед командой надо ставить sudo.
    конечно # в команду вводить не надо.
    По выводу ошибки видно, что просто скопирована моя команда. Для начала надо убедиться что snmp включен на устройстве, вот тогда вместо public@m254 надо написать public@
    ну а далее уже можно смотреть ошибки

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *