MRTG

Сегодня мы поговорим о MRTG – это очень приятная вещь, которая позволяет строить графики загрузки, использования, наличия того или иного предмета в системе (пользователи, память и прочее). Очень удобная – позволяет забирать данные как по SNMP, так и через саморучно написанные программы. В общем, вещь !!!

Сначала заберите и установите сам mrtg. В инете на любом поисковом сервере по ftp наберите mrtg и выкачивайте то, что вашей душе угодно. Ставьте либо сразу бинарники, либо сначала исходники, а потом компилируйте … В общем, у Вас должен получиться каталог /что-то/mrtg (в KSI это /usr/lib/mrtg , если ставить mrtg из поставляемого с KSI). В нем лежат 4 файла – cfgmaker, indexmaker, mrtg, rateup.
Пойдем по порядку … cfgmaker – это утилита, которая делает mrtg.cfg (конфигурационный файл mrtg) , выбирая информацию из любого устройства (программы), поддерживающего SNMP.


./cfgmaker public@host >> mrtg.cfg

и все, если на host есть SNMP и он откликается на имя public (тут может что я напутал в формулировках, но я не знаю, как это по русски сказать), то создастся (добавится) файл mrtg.cfg …. ниже я разберу, что и куда в нем …
indexmaker – эта утилита создает index.html в который собирает все, что она нашла в mrtg.cfg . Конечно, это всем можно сделать и руками … но утилиткой приятнее …


./indexmaker mrtg.cfg 'All my Routers' '.' >/home/httpd/stats/index.html


И наконец, сам mrtg …. вручную его пускать не надо … это делать надо из крона. Для vixie cron строчка в кронтабе должна быть аналогична следующей


0-59/5 * * * * root /usr/lib/mrtg/mrtg /usr/lib/mrtg/mrtg.cfg

Эта строчка означает всего-лишь запуск mrtg от root’а каждые пять минут …
Кстати, 5 минут – это минимальное время для промежутка между запусками mrtg … больше можно – меньше нельзя …
И еще одно напоминаие, пока не начал разбирать mrtg.cfg … первые два запуска mrtg будет ругаться с помощью cron (а через него на мыло) что что-то не то у него с файлами и каталогами … можете не обращать внимание … это он сообщает, что нет лог файлов и прочей требухи, необходимой ему …..
rateup – это служебная программа ….

Итак, mrtg.cfg … начну разбирать реальный файл, который используется у меня и собирает статистику каждые пять минут с роутера Cisco и заодно делает график использование своп-памяти на машине ;-))). При этом, я естественно приведу не весь файл и не все команды … для более полного обратитесь в /usr/doc/mrtg-[ваша версия] – там очень понятно все расписано


WorkDir: /home/httpd/html/mrtg/

Рабочий каталог, в котором будут сохраняться файлы с картинками и html-ками ;-) обычно это один из каталогов web-сервера.


Target[cisco]: 1:public@cisco

Это целеуказание mrtg, благодаря которому он знает, что информацию, которую он снимает с snmp хоста public@cisco , надо ложить в /home/httpd/html/mrtg/cisco* файлы … Немного непонятно … но я сам еще далеко не дока в snmp – эти строчки сделал cfgmaker


MaxBytes[cisco]: 1250000

Показывает, сколько максиум будет число, которое измеряется на этом узле ( в данном случае – это максимальная скорость соотвующего порта на cisco)


Title[cisco]: cisco (cisco): Ethernet0

Указывает заголовок для страницы с графиками …


Options[cisco]: growright

показывает, что графики надо рисовать движущимися не слева, а справа … не знаю, кому как, а мне удобнее …


PageTop[cisco]: Ethernet<

С этой строки и ниже заголовок для страницы, на которой будут вывешиваться графики за день, неделю, месяц и год …..
Эти все строки создал cfgmaker – он может их и еще кучу раз создать, если его попросить …(я не стал расписывать больше … у всех моих знакомых с ним проблем не возникало) но если вам надо измерять что-то, что не имеет доступа по snmp (например свой термометр или количество пользователей у себя на машине … или число используемого свопа … да что угодно) … сначала посмотрите в каталог contrib – может там что есть для вашей души …. но я там для своей души не нашел, то, что хотел …поэтому сейчас я вместе с Вами сделаю графики … ну хотя-бы для записи, сколько места на дисках у меня осталось ….


[root@multik mrtg]# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/sda2               995147    767175    176564  81% /
/dev/sda3              2707142   2420114    132001  95% /opt
/dev/sdb2              3595947   3280904    109010  97% /opt1
[root@multik mrtg]#

вот такой вывод у команды df ….. ну возьмем 4й столбец так приятнее и прикольнее ;-) Хотя никто не мешает взять и 5й столбец и вообще какой душа пожелает …


#!/bin/sh
df|tail -2|awk '{print $4}'
echo 0
echo 0
echo

Вот такой маленький командный файл я положил в /usr/diskuse …. действует он до примитивного просто … только я сделаю замечание … для mrtg внешние программы должны возвращать 2 числа (первый и второй контролируемый процесс)… кто видел графики mrtg – тот поймет … если надо строить 1 график – то просто второе число будет 0 ;-))) 3я строчка служит для указания времени uptime, а 4я – для указания имени устройства … можете поиграться с ними … только если 3 число 0, то ничего выводиться не будет … теперь правим mrtg.cfg


Target[df]: `/usr/diskuse`

Будем вызывать программу /usr/diskuse


Options[df: growright, absolute, gauge

Строим графики справа


MaxBytes[df]: 500000
AbsMax[df]: 500000

Максиум, что у меня может быть свободного места – это 500Мб


Title[df]: Used disk space
Unscaled[df]: dwyn
YLegend[df]: free space
ShortLegend[df]:
Legend1[df]:
Legend2[df]: /dev/sda3
Legend3[df]:
Legend4[df]: /dev/sdb2
LegendI[df]:
LegendO[df]: ═ kbytes
PageTop[df]: Free size

все остальное в принципе я либо описывал, либо понятно и так …. теперь включаем этот кусок в конфиг mrtg и ждем наступления следующих 5 минут … Приходит вот такое вот письмо ….


Rateup WARNING: .//rateup could not read the primary log file for df
Rateup WARNING: .//rateup The backup log file for df was invalid as well
Rateup WARNING: .//rateup Can't remove df.old updating log file
Rateup WARNING: .//rateup Can't rename df.log to df.old updating log file

Не волнуйтесь … все в порядке …потом придет


Rateup WARNING: /usr/lib/mrtg//rateup Can't remove df.old updating log file

И если все настроено правильно, то больше ничего приходить не должно …
Все .. смотрите на df.html в рабочем каталоге …. можете аналогично поправить сгенеренный index.html … там ничего сложного нет …..подождите 5-10 минут и Вы увидите, как справа выползают две полоски … которые и показывают нужную Вам величину ….
ну вот .. теперь мне захотелось обьем свопа выдавать …. нет ничего проще …файл swapuse


#!/bin/sh
free|tail -1|awk '{print $3}'
echo 0
echo 0
echo 0
echo

Выдирает количество swap-памяти в использовании …в mrtg.cfg записано следующее


Target[swap]: `/usr/swapuse`
Options[swap]: growright, absolute, gauge
MaxBytes[swap]: 256000
AbsMax[swap]: 256000
Title[swap]: Used swap
Unscaled[swap]: dwyn
YLegend[swap]: free space
ShortLegend[swap]:
Legend1[swap]:
Legend2[swap]: Swap
Legend3[swap]:
Legend4[swap]:
LegendI[swap]:
LegendO[swap]:
PageTop[swap]: Swap

Доступно и сердито … теперь, если я зайду на свой www, я всегда увижу, сколько у меня используется свопа ;-))) Для более качественного использования mrtg (хотя куда более качественно) , советую посмотреть readme.html, который идет вместе с mrtg – там расписано больше опций ;-)

Вот вроде и все про mrtg – или что-то непонятно ?;-)

Вячеслав Калошин. 11.09.1999