ISP`s IT Аутсорсинг
Быстрый переход: Главная блога Главная сайта Форум
Если Вы чего то недопоняли или не нашли - задайте
вопрос на нашем форуме и мы попробуем Вам помочь.
Subnets.ru Регистрация IP и Автономных систем mega-net.ru

SNMP (Simple Network Management Protocol) — простой протокол управления сетью.

Это технология, призванная обеспечить управление и контроль за устройствами и приложениями в сети связи путём обмена управляющей информацией между агентами, располагающимися на сетевых устройствах, и менеджерами, расположенными на станциях управления. В настоящее время SNMP является базовым протоколом управления сети Internet. SNMP определяет сеть как совокупность сетевых управляющих станций и элементов сети (главные машины, шлюзы и маршрутизаторы, терминальные серверы), которые совместно обеспечивают административные связи между сетевыми управляющими станциями и сетевыми агентами.

MRTG (Multi Router Traffic Grapher) — утилита позволяющая осуществлять мониторинг сетевых линков (да и не только их). MRTG на выходе генерирует HTML страницы с графиками в PNG.

Пример:

mrtg graph example

Итак вы решили, что пора следить за нагрузкой на сетевых линках в вашей сети.

Что для этого нужно ?

Вам понадобятся две вещи:

  • /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]:» у нас два варианта:

  1. нажать ENTER, но тогда любой хост в сети сможет «снимать» показания по SNMP с этого сервера используя community pub.
  2. четко указать 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 выполняется в консоле сервера)

Ссылки:

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Автор: Николаев Дмитрий (virus (at) subnets.ru)

Похожие статьи:

    Не найдено

Прочитано: 58 080 раз(а)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 10, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

комментариев 8

  1. 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]]);
    string 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]]);

  2. johnson сказал:

    сделал Пример для получение загрузки CPU с сервера
    но логи пустые какие то, хотя прошло более 30 минут
    http://news.telenet.ru/mrtg/srv01_cpu.html

  3. lehisnoe сказал:

    Для обсуждения — вэлкам на наш форум: http://subnets.ru/forum/

  4. virus сказал:

    johnson, проверь snmpwalk`ом что ты получаешь данные по snmp от сервера

  5. Resident сказал:

    Если делал по инструкции то в
    /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
    можно и не менять на mrtg.conf

  6. 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)

  7. mormishka сказал:

    сделал загрузку проца на cisco и всё работает, большое спасибо!
    но график идёт слева на право, а я хочу наоборот, справо на лево.
    для обычных интерфейсов (загрузки интерфейсов), достаточно сделать
    option[_]: growright
    а что нужно сделать, для проца?

    заранее благодарен за любой ответ

  8. admin сказал:

    Пожалуйста.

    читаем тут: 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 не указаны, то будет применяться это значение.
    Это так же описано по линку данному выше.

Добавить комментарий

Вам следует авторизоваться для размещения комментария.