Последнее изменение файла: 2009.10.29
Скопировано с www.bog.pp.ru: 2022.05.23
Bog BOS: Мониторинг загрузки каналов (и не только) MRTG
MRTG (Multi Router Traffic Grapher). Версия 2.9.2, 13 октября 2000.
Автор развивает более совершенное средство - RRDtool.
По сравнению с 2.7.4 перешли на версию gd,
делающую PNG вместо GIF; разборка MIB; locale (включая русский);
режим демона; разбиение файлов на директории HtmlDir, ImageDir, LogDir;
SNMPv2c (в т.ч. 64-битные числа); параллельные запросы; интеграция с RRD.
Создает html-страницу с отображением загрузки канала за сутки, неделю
(7 дней), месяц (4 недели) и год (12 месяцев). Скрипт на perl опрашивает
маршрутизатор(ы) через SNMP, программа на C обрабатывает получившийся результат
и создает красивые картинки в GIF/PNG, встроенные в html-страницу. Может
генерить графики из других источников (cpuinfo, df, squid и др. и др.).
Основное преимущество - постоянный размер журналов (более старая информация
хранится с меньшими подробностями; максимальный срок хранения - 2 года).
Имеются средства (полу)автоматической конфигурации. Быстр. Капризен к аварийному
завершению (разрушаются журналы). Нельзя использовать для учета и биллинга.
Слишком много он усредняет и сглаживает, используя достаточно сложные алгоритмы.
Общие правила записи: ключевое слово в начале строки до двоеточия; строка
продолжения начинается с пробела; строки комментарии начинаются с #.
Команды:
Include: имя-файла
WorkDir: имя-директории (задает размещение журнала,
рабочих файлов и генерируемых страниц, имеет приоритет над HtmlDir, ImageDir
и LogDir)
HtmlDir: имя-директории
ImageDir: имя-директории (обязательно под HtmlDir - страницы
генерируются в этом предположении)
LogDir: имя-директории
Refresh: частота перерисовки в броузере (по умолчанию 300 секунд)
RunAsDaemon: no | yes
Interval: предполагаемый интервал запуска mrtg (по умолчанию 5 минут,
сам запуск обеспечивается внешними средствами, например, через cron или
RunAsDaemon)
IconDir: директория, где хранятся иконки (если отличается от WorkDir)
Forks: число (сколько параллельных процессов опроса запускать)
WriteExpire: no | yes (создавать файлы .meta для apache -
в .htaccess надо добавить "MetaDir ." и "MetaFiles on"; этот же эффект
- тэг Expiration - можно достичь с помощью mod_expire (см. htaccess.txt))
NoMib2: no | yes (не запрашивать sysUptime, sysName)
LogFormat: rrdtool (формат журналов для rrdtool - динамическое создание отчетов)
LibAdd: адрес-библиотеки-rrdtool (RRDs.pm)
PathAdd: адрес-rrdtool
для каждого контролируемого устройства - точнее, котролируемого параметра
- (обозначается как target, буквы преобразуются к строчным), создается
отдельная секция. При работе mrtg каждый target порождает
файлы журнала (target.log и target.old), картинки
с графиками (target-day.gif, target-week.gif,
target-month.gif,
target-year.gif)
и html-страницу (target.html).
Target[target]: порт:комьюнити@маршрутизатор[:port[:timeout[:retries[:backoff[:2]]]]],
где
порт - номер интерфейса на маршрутизаторе (номер в некоей внутренней таблице)
комьюнити - community в смысле SNMP (пароль на чтение)
маршрутизатор (имя или IP-адрес) (не любит точку
в конце имени)
port - по умолчанию стандартный порт SNMP (UDP 161)
timeout - 2 секунды
retries - 5 раз
backoff - во сколько раз увеличивать timeout при каждом повторе (по
умолчанию - 1)
2 - означает использование 64-битных счетчиков (устройство должно
поддерживать SNMPv2c)
в таком формате действительно извлекается информация о входном и выходном
трафике. Если перед номер порта поставить знак "минус", то входной и выходной
трафик меняется местами. Вместо номера порта можно явно задать два номера
OID (идентификатор объекта в MIB, например - 1.3.6.1.2.1.2.2.1.14.1 - счетчик
входных ошибок на интерфейсе 1) через амперсенд. Можно использовать символические
имена OID (список смотри в mibhelp.txt, например - ifInErrors.1). Номера
интерфейсов могут меняться при реконфигурации маршрутизатора, но можно
вместо номера интерфейса (последнее число в OID) записывать IP-адрес после
косой черты. Интерфейсы также можно задавать по описанию (ifDescr) - после
обратной косой черты. Или имени (ifName) - после диез. Или по физическому
адресу (ifPhysAddress) - после восклицательного знака (пример: 0a-0-f1-5-23-18).
Или типу (?) - после процента.
программа должна возвращать на стандартный вывод 4 строки
значение первой переменной (предполагается счетчик входных байт)
значение второй переменной (предполагается счетчик выходных байт)
текстовая строка, содержащая информацию о времени работы объекта после
включения (uptime)
строка, указывающая имя объекта
Target[target]: математическое выражение, составленое из
простых объектов, описанных ранее (необходимо использовать пробелы вокруг
знаков операций)
RouterUptime[target]: комьюнити@маршрутизатор
откуда брать информацию об имени маршрутизатора и его времени работы
для составных target
MaxBytes[target]: число
Значения обеих переменных, которые больше этого числа, игнорируются.
Используется также для построения немасштабируемого графика.
MaxBytes1
MaxBytes2
Title[target]: заголовок для html-страницы
PageTop[target]: текст, выдаваемый в верхней части html-страницы (можно и нужно использовать html-разметку)
PageFoot[target]:
AddHead[target]: html-текст, вставляемый после TITLE внутри
HEAD
MaxAbs[target]: число
если используется сжатие, то возвращаемое значение может превосходить
MaxByte.
Unscaled[target]: [d][w][m][y]
подавить масштабирование по вертикали для соответствующего графика
(d- day, w - week, m - month, y - year)
WithPeak[target]: [w][m][y]
показывать в недельном, месячном и годовом графиках не только средние,
но и пиковые значения
Supress[target]: [d][w][m][y]
подавить генерацию части графиков
Extension: суффикс-вместо-.html
Directory[target]: имя-директории
складывать сюда все файлы, относящиеся к указанному target (
рекомендуется использовать относительные имена)
XSize[target]: число
число пикселов в графике по горизонтали (от 20 до 600, по умолчанию
400). Расходуется еще немного места под оформление.
YSize[target]: число
число пикселов в графике по умолчанию (от 20, по умолчанию 100). Расходуется
еще немного места под оформление.
XZoom[target]: число
масштабировать пикселы по X, гадость
YZoom[target]: число
масштабировать пикселы по Y, гадость
XScale[target]: число
масштабировать график по X, гадость
YScale[target]: число
масштабировать график по Y, гадость
YTics[target]: число-вертикальных-делений (4)
YTicsFactor[target]: коэффициент-значений-оси
Step[target]: секунд
изменить шаг отображения (по умолчанию 300 секунд)
Options[target]: список-опций-через-запятую
growright - время движется вправо (по умолчанию - влево)
bits - все числа умножать на 8 (то бишь мерять в битах, тексты
меняются соответственно)
perminute - все числа умножат на 60 (то бишь мерять в единицах за
минуту, тексты меняются соответственно)
perhour - все числа умножаются на 3600 (то бишь мерять в единицах
за час, тексты меняются соответственно)
noinfo - подавлять вывод информации об имени устройства и его времени
работы
nopercent - подавить вывод процентной информации
transparent - генерировать прозрачный фон картинки
integer - выдавать поясняющую информацию без точек
dorelpercent - отношение входного трафика к выходному (от 0% до
100%, если входной больше, чем выходной, то будет показано 100%).
Требуется пятый цвет.
gauge - интерпретировать полученные значения как абсолютные значения
(а не значения счетчика). Полезно для отображения таких параметров, как
загрузка процессора, дискового пространства и т.д. По умолчанию, mrtg трактует
полученные значения как увеличивающийся счетчик (т.е. отрисовывает разницу
между предыдущим и текущим значением, деленную на прошедший интервал времени).
absolute - используется для значений, которые сбрасываются при чтении
(т.е. разница не вычисляется, но значение делится на интервал времени)
unknaszero - трактовать неверные значения как 0, а не как повторение
предыдущего значения
withzeroes - учитывать нулевые значения при вычислении среднего
(ругается при запуске)
kilo[target]: число
что понимается под кило? по умолчанию - 1000, но можно установить 1024
kMG[target]: список-префиксов-множителей
какими буквами обозначать кило, мега и др. По умолчанию: ",k,M,G,T,P".
Пустая строка подавляет генерацию префиксов вовсе.
определение цветовой схемы, где Coloursi - текстовое
имя цвета, помещаемое в легенду графика, RRGGBB -
шестнадцатеричные значения, определяющие RGB-цвет. Если используется
dorelprocent, то требется определить пятый цвет.
Background[target]:#RRGGBB
цвет фона
YLegend[target]: текстовая-строка
по умолчанию: "Bits per second"
ShortLegend[target]: текстовая-строка
по умолчанию: "b/s"
Legend1[target]: Incoming Traffic in Bits per Second
Legend2[target]: Outgoing Traffic in Bits per Second
строки легенды, описывающие соответствующий цвет. Приведены значения
по умолчанию. Если в качестве легенды используется пустая строка, то и
график не выводится.
Timezone[target]: имя-TZ
Weekformat[target]: W | V | U (как получать номер недели:
strftime(%W) или %V или %U
SetEnv[target]: установка переменных окружения перед при
вызове внешних скриптов (target или threshold) в формате имя="значение".
вызывается, если нарушены допустимые значения. Передается три параметра:
$router, предельное значение, текущее значение. Вызывается
при каждой проверке, пока параметр не придет в норму - надо как-то обходить.
ThreshProgOKI[target]: имя-программы
вызывается, если значение первого параметра вернулось в норму
ThreshMinO, ThreshMaxO, ThreshProgO, and ThreshProgOKO
- аналогично для второго параметра
Имеет всего один параметр: имя конфигурационного файла.
Запускается либо из cron (каждые 5 минут), либо в режиме демона
один раз (например, при старте Unix в rc.d).
создать директорию, в которую будут помещаться html-страницы, и скопировать
туда файлы из images/mrtg*.gif
создать mrtg.cfg
в doc/htacess.txt приведен образец файла .htaccess для модуля mod_expire
сервера apache 1.2 (требуется включить при сборке), который позволяет задавать
"срок хранения" файлов в кеше броузера
добавить в crontab вызов mrtg каждые 5-минут
Интересные примеры использования лежат в директории contrib.
Вместо df использовал поправленную версию inndf (который в отличие от
стандартного не делает sync).