SNMP (Simple Network Management Protocol) — простой протокол управления сетью.
Это технология, призванная обеспечить управление и контроль за устройствами и приложениями в сети связи путём обмена управляющей информацией между агентами, располагающимися на сетевых устройствах, и менеджерами, расположенными на станциях управления. В настоящее время SNMP является базовым протоколом управления сети Internet. SNMP определяет сеть как совокупность сетевых управляющих станций и элементов сети (главные машины, шлюзы и маршрутизаторы, терминальные серверы), которые совместно обеспечивают административные связи между сетевыми управляющими станциями и сетевыми агентами.
MRTG (Multi Router Traffic Grapher) — утилита позволяющая осуществлять мониторинг сетевых линков (да и не только их). MRTG на выходе генерирует HTML страницы с графиками в PNG.
Пример:
Итак вы решили, что пора следить за нагрузкой на сетевых линках в вашей сети.
Что для этого нужно ?
Вам понадобятся две вещи:
- /usr/ports/net-mgmt/mrtg
- /usr/ports/net-mgmt/net-snmp
Сначала установим MRTG:
[root@work ~]# cd /usr/ports/net-mgmt/mrtg
[root@work /usr/ports/net-mgmt/mrtg]# make install clean
после инсталляции появится: /usr/local/bin/mrtg
Затем snmp:
[root@work ~]# cd /usr/ports/net-mgmt/net-snmp
[root@virus /usr/ports/net-mgmt/net-snmp]# make install clean
после инсталляции появится: /usr/local/sbin/snmpd
Приступаем к настройке:
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:
[root@work ~]# 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-адрес хоста с которого мы хотим получить данные.
Если после запуска snmpwalk вы не получили в ответ:
Timeout: No Response from 127.0.0.1
а «поехали» данные то все ОК, если timeout, то проверьте, что процесс запущен и слушает порт udp 161, а также что IP-адрес хоста, с которого вы пытаетесь получить эти данные, присутвует в /usr/local/share/snmp/snmpd.conf с запрашиваемым вами community.
Если вам необходимо снимать данные по SNMP с сетевого устройства (коммутатор (свич), маршрутизатор, etc.), который так же будет являться «клиентом», то настройте SNMP на нем, также указав хосты и community на RO (Read Only).
Пример настройки SNMP на Cisco Catalyst:
snmp-server community pub RO
snmp-server location server-farm
snmp-server contact my-cool-provider
snmp-server host 10.3.1.1 pub
snmp-server host 10.3.1.2 pub
Пример настройки SNMP на D-link DES 3526:
create snmp group pub v2c read_view CommunityView notify_view CommunityView
create snmp community pub view CommunityView read_only
create snmp host 10.3.1.1 v2c pub
create snmp host 10.3.1.2 v2c pub
MRTG
Конфигурационные файлы MRTG по умолчанию находятся в /usr/local/etc/mrtg/.
Файл mrtg.conf:
Language: russian1251
WorkDir: /usr/local/www/mrtg
background[_]: #FBEDD0
Options[_]: Bits
Forks: 4
#Пример получения графика по порту №1 cisco catalyst 3560G
Title[cat_1]: Traffic for Cisco 3560 (Port 1)
PageTop[cat_1]: <h1><B>Cisco 3560: Port 1 </B></h1>
Target[cat_1]: 10101:pub@10.3.1.10:::::2
RouterUptime[cat_1]: pub@10.3.1.10
MaxBytes[cat_1]: 250000000
Где 10.3.1.10 — IP адрес утсройства, pub — community, 10101 — номер первого порта в дереве SNMP.
Как я узнал, что 10101 это первй порт ? Запускаем:
snmpwalk -v2c -c pub 10.3.1.10
Видим:
…………………………
IF-MIB::ifDescr.10101 = STRING: GigabitEthernet0/1
IF-MIB::ifDescr.10102 = STRING: GigabitEthernet0/2
IF-MIB::ifDescr.10103 = STRING: GigabitEthernet0/3
IF-MIB::ifDescr.10104 = STRING: GigabitEthernet0/4
…………………………
IF-MIB::ifDescr.10127 = STRING: GigabitEthernet0/27
IF-MIB::ifDescr.10128 = STRING: GigabitEthernet0/28
………………………….
Таким же образом можно описать в /usr/local/etc/mrtg/mrtg.conf и остальные порты catalyst`а.
Пример получение загрузки CPU cisco catalyst по snmp.
В /usr/local/etc/mrtg/mrtg.conf дописываем:
Title[cpu3560]: Cisco 3550 CPU Usage
Target[cpu3560]: 1.3.6.1.4.1.9.2.1.58.0&1.3.6.1.4.1.9.2.1.58.0:pub@10.3.1.10:::::2
LegendI[cpu3560]: Load CPU
LegendO[cpu3560]:
YLegend[cpu3560]: CPU load, %
MaxBytes[cpu3560]: 100
AbsMax[cpu3560]: 100
ShortLegend[cpu3560]: %
PageTop[cpu3560]: <h1><B>Средняя загрузка процессора Cisco 3560</B></h1>
Options[cpu3560]: Absolute, nopercent, gauge
Legend1[cpu3560]: Средняя загрузка процессора
Пример получение использование памяти cisco catalyst по snmp.
В /usr/local/etc/mrtg/mrtg.conf дописываем:
Title[mem3560]: Memory Usage
MaxBytes[mem3560]: 256000000
AbsMax[mem3560]: 256000000
Target[mem3560]: 1.3.6.1.4.1.9.9.48.1.1.1.5.1&1.3.6.1.4.1.9.9.48.1.1.1.6.1:pub@10.3.1.10:::::2
LegendI[mem3560]: Used mem
LegendO[mem3560]: Free mem
YLegend[mem3560]: Mem usage, Mb
ShortLegend[mem3560]: b
PageTop[mem3560]: <h1><B>Среднее использование памяти Cisco 3560</B></h1>
Options[mem3560]: Absolute, nopercent, gauge, nobanner
Legend1[mem3560]: Used mem
Legend2[mem3560]: Free mem
Пример получение загрузки CPU с сервера.
В /usr/local/etc/mrtg/mrtg.conf дописываем:
Pagetop[srv01_cpu]: <h1><B>CPU Сервер-01</B></h1>
Title[srv01_cpu]: CPU Сервер-01
PNGTitle[srv01_cpu]: CPU Сервер-01
MaxBytes[srv01_cpu]: 100
AbsMax[srv01_cpu]: 100
Target[srv01_cpu]: .1.3.6.1.4.1.2021.11.9.0&.1.3.6.1.4.1.2021.11.9.0:pub@10.3.1.11 + .1.3.6.1.4.1.2021.11.10.0&.1.3.6.1.4.1.2021.11.10.0:pub@10.3.1.11
RouterUptime[srv01_cpu]: pub@10.3.1.11
LegendI[srv01_cpu]: CPU
LegendO[srv01_cpu]: CPU
YLegend[srv01_cpu]: Usage CPU, %
ShortLegend[srv01_cpu]: %
Legend1[srv01_cpu]: CPU
Legend2[srv01_cpu]: CPU
Пример получение загрузки сетевой карты сервера с IP-адресом 10.10.10.1.
В /usr/local/etc/mrtg/mrtg.conf дописываем:
Pagetop[srv01_net1]: <h1><B>Сетевая карта с IP 10.10.10.1</B></h1>
Title[srv01_net1]: Сетевая карта с IP 10.10.10.1
PNGTitle[srv01_net1]: Сетевая карта с IP 10.10.10.1
MaxBytes[srv01_net1]: 250000000
Target[srv01_net1]: -/10.10.10.1:pub@10.3.1.12
RouterUptime[srv01_net1]: pub@10.3.1.12
Будем считать что файл /usr/local/etc/mrtg/mrtg.conf вы подготовили.
Проверяем конфиг
запустим руками для проверки, что мы не ошиблись в конфиге
/usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.conf
Если строчек «ERROR: CFG Error in» нет, то все ОК, если есть исправляем ошибки.
Запускаемся
Добавляем в файл /etc/crontab:
*/5 * * * * root /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.conf
Теперь ждем 5-ть минут и смотрим в папку /usr/local/www/mrtg, которая обозначена в нашем конфиге как WorkDir, куда и будут складываться HTML страницы с графиками. Не пугайтесь если графики по началу пусты, подождите хотябы 30-ть минут, что бы появилось достаточно данных для того, чтобы вы увидели рабочий график.
Благодаря crontab`у график будет обновляться каждые 5-ть минут и вы будете видеть графики отображающие среднее за 5-ть минут значение. Делать меньше 5-ти минут не рекомендую.
С помощью MRTG можно строить графики на любых данных. Главное всегда придоставлять для MRTG 4-ре строки. Пример:
В /usr/local/etc/mrtg/mrtg.conf дописываем:
Pagetop[srv01_hdd]: HDD Сервер-01<br>
Title[srv01_hdd]: HDD Сервер-01
PNGTitle[srv01_hdd]: HDD use
MaxBytes[srv01_hdd]: 1250000
AbsMax[srv01_hdd]: 1250000
Target[srv01_hdd]: `/bin/cat /usr/monitor/SRV-01.log`
LegendI[srv01_hdd]: /usr
LegendO[srv01_hdd]: /var
YLegend[srv01_hdd]: Used space, Mb
ShortLegend[srv01_hdd]: Mb
Legend1[srv01_hdd]: /usr
Legend2[srv01_hdd]: /var
При этом в файле /usr/monitor/SRV-01.log (который, например, может формировать perl скрипт):
HDD: /usr and /var
1713067
686879
14 days, 06:33:17
Где 1-ая строка — описание, 2-ая — кол-во занято в разделе /usr, 3-я -кол-во занято в разделе /var, 4-ая время uptime данного сервера.
Используя этот пример можно «налепить» любых графиков 😉
Вам в помощь может пригодится программа cfgmaker, которая устанавливается вместе с mrtg (идет вместе с mrtg), обычно находится тут: /usr/local/bin/cfgmaker
Пример запуска:
cfgmaker pub@127.0.0.1 > myrouter.conf
После завершения выполнения в файле myrouter.conf будет конфиг mrtg для хоста 127.0.0.1
Отдельные файлы конфигов (как например myrouter.conf) можно «включать» в глобальный конфиг /usr/local/etc/mrtg/mrtg.conf с помощью include, дописав в файле mrtg.conf строчку:
include: /usr/local/etc/mrtg/myrouter.conf
Рекомендую полистать до полного просветления:
- man snmpwalk
- man smnpget
- man snmpset
- man snmpconf
- man cfgmaker
(P.S. команда man выполняется в консоле сервера)
Ссылки:
- http://oss.oetiker.ch/mrtg/
- http://oss.oetiker.ch/rrdtool/
- RFC1157 — Simple Network Management Protocol (SNMP)
- Вопросы по MRTG на нашем форуме
З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !
Автор: Николаев Дмитрий (virus (at) subnets.ru)
Похожие статьи:
- Не найдено
lehisnoe сказал:
Для корректного построения mrtg графиков портов или интерфейсов, через которые пропускается трафик со скоростью большей, чем 100мбит/сек, для получения данных следует версию 2с протокола snmp, которая открывает доступ к 64-битным счетчикам.
Обращу внимание на тему поддержки counter64 во FreeBSD: поддержка counter64 для интерфейсов появилась только с версией net-snmp 5.4 и по дефолту выключена. Для ее активации следует пересобрать порт так: make WITH_MFD_REWRITES=yes install clean.
В скриптах php для опроса хостов по версии 2с следует использовать функции:
string snmp2_get(string host, string community, string object_id [, int timeout [, int retries]]);
28.11.2008, 16:19string snmp2_getnext(string host, string community, string object_id [, int timeout [, int retries]]);
array snmp2_walk(string host, string community, string object_id [, int timeout [, int retries]]);
array snmp2_real_walk(string host, string community, string object_id [, int timeout [, int retries]]);
int snmp2_set(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]]);
johnson сказал:
сделал Пример для получение загрузки CPU с сервера
06.11.2010, 23:00но логи пустые какие то, хотя прошло более 30 минут
http://news.telenet.ru/mrtg/srv01_cpu.html
lehisnoe сказал:
Для обсуждения — вэлкам на наш форум: http://subnets.ru/forum/
09.11.2010, 09:54virus сказал:
johnson, проверь snmpwalk`ом что ты получаешь данные по snmp от сервера
11.12.2010, 11:52Resident сказал:
Если делал по инструкции то в
/usr/local/etc/rc.d/mrtg_daemon
правим строчку
: ${mrtg_daemon_config=»/usr/local/etc/mrtg/mrtg.cfg»}
на
: ${mrtg_daemon_config=»/usr/local/etc/mrtg/mrtg.conf»}
по умолчанию вроде ставиться как /usr/local/etc/mrtg/mrtg.cfg
20.12.2010, 13:51можно и не менять на mrtg.conf
lehisnoe сказал:
2 Resident:
Для работы mrtg в кач-ве демона корректнее добавить в /etc/rc.conf:
mrtg_daemon_enable=»YES»
mrtg_daemon_config=»путь_к_конфигу_mrtg»
и далее /usr/local/etc/rc.d/mrtg_daemon [fast|force|one](start|stop|restart|rcvar|status|poll)
21.12.2010, 14:52mormishka сказал:
сделал загрузку проца на cisco и всё работает, большое спасибо!
но график идёт слева на право, а я хочу наоборот, справо на лево.
для обычных интерфейсов (загрузки интерфейсов), достаточно сделать
option[_]: growright
а что нужно сделать, для проца?
заранее благодарен за любой ответ
01.02.2012, 10:25admin сказал:
Пожалуйста.
читаем тут: http://oss.oetiker.ch/mrtg/doc/mrtg-reference.en.html
Options
The Options Keyword allows you to set some boolean switches:
growright
The graph grows to the left by default. This option flips the direction of growth causing the current time to be at the right edge of the graph and the history values to the left of it.
Если исходить из примера в статье то пишем:
Options[cpu3560]: growright
А Options[_]: growright устанавливает глобальное дефолтное значение, т.е. если для target явно Options не указаны, то будет применяться это значение.
01.02.2012, 10:41Это так же описано по линку данному выше.