42

Установка MRTG под Windows.

Не так давно возникла необходимость подсчитать трафик, идущий через маршрутизатор. Установка Proxy-сервера не решала задачу, т.к. необходимо было подсчитать трафик по всем портам, да и хотелось более простого решения. Установка под Windows обусловлена тем, что единственный постоянно включенный компьютер в локальной сети работает под Windows Server 2003. Выход из этой ситуации — установка на сервер MRTG + MRTG_TOTAL.


Необходимое условие — поддержка маршрутизатором протокола SNMP.

Для установки MRTG под Windows понадобится:

  1. Дистрибутив MRTG. Скачать
  2. Дистрибутив PERL. Например ActivePerl. Скачать
  3. Windows Server 2003 Resource Kit Tools для установки MRTG в качестве службы. Скачать.

Инструкция по установке MRTG под Windows на английском языке — http://oss.oetiker.ch/mrtg/doc/mrtg-nt-guide.en.html

Содержание:

Установка MRTG

  • Разархивируем дистрибутив MRTG в директорию C:\MRTG
  • Устанавливаем PERL. Необходимо убедиться, что директория C:\perl\bin прописана в переменной Path (Панель управления -> Система -> Дополнительно -> Переменные среды).

    Изменение переменной среды Path

    Изменение переменной среды Path

  • Для проверки корректности установки откройте командную строку и выполните:
    cd c:\mrtg\bin
    perl mrtg

    В результате, если все установлено правильно, вы должны увидеть что-то подобное:

    Usage: mrtg <config -file>
    
    mrtg-2.16.2 - Multi Router Traffic Grapher
    
    Copyright 1995-2006 by Tobias Oetiker
    Licensed under the Gnu GPL.
    
    If you want to know more about this tool, you might want
    to read the docs. You can find everything on the
    mrtg website:
    
    http://oss.oetiker.ch/mrtg/

Настройка MRTG

  • Создание конфигурационного файла. Перед началом необходимо выяснить:
    • IP-адрес маршрутизатора. В этом примере 192.168.0.1
    • Имя SNMP Get Community (Read Community). По-умолчанию почти на всех маршрутизаторах — public
    • Определить рабочую директорию MRTG. Обычно это корневая директория веб-сервера, на котором статистика MRTG будет доступна пользователям локальной сети. В нашем примере рабочая директория C:\www\mrtg
    • Если вы хотите осуществить мониторинг не только входящего и исходящего трафика, а еще к примеру загрузку процессора маршрутизатора и т.п., то вам нужно выяснить SNMPOID этого параметра.
  • Далее выполняем в командной строке:
    cd c:\mrtg\bin
    perl cfgmaker public@192.168.0.1 --global "WorkDir: c:\www\mrtg" --output mrtg.cfg

    Эта команда создает базовый файл конфигурации MRTG. Обратите внимание, что в созданном файле, ссылки на интерфейсы маршрутизатора представляют собой числа, которые могут измениться при перенастройке маршрутизатора. Чтобы обойти эту проблему, рекомендуется делать ссылки на интерфейсы маршрутизатора в виде ip-адресов или описаний интерфейсов. Это можно сделать с помощью дополнительных команд утилиты cfgmaker. Список команд здесь. Какой способ выбрать решать вам в зависимости от модели маршрутизатора.

  • Если во время создания конфигурационного файла, вы получили ошибку «no such name» или «no response», скорее всего вы не правильно указали имя SNMP Community. Также следует проверить открыт ли в брандмауэре порт 161 (порт по умолчанию для протокола SNMP), и не изменен ли он на нестандартный на самом маршрутизаторе.
  • Теперь откроем созданный файл (c:\mrtg\bin\mrtg.cfg)
  • Добавьте следующую строку в самое начало файла:
    WorkDir: c:\www\mrtg

    Также относительно базового файла я добавил следующие директивы:

    Options[_]: growright
    EnableIPv6: no

    Options[_]: growright — для отображения на графике временной шкалы с лева на право

  • Описание интерфейса LAN:
    ### Interface 3 >> Descr: 'ixp0' | Name: 'ixp0' | Ip: '192.168.0.1' | Eth: '00-16-b6-8b-b7-88' ###
    #
    Target[192.168.0.1_3]: 3:public@192.168.0.1:
    SetEnv[192.168.0.1_3]: MRTG_INT_IP="192.168.0.1" MRTG_INT_DESCR="ixp0"
  • HTML-шаблон для файлов статистики (можно спокойно адаптировать по своему вкусу):
    MaxBytes[192.168.0.1_3]: 12500000
    Title[192.168.0.1_3]: Traffic Analysis for LAN -- RV042
    PageTop[192.168.0.1_3]: <h1>Traffic Analysis for LAN -- RV042</h1>
    		<div id="sysdetails">
    			<table>
    				<tr>
    					<td>System:</td>
    					<td>RV042 in </td>
    				</tr>
    				<tr>
    					<td>Maintainer:</td>
    					<td></td>
    				</tr>
    				<tr>
    					<td>Description:</td>
    					<td>ixp0  </td>
    				</tr>
    				<tr>
    					<td>ifType:</td>
    					<td>ethernetCsmacd (6)</td>
    				</tr>
    				<tr>
    					<td>ifName:</td>
    					<td>ixp0</td>
    				</tr>
    				<tr>
    					<td>Max Speed:</td>
    					<td>12500.0 kBytes/s</td>
    				</tr>
    				<tr>
    					<td>Ip:</td>
    					<td>192.168.0.1 ()</td>
    				</tr>
    			</table>
    		</div>

    Относительно исходного файла здесь изменено значение MaxBytes[192.168.0.1_3]. Изначально было MaxBytes[192.168.0.1_3]: 1250000, что соответствует скорости интерфейса в 10 Мбит/c. Для 100 Мбит/c необходимо изменить значение на 12500000

  • Теперь все готово для пробного запуска. Выполняем в командной строке:
    cd с:\mrtg\bin
    perl mrtg mrtg.cfg

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

  • В рабочей директории (С:\www\mrtg) после запуска команды должен появится файл статистики 192.168.0.1_3.html, который можно открыть в любом браузере. После первых запусков статистика, конечно, не впечатляет. Для отображения корректной статистики MRTG нужно запускать с интервалом в 5 минут. О том, как это автоматизировать, читайте дальше.

Запуск MRTG как службы

Для установки MRTG в качестве службы, программа должна быть уже полностью настроена. Понадобятся две утилиты из Windows Server 2003 Resource Kit Tools: SRVANY.exe (Applications as Services Utility) и INSTSRV.exe (Service Installer). Пользователь системы должен иметь административные права.

  • Для начала необходимо внести изменения в mrtg.cfg. В начало файла, сразу после директивы WorkDir: c:\www\mrtg, добавляем строку:
    RunAsDaemon: yes
  • Копируем srvany.exe и instsrv.exe в c:\mrtg\bin
  • Создаем файл c:\mrtg\bin\mrtg.reg со следующим содержанием:
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRTG\Parameters]
    "Application"="c:\\perl\\bin\\wperl.exe"
    "AppParameters"="c:\\mrtg\\bin\\mrtg --logging=eventlog c:\\mrtg\\bin\\mrtg.cfg"
    "AppDirectory"="c:\\mrtg\\bin\\"
  • Открываем командную строку и выполняем:
    cd c:\mrtg\bin
    instsrv MRTG c:\mrtg\bin\srvany.exe
  • Теперь добавляем необходимые ключи в реестр. Делаем правый клик на mrtg.reg, выбираем Слияние или выполняем в командной строке:
    regedit /s c:\mrtg\bin\mrtg.reg
  • Запускаем службу MRTG (Панель управления -> Администрирование -> Службы). После запуска службы в Диспетчере задач должны появится два новых процесса: srvany.exe и wperl.exe. На этом установка службы MRTG завершена. По умолчанию через каждые 5 минут mrtg будет собирать статистику с маршрутизатора

С помощью MRTG можно получить графики текущей загрузки канала. Но для получения суммарного количества входящего и исходящего трафика по дням (месяцам) необходимо установить дополнительную утилиту mrtg_total. Результат ее работы можно посмортеть тут, а скачать здесь.

Установка mrtg_total

Инструкция по установке на английском — http://www.geocities.com/josef_wendel/mrtg_total.html (К сожалению, сайт перестал открываться. Скачать mrtg_total)

  • Для корректной работы mrtg_total необходимо установить следующие библиотеки Perl:
    • GD -1.32 (или лучше)
    • GDGraph -1.33 (или лучше)
    • GDGraph3d -0.55 (или лучше)
    • GDText -0.80 (или лучше)

    Установка этих библиотек из командной строки (как написано в инструкции) у меня не получилась, поэтому пришлось устанавливать их с помощью Perl Package Manager (Пуск -> Программы -> ActivePerl -> Perl Package Manager). Сделать это легко, утилита имеет понятный графический интерфейс.

  • Разархивируем mrtg_total.pl в c:\mrtg\bin
  • Теперь необходимо модифицировать mrtg.cfg. Добавляем в описание интерфейса следующий псевдо комментарий:
    #-#Total[192.168.0.1_3]:      Traffic Totals for ROUTER LAN
    #-#Total-Unit[192.168.0.1_3]: M

    Все вместе выглядит так:

    ### Interface 3 >> Descr: 'ixp0' | Name: 'ixp0' | Ip: '192.168.0.1' | Eth: '00-16-b6-8b-b7-88' ###
    #
    Target[192.168.0.1_3]: 3:public@192.168.0.1:
    SetEnv[192.168.0.1_3]: MRTG_INT_IP="192.168.0.1" MRTG_INT_DESCR="ixp0"
    
    <strong>#-#Total[192.168.0.1_3]: Traffic Totals for ROUTER LAN #-#Total-Unit[192.168.0.1_3]: M</strong>
    
    MaxBytes[192.168.0.1_3]: 12500000
    Title[192.168.0.1_3]: Traffic Analysis for 3 -- RV042
    .....

    #-#Total-Unit[192.168.0.1_3]: M — предоставляет статистику в мегабайтах. Также возможны значения: K,G,T (Кб, Гб, Тб).
    #-#Total-Ratio[]: yes — добавляет дополнительную колонку с коэффициентом соотношения входящего и исходящего трафика.
    #-#Total-Directory[]: path — аналогично Workdir. Можно определить рабочую директорию отличную от директории mrtg. Если не указано, используется директория mrtg.
    #-#Total-Output[]: DWM — определяет формат вывода. D — дни, W — недели, M — месяцы. По умолчанию DM.

  • Создаем файл mrtg_total.cmd со следующим содержанием:
    cd c:\mrtg\bin
    perl mrtg_total.pl mrtg.cfg
    exit
  • Теперь необходимо создать задание на выполнение этого файла каждый день в районе 01:00. Сделать это можно с помощью, встроенного в windows планировщика задач (Task Scheduler).

    Планировщик задач (Task Scheduler)

    Планировщик задач (Task Scheduler)

  • Устанавливать mrtg_total лучше не сразу после установки mrtg, а подождать 1-2 дня, чтобы была накоплена какая-то статистика
  • Если все работает корректо, после отработки скрипта в рабочей директории должен появится файл вида 192.168.0.1_3.total.2009.07.html, в котором будет отображена статистика по дням (в нашем случае для июля). Для следующего месяца будет создан файл 192.168.0.1_3.total.2009.08.html

На этом установка закончена!

Маленькое примечание для тех у кого внешний статический ip-адрес. Если вы будете мониторить интерфейс WAN, то статистика получится некорректной (входящий трафик будет больше реального как минимум на 30%) из-за эффекта широковещательного шторма и т.п. Выход: считать трафик по интерфейсу LAN. Если вы используете несколько локальных портов маршрутизатора для подключения различных устройств, то для исключения из статистики внутреннего трафика нужно установить дополнительный коммутатор, подключить его к маршрутизатору, все устройства повесить на этот коммутатор. Другие локальные порты маршрутизатора не использовать. В этом случае статистика будет более менее корректной.

Метки: MRTG, Трафик