SNMP (Simple Network Management Protocol) — простой протокол управления сетью.
Это технология, призванная обеспечить управление и контроль за устройствами и приложениями в сети связи путём обмена управляющей информацией между агентами, располагающимися на сетевых устройствах, и менеджерами, расположенными на станциях управления. В настоящее время SNMP является базовым протоколом управления сети Internet. SNMP определяет сеть как совокупность сетевых управляющих станций и элементов сети (главные машины, шлюзы и маршрутизаторы, терминальные серверы), которые совместно обеспечивают административные связи между сетевыми управляющими станциями и сетевыми агентами.
MRTG (Multi Router Traffic Grapher) – утилита позволяющая осуществлять мониторинг сетевых линков (да и не только их). MRTG на выходе генерирует HTML страницы с графиками в PNG.
Что для этого нужно ?
Сначала установим MRTG:
# cd /usr/ports/net-mgmt/mrtg
# make install clean
после инсталляции появится: /usr/local/bin/mrtg
Затем snmp:
# cd /usr/ports/net-mgmt/net-snmp
#/usr/ports/net-mgmt/net-snmp]# make install clean
Приступаем к настройке: SNMP
Если вам необходимо мониторить что либо на другом компьютере/сервере (он будет являться «клиентом»),
то после установки на нем snmp выполняем команду:
snmpconf -i -f
Запустится утилита которая поможет создать конфигурационный файл для snmp /usr/local/share/snmp/snmpd.conf.
После запуска выбираем пункт 1 (1: snmpd.conf), затем пункт 2 (2: Access Control Setup), а затем пункт 3 (3: a SNMPv1/SNMPv2c read-only access community name).
На вопрос «The community name to add read-only access for:» отвечаем именем community на которое будет отзываться наш сервер, например pub.
На вопрос «The hostname or network address to accept this community name from [RETURN for all]:» у нас два варианта:
-
нажать ENTER, но тогда любой хост в сети сможет «снимать» показания по SNMP с этого сервера используя community pub.
-
четко указать IP-адрес хоста с которого будут приходить запросы. (это может быть и сам хост 127.0.0.1)
На последний вопрос об ограничениях просто жмем ENTER.
На этом конфигурирование для нас закончено, печатаем букву f, жмем ENTER, печатаем f жмем ENTER, печатаем q, жмем ENTER и программа конфигуратор завершает свою работу сообщая:
The following files were created:
snmpd.conf installed in /usr/local/share/snmp
Посмотрим как выглядит /usr/local/share/snmp/snmpd.conf
rocommunity pub 127.0.0.1
Это означает что, хост с IP-адресом 127.0.0.1 может только «читать» используя community pub (помним, что по snmp можно и «писать» (управлять)).
Добавляем в /etc/rc.conf:
snmpd_enable="YES"
Запускаем командой:
/usr/local/etc/rc.d/snmpd start
Смотрим на месте ли процесс snmp:
# ps -ax | grep snmp
927 ?? S 0:23.01 /usr/local/sbin/snmpd -p /var/run/snmpd.pid
76815 p0 S+ 0:00.00 grep snmp
[root@work ~]# sockstat | grep :161
root snmpd 927 13 udp4 *:161 *:*
Все в порядке, процесс на месте и «слушает» порт udp 161.
Проверить доступность «чтения» данных по SNMP c любого устройства можно командой:
snmpwalk -v2c -c pub 127.0.0.1
Где pub это community, а 127.0.0.1 IP-адрес хоста с которого мы хотим получить данные.
Приступаем к настройке: MRTG
#cfgmaker pub@127.0.0.1 > /usr/local/etc/mrtg/mrtg.cfg
Конфигурационные файлы MRTG
/usr/local/etc/mrtg/mrtg.cnf
добовляем
Language: russian1251
WorkDir: /usr/local/www/apache22/data/mrtg/
background[_]: #FBEDD0
Options[_]: Bits
Forks: 4
#ee /etc/rc.conf
mrtg_daemon_enable="YES"
mrtg_daemon_config="/usr/local/etc/mrtg/mrtg.cfg"
Запускаем командой:
#/usr/local/etc/rc.d/mrtg_daemon start
Проверяем конфиг
запустим руками для проверки, что мы не ошиблись в конфиге
/usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
Если строчек «ERROR: CFG Error in» нет, то все ОК, если есть исправляем ошибки.
и создаем index.html файлы
#indexmaker --columns=1 /usr/local/etc/mrtg/mrtg.cfg > /usr/local/www/apache22/data/mrtg/index.html
Добавляем в файл /etc/crontab:
*/5 * * * * root /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
Теперь ждем 5-ть минут и смотрим в папку /usr/local/www/apache22/data/mrtg/, которая обозначена в нашем конфиге как WorkDir,
куда и будут складываться HTML страницы с графиками. Не пугайтесь если графики по началу пусты, подождите хотябы 30-ть минут,
что бы появилось достаточно данных для того, чтобы вы увидели рабочий график.
Благодаря crontab`у график будет обновляться каждые 5-ть минут и вы будете видеть графики отображающие среднее за 5-ть минут значение. Делать меньше 5-ти минут не рекомендую.
Коментарі
###########################
# CPU
LoadMIBs: /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]: 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
###########################
# Memory
LoadMIBs: /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]: Free Memory
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
cfgmaker --ifref=ip --global 'WorkDir: /usr/local/www/apache22/data/stat' --global 'LogDir: /var/log/mrtg' --global 'ImageDir: /usr/local/www/apache22/data/stat/img' --global 'Language: russian1251' --global 'Options[_]: growright,bits' --output /usr/local/etc/mrtg/mrtg.cfg pub@127.0.0.1
Memory