Мониторинг системы при помощи MRTG

MRTG (Multi Router Traffic Grapher) — является свободным программным обеспечением под лицензией GPL. Это инструмент для организации сервиса для мониторинга и измерения сетевого трафика с течением времени. Данные с различных сетевых устройств собираются при помощи протокола SNMP, а затем отображаются в виде графиков.
Утилита первоначально была разработана Тобиасом Отикером (Tobias Oetiker) и Дейвом Рэндом (Dave Rand) для мониторинга трафика, но впоследствии превратилась в удобный инструмент для создания графиков и сбора статических данных для различных задач и процессов.
Области применения:
* загруженность канала (входящий, исходящий, максимальный, средний трафик);
* использование процессора, оперативной памяти, жёсткого диска;
* наблюдение за температурными показателями аппаратных ресурсов;
* погодные данные и т.д.
Материал из Википедии

Для работы MRTG требуются следующие библиотеки:
* gd — graph drawing library. Библиотека, ответственная за формирование графики;
* libpng — требуется gd для создания графики в формате png;
* zlib — данная библиотека используется для компрессии созданной графики;
Если нет — ставим

# yum install gd lipng zlib

Установка mgtg и snmp

# yum install mrtg net-snmp net-snmp-utils net-snmp-libs

В результате получаем в каталоге Apache c содержанием Вашего сайта (/var/www/html/) подкаталог mrtg c html-файлами документации. Сюда же будут помещаться результаты визуализации работы MRTG. В /etc/mrtg помещается файл mrtg.cfg с настройками, а в /usr/bin/ утилиты конфигурирования и непосредственно сам исполнимый файл /usr/bin/mrtg. Не забываем править /etc/httpd/conf.d/mrtg.conf если у вас хост другой.
Далее редактируем SNMP /etc/snmp/snmpd.conf

com2sec local 127.0.0.1/32 public
group MyROGroup v1 local
group MyROGroup v2c local
group MyROGroup usm local
view all included .1 80
access MyROGroup «» any noauth exact all none none
syslocation MyLocation
syscontact Me

Перезапуск SNMP

# service snmpd restart

Далее, подключим cban, т.к. по тестам — статистика снятия данных трафика у него поточнее, остальные же значения снимаем snmp http://centos.ultra-sr.ru/files/cban-0.1.8-0.tgz скачаем.

# tar zxvf cban-0.1.8-0.tgz
# cp cban /usr/sbin/cban

Разворачиваем архив, и кладем файл /bin/cban в /usr/sbin. Также для нас интерес представляет файл /etc/mrtg/sample-mrtg.cfg — это, как и обещает нам название, пример конфига для mrtg. Приведу его полностью, комментируя значения параметров:

Title[eth0]: Traffic eth0 # название генерируемой страницы
MaxBytes[eth0]: 125000 # при получении значения, большего чем заданное,
# значение не учитывается для построения графика
AbsMax[eth0]: 125000 # при получении значения, большего чем заданное, значение
# вообще не учитывается
Options[eth0]: gauge # опция означает, что берется текущее входное значение,
# а не по нарастающему итогу
Target[eth0]: `/usr/sbin/cban -i eth0 -m` # откуда получаем данные
PageTop[eth0]: eth0 statistics # заголовок генерируемой страницы
YLegend[eth0]: Bytes/s # подпись к значению по оси Y графика
ShortLegend[eth0]: B/s # единица измерения. добавляется к максимальному,
# текущему и среднему значению
Legend1[eth0]: Incoming Traffic # подпись для входящего трафика
Legend2[eth0]: Outgoing Traffic # подпись для исходящего трафика
Legend3[eth0]: Maximum Incoming Traffic # подпись для максимального входящего трафика
Legend4[eth0]: Maximum Outgoing Traffic # подпись для максимального исходящего
трафика
LegendI[eth0]: In: # краткая подпись для цифровых данных (входящий)
LegendO[eth0]: Out: # краткая подпись для цифровых данных (исходящий)
WithPeak[eth0]: ymwd # строим графики за y-год, m-месяц, w-неделю, d-день

при установке mrtg, может возникнуть вот такая вот проблема (смотрим лог /vat/log/mrtg.log)

2006-03-18 23:01:01 — Started mrtg
2006-03-18 23:01:01 — WARNING: Could not get any data from external command ‘/usr/sbin/cban -i eth0 -m’
Maybe the external command did not even start. (Illegal seek)
2006-03-18 23:01:01 — WARNING: Problem with External get ‘/usr/sbin/cban -i eth0 -m’:
Expected a Number for ‘in’ but nothing’
2006-03-18 23:01:01 — WARNING: Problem with External get ‘/usr/sbin/cban -i eth0 -m’:
Expected a Number for ‘out’ but nothing’
2006-03-18 23:01:01 — ERROR: Target[eth0][_IN_] ‘ $target->[0]{$mode} ‘ did not eval into defined data
2006-03-18 23:01:01 — ERROR: Target[eth0][_OUT_] ‘ $target->[0]{$mode} ‘ did not eval into defined data

эта проблема возникает, если вы запускаете дефолтовый cban, решаеться она перекомпиляцией самого cban, а именно:

#cd /cban/src
#make
#make install

после чего получаем в /cban/bin готовый под ваш router cban.
Далее настраиваем конфиг mrtg и запускаем (каждый раз если правим конфиг)

indexmaker —output=/dir/www/ХОСТ/index.html /etc/mrtg/mrtg.cfg

и примерно 3 раза вбиваем данную команду (после 2го должны исчезнуть ошибки)

env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg —logging /var/log/mrtg.log

Не забываем про крон

*/5 * * * * root env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg —logging /var/log/mrtg.log

Вот и все.

Приведу пример конфига мртг (/etc/mrtg/mrtg.cfg)

Language: russian
EnableIPv6: no
WorkDir: /var/www/ХОСТ

#Трафик
Title[eth0]: Traffic Analysis for Volga-Telecom
MaxBytes[eth0]: 525000
AbsMax[eth0]: 614400
Options[eth0]: pngdate, gauge
Target[eth0]: `/usr/sbin/cban -i eth0 -m`
YLegend[eth0]: Bytes/s
ShortLegend[eth0]: B/s
WithPeak[eth0]: ymwd
PageTop[eth0]: < H1 >Traffic Analysis for Volga-Telecom< /H1 >

#Нагрузка на ЦП
LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
Target[cpu]:ssCpuRawUser.0&ssCpuRawUser.0:public@127.0.0.1+ssCpuRawSystem.0&ssCp
(убюрать перенос)
uRawSystem.0:public@127.0.0.1+ssCpuRawNice.0&ssCpuRawNice.0:public@127.0.0.1
RouterUptime[cpu]: public@127.0.0.1
MaxBytes[cpu]: 100
Title[cpu]: CPU Load
Unscaled[cpu]: ymwd
ShortLegend[cpu]: %
Options[cpu]: nopercent,pngdate
LegendI[cpu]: CPU Load
LegendO[cpu]:
WithPeak[cpu]: ymwd
PageTop[cpu]: < H1>Active CPU Load< /H1 >

# Температура ЦП (нужен пакет sensors, читай соответствующую статью)
Title[temp]: Temperature on box
PageTop[temp]: < H1>Temperature M/B and CPU< /H1 >
Target[temp]: `/usr/bin/sensors | /usr/bin/awk ‘/^temp1:/{ sub(/\+/,»",$2); print $2 }/^temp3:/{ sub(/\+/,»",$2); print $2 }’`
Options[temp]: noinfo,gauge,integer,nopercent,pngdate,unknaszero
Unscaled[temp]:dwmy
MaxBytes[temp]: 80
Kilo[temp]:1000
YLegend[temp]: Temperature
ShortLegend[temp]: C
LegendI[temp]: CPU Temp
LegendO[temp]: M/B Temp
Legend1[temp]: Temperature in C
Legend2[temp]: Temperature in C
WithPeak[temp]: ymwd

#Частота вращения кулеров
Title[fan1]: Fan HDD and CPU
PageTop[fan1]: < H1 >Fan HDD and CPU< /H1 >
Target[fan1]: `/usr/bin/sensors | /usr/bin/awk ‘/^fan1:/{ sub(/\+/,»",$2); print $2 }/^fan3:/{ sub(/\+/,»",$2); print $2 }’`
Options[fan1]: noinfo,gauge,integer,nopercent,pngdate,unknaszero
Unscaled[fan1]:dwmy
MaxBytes[fan1]: 3000
Kilo[fan1]:1000
YLegend[fan1]: Fan
ShortLegend[fan1]: rpm
LegendI[fan1]: CPU fan
LegendO[fan1]: HDD fan
Legend1[fan1]: Fan in rpm
Legend2[fan1]: Fan in rpm
WithPeak[fan1]: ymwd

#Температура HDD (нужен пакет hddtemp, читай соответствующую статью)
Title[hdd2]: Temperature HDD /bd
Target[hdd2]: `hddtemp /dev/hdc | /usr/bin/awk ‘/^\/dev\/hdc:/{ sub(/\+/,»",$4); print $4 }’`
Options[hdd2]: noinfo,gauge,integer,nopercent,pngdate,unknaszero
Unscaled[hdd2]:dwmy
MaxBytes[hdd2]: 60
Kilo[hdd2]:1000
YLegend[hdd2]: Temperature HDD
ShortLegend[hdd2]: C
LegendI[hdd2]: hdc
LegendO[hdd2]:
Legend1[hdd2]: Temperature in C
Legend2[hdd2]:
PageTop[hdd2]: < H1 >Temperature HDD hdc< /H1 >

#Нагрузка на UPS и заряд батареи (нужен пакет NUT, читай соответствующую статью)
Title[ups-battery]: UPS battery charge & load
Target[ups-battery]: `upsc ups@localhost | /usr/bin/awk ‘/^battery.charge:/{ sub(/\+/,»",$2); print $2 }/^ups.load:/{ sub(/\+/,»",$2); print $2 }’`
Options[ups-battery]: noinfo,gauge,integer,pngdate,unknaszero
Unscaled[ups-battery]:dwmy
MaxBytes[ups-battery]: 100
Kilo[ups-battery]:1000
YLegend[ups-battery]: Battery UPS
ShortLegend[ups-battery]: %
LegendI[ups-battery]: Battery charge
LegendO[ups-battery]: Battery load
Legend1[ups-battery]: Battery charge
Legend2[ups-battery]: Battery load
PageTop[ups-battery]: < H1>UPS battery charge & load< /H1 >

#RAM и Swap
LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
Title[mempercent]: Percentage Free Memory
RouterUptime[mempercent]: public@localhost
PageTop[mempercent]: < H1 >Percentage Free Memory< /H1 >
Target[mempercent]: ( memAvailReal.0&memAvailSwap.0:public@localhost ) * 100 / ( memTotalReal.0&memTotalSwap.0:public@localhost )
options[mempercent]: gauge,nopercent,pngdate,unknaszero
Unscaled[mempercent]: ymwd
MaxBytes[mempercent]: 100
YLegend[mempercent]: Memory %
ShortLegend[mempercent]: Percent
LegendI[mempercent]: Free RAM
LegendO[mempercent]: Free Swap
Legend1[mempercent]: Percentage Free RAM Memory
Legend2[mempercent]: Percentage Free Swap Memory


Понравилась статья? Поделись с остальными.

Комментарии закрыты.