Multi Router Traffic Grapher - один из древнейших инструментов для мониторинга сетевых интерфейсов, нагрузки на CPU и память и вообще чего угодно. MRTG написан на перл, поэтому его можно запустить под различные OS, я традиционно использую ALTLinux.
Обычно в пакете mrtg уже есть конфиги и хелперы для мониторинга нагрузки на процессор и использование памяти/свопа. Они работают из коробки и я не буду на них останавливаться. Остановимся на следующих задачах:
Конфигурационный файл:
[root@node2 ~]# cat /etc/mrtg/cputemp.cfgWorkDir: /var/www/html/mrtgRefresh: 300Interval: 5WriteExpires: YesIconDir: images/Target[cputemp]: `/opt/cputemp`MaxBytes[cputemp]: 90Options[cputemp]: growright,gauge,nopercentTitle[cputemp]: CPU TemperaturePageTop[cputemp]: <H1>CPU Temperature</H1>WithPeak[cputemp]: dwmyYLegend[cputemp]: TemperatureShortLegend[cputemp]: CLegendI[cputemp]: Temp:LegendO[cputemp]:Код хелпера:
[root@node2 ~]# cat /opt/cputemp#!/bin/shv=`sensors | grep CPU | cut -b15,16`echo $vecho $vecho 0echo 0Как видно для получения данных о температуре CPU используется пакет lm_sensors.
Пример:
Конфигурационный файл:
[root@node2 ~]# cat /etc/mrtg/hddtemp.cfgWorkDir: /var/www/html/mrtgRefresh: 300Interval: 5WriteExpires: YesIconDir: images/#HDD TempTarget[hddtemp]: `/opt/hddtemp`MaxBytes[hddtemp]: 90Options[hddtemp]: growright,gauge,nopercentTitle[hddtemp]: CPU TemperaturePageTop[hddtemp]: <H1>CPU Temperature</H1>WithPeak[hddtemp]: dwmyYLegend[hddtemp]: TemperatureShortLegend[hddtemp]: CLegendI[hddtemp]: Temp:LegendO[hddtemp]:Код хелпера:
[root@node2 ~]# cat /opt/hddtemp#!/bin/shv=`/usr/sbin/hddtemp /dev/sda | cut -b56,57`echo $vecho $vecho 0echo 0Для получения данных о температуре жесткого диска используется пакет hddtemp
Пример:
Конфигурационный файл:
[root@node2 /]# cat /etc/mrtg/fan.cfgWorkDir: /var/www/html/mrtgRefresh: 300Interval: 5WriteExpires: YesIconDir: images/Target[fan1]: `/opt/fan1`MaxBytes[fan1]: 5000Options[fan1]: growright,gauge,nopercentTitle[fan1]: FAN1PageTop[fan1]: <H1>FAN1</H1>WithPeak[fan1]: dwmyYLegend[fan1]: RPMShortLegend[fan1]: CLegendI[fan1]: RPM:LegendO[fan1]:Код хелпера:
[root@node2 /]# cat /opt/fan1#!/bin/shv=`sensors | grep fan1 | awk '{ print $2 }'`echo $vecho $vecho 0echo 0Для мониторинга скорости вращения так же используется lm_sensors.
Пример:
Конфигурационный файл:
[root@node2 /]# cat /etc/mrtg/disk.cfgWorkDir: /var/www/html/mrtgRefresh: 300Interval: 5WriteExpires: YesIconDir: images/Title[md0]: /dev/md0 Disk Usage ("/")Target[md0]: `sh /opt/mrtg-disk md0`PageTop[md0]: <h1>/dev/md0 Disk Usage ("/")</h1>MaxBytes[md0]: 8600000000Unscaled[md0]: dwmyYLegend[md0]: BytesLegendI[md0]: UsedLegendO[md0]: FreeOptions[md0]: gauge growright noinfo nobannerShortLegend[md0]: BytesLegend1[md0]: UsedLegend2[md0]: FreeКод хелпера:
[root@node2 /]# cat /opt/mrtg-disk#!/bin/bashcase "$1" inmd0) echo `df | grep /dev/md0 | awk '{ print $3 }'` "* 1024" | bc echo `df | grep /dev/md0 | awk '{ print $4 }'` "* 1024" | bc ;;Как видно mrtg запускает хелпер передавая ему имя раздела, т.е. можно в хелпере предусмотреть варианты для всех разделов и добавить в конфиг все, которые требуется мониторить.
Пример:
Конфигурационный файл:
[root@node2 /]# cat /etc/mrtg/net.cfgWorkDir: /var/www/html/mrtgRefresh: 300Interval: 5WriteExpires: YesIconDir: images/Title[host-eth0]: eth0 - Traffic statisticsMaxBytes[host-eth0]: 12500000AbsMax[host-eth0]: 12500000#Options[host-eth0]: gaugeOptions[host-eth0]: growrightTarget[host-eth0]: `/opt/mrtg-eth.pl -d eth0`PageTop[host-eth0]: <H1>eth0 - Traffic statistics on node2</H1>YLegend[host-eth0]: Bytes/sShortLegend[host-eth0]: B/sLegend1[host-eth0]: Incoming TrafficLegend2[host-eth0]: Outgoing TrafficLegend3[host-eth0]: Maximum Incoming TrafficLegend4[host-eth0]: Maximum Outgoing TrafficLegendI[host-eth0]: In:LegendO[host-eth0]: Out:WithPeak[host-eth0]: ymwdХелпер скачиваем отсюда: http://sourceforge.net/projects/mrtg-eth
Пример:
mrtg стартует по крону раз в 5 минут, у меня вот так:
[root@node2 opt]# cat /etc/cron.d/mrtg0-59/5 * * * * root /opt/mrtgСобственно сам скрипт:
[root@node2 opt]# cat /opt/mrtg#!/bin/sh/usr/bin/mrtg --user mrtg --group mrtg /etc/mrtg/mrtg.cfg/usr/bin/mrtg --user mrtg --group mrtg /etc/mrtg/cputemp.cfg/usr/bin/mrtg --user mrtg --group mrtg /etc/mrtg/memory.cfg/usr/bin/mrtg --user mrtg --group mrtg /etc/mrtg/net.cfg/usr/bin/mrtg --user mrtg --group mrtg /etc/mrtg/disk.cfg/usr/bin/mrtg --user mrtg --group mrtg /etc/mrtg/hddtemp.cfg/usr/bin/mrtg --user mrtg --group mrtg /etc/mrtg/fan.cfgКак видно из конфигурационных файлов, вся статистика будет складываться в /var/www/html/mrtg
Смотреть можно через apche например.
Как видно, это весьма гибкий инструмент, со своими плюсами и недостатками. С помощью mrtg можно снимать SNMP статистику с интерфейсов CISCO или еще какого оборудования. Но эту задачу я как правило поручаю другому инструменту - cacti, ибо интерфейсов очень много, а mrtg на каждый интерфейс рисует по 4 картинки каждые 5 минут. Иногда эти картинки нужны (показать кому-то через web сервер), но иногда они нужны только в момент просмотра статистики, поэтому на стандартные задачи я предпочитаю юзать cacti, думаю про него написать следующую статью в разделе мониторинг.
Дополнительную информацию можно получить на сайте проекта: http://oss.oetiker.ch/mrtg/