Давненько я хотел разобраться как мониторить сетевые интерфейсы локальной машины через snmp и рисовать графики через mrtg. Еще больше мне хотелось через тот же snmp мониторить загрузку CPU и памяти.
Вчера собственно я с этим и разобрался, о чем и хочу Вам поведать. :)
Ставим необходимый софт:
$ sudo apt-get install snmpd mrtg
После чего правим файл /etc/snmp/snmpd.conf всего лишь в одном месте. Было:
com2sec paranoid default public
#com2sec readonly default public
#com2sec readwrite default private
Стало:
#com2sec paranoid default public
com2sec readonly default public
#com2sec readwrite default private
Теперь перезапускаем snmpd:
$ sudo /etc/init.d/snmpd restart
SNMPd готов к использованию. Остается отрисовка графиков – mrtg. Правим файл /etc/mrtg.cfg, приводя его к примерно следующему виду:
# Global configuration
HtmlDir: /path/to/htdocs
ImageDir: /path/to/htdocs/images
LogDir: /path/to/htdocs/logs
EnableIPv6: no###########################
# Сетевой интерфейс маршрутизатораTitle[eth0]: Output interface
PNGTitle[eth0]: Interface to Internet
MaxBytes[eth0]: 64000
AbsMax[eth0]: 128000
Options[eth0]: growright, bits
SetEnv[eth0]: MRTG_INT_IP=»192.168.0.1″ MRTG_INT_DESCR=»eth0″
Target[eth0]: 2:public@localhost:
PageTop[eth0]: <h1> Output interface</h1>
YLegend[eth0]: bits/s
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###########################
# CPULoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
Target[cpu]:ssCpuRawUser.0&ssCpuRawUser.0:public@127.0.0.1+ssCpuRawSystem.0&ssCpuRawSystem.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
PageTop[cpu]: <H1>Active CPU Load %</H1>
Unscaled[cpu]: ymwd
ShortLegend[cpu]: %
YLegend[cpu]: CPU Utilization
Legend1[cpu]: Active CPU in % (Load)
Legend2[cpu]:
Legend3[cpu]:
Legend4[cpu]:
LegendI[cpu]: Active
LegendO[cpu]:
Options[cpu]: growright,nopercent###########################
# MemoryLoadMIBs: /usr/share/snmp/mibs/HOST-RESOURCES-MIB.txt
Target[mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.6.0:public@localhost
PageTop[mem]: <H1>Free Memory</H1>
Options[mem]: nopercent,growright,gauge,noinfo
Title[mem]: Free Memory
MaxBytes[mem]: 1000000
kMG[mem]: k,M,G,T,P,X
YLegend[mem]: bytes
ShortLegend[mem]: bytes
LegendI[mem]: Free Memory:
LegendO[mem]:
Legend1[mem]: Free memory, not including swap, in bytes
Итого мы имеем отрисовку графиков сетевого интерфейса, загрузку процессора, использования памяти. Остается только нарисовать общий файл со всеми графиками:
$ sudo indexmaker /etc/mrtg.cfg > /path/to/htdocs/index.html
Собственно синтаксис файла конфигурации прост до безобразия. Кому интересно разобраться – .

Рубрики
Теги: 
У меня почему то из коробки никак проц не хотел заводится никаким способом. Потом написал сам. Выкладываю вдруг пригодится )
cat /etc/mrtg.cfg
LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
Target[cpu]: `/etc/mrtg/cpu`
MaxBytes[cpu]: 100
Title[cpu]: CPU Load
PageTop[cpu]: Active CPU Load %
Unscaled[cpu]: ymwd
ShortLegend[cpu]: %
YLegend[cpu]: CPU Utilization
Legend1[cpu]: Active CPU in % (Load)
Legend2[cpu]:
Legend3[cpu]:
Legend4[cpu]:
LegendI[cpu]: Active
LegendO[cpu]:
Options[cpu]: growright,nopercent
cat /etc/mrtg/cpu
#!/bin/bash
user=`snmpwalk -v1 -c public localhost ssCpuRawUser.0 |awk {'print $4'}`
system=`snmpwalk -v1 -c public localhost ssCpuRawSystem |awk {'print $4'}`
nice1=`snmpwalk -v1 -c public localhost ssCpuRawNice |awk {'print $4'}`
sum=`echo $user + $system + $nice1 | bc -ql `
echo $sum
2 Endo – проблема в том что новые дистрибутивы не парсят v2 MIBы и единственное решение, которая я нашел – это замена имен на OIDы. Работает, хоть немного и некрасиво – пример
@Arhnt:
Правка комментария выше, не отобразился пример:
Target[cpu]:.1.3.6.1.4.1.2021.11.50.0&.1.3.6.1.4.1.2021.11.50.0:public@localhost+.1.3.6.1.4.1.2021.11.52.0&.1.3.6.1.4.1.2021.11.52.0:public@localhost+.1.3.6.1.4.1.2021.11.51.0&.1.3.6.1.4.1.2021.11.51.0:public@localhost
Наиболее употребительные OID:
* ssCpuRawUser .1.3.6.1.4.1.2021.11.50
* ssCpuRawSystem .1.3.6.1.4.1.2021.11.52
* ssCpuRawNice .1.3.6.1.4.1.2021.11.51
* memAvailReal 1.3.6.1.4.1.2021.4.6
* memTotalReal 1.3.6.1.4.1.2021.4.5
* dskPercent .1.3.6.1.4.1.2021.9.1.9
То же самое и для графика утилизации памяти
Так все же как разобрались с пустыми графиками? В чем проблема?
Добрый день!
Я пытаюсь русифицировать html странички статистики mrtg, чтобы они были видны в кодировке UTF8. В KOI-8R и windows 1251 указываем язык russian либо russian 1251 – и никаких проблем, с UTF8 не получается….. Подскажите пожалуйста!
И еще вопросик: как рисовать графики с отрицательные величинами? у нас одна кошка запитана от -24 В, датчик напряжения есть и snmp статистику вполне можно снимать………
С уважением……
Александр, вы решили проблемму отрицательных величин? Бьюсь с аналогичным. SNMPGET выдает нормально с устройства отрицательное значение, а в лог mrtgы пишется 0
Target[eth0]: 2:public@localhost:
– так и не понял, откуда тут 2 :)
YLegend[eth0]: bits/s
– а тут случаем не bytes должны быть?
Ну и самое главное ты забыл добавить — что всё это нужно повесить на cron
2 – это номер порта. :)
Нет, похоже, всё-таки bits :)
[...] это сделать – можно почитать перейдя по этой ссылке http://silverghost.org.ua/2008/05/04/svyazka-snmpd-mrtg/ (SNMPв этом случае не [...]