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

Метки статьи: ‘mrtg’

Добро пожаловать в блог! Надеемся, что Вы еще вернетесь.

Задача

Показывать график по трафику от/к одного BGP пира при условии того, что сессия с ним устанавливается в одном vlan с другими BGP сессиями до других BGP пиров.

Отрисовать график загрузки по интерфейсу не выход, т.к. помимо нужного трафика будет присутствовать еще и трафик с другими BGP пирами.

Решение

В недрах гугла нашлось упоминание про mac accounting.

Суть данной технологии  — ведение учета трафика в байтах и фреймах, ушедшего/пришедшего с определенного мак адреса.

Как по итогу оказалось сделать это нет так сложно.

Имеем Juniper M7i,  для включения на физическом интерфейсе достаточно сделать следующее:

Войдем в режим конфигурации:
root@juniper> configure

Добавим в конфигурацию:

[edit]
root@juniper#
set interfaces ge-0/0/1 gigether-options ethernet-switch-profile mac-learn-enable

после чего в конфигурации интерфейса появится новая секция, посмотрим:
[edit]
root@juniper.#
show interfaces ge-0/0/1

ge-0/0/1 {
    ...................
    gigether-options {
          ethernet-switch-profile {
                 mac-learn-enable;
          }
    }
    ....................
}

Перед коммитом проверим все ли в порядке:
[edit]
root@juniper#
commit check

Если все в порядке и ошибок нет, то можно применять:

[edit]
root@juniper#
commit comment «Enabling mac accounting»


Примечание:
mac accounting нельзя включить на встроенном гигабитном интерфейсе M7i и 10-портовом гигабитном контроллере.


На этом конфигурация Juniper закончена. Что дальше ? А дальше нам нужно как то получить данные для MRTG, те данные по которым и будет строиться график.
Это и оказалось сложнее всего, а именно нахождение необходимых OID’ов где можно забрать нужные нам данные.

Вот алгоритм их нахождения:

1. Получаем номер SNMP-индекса интерфейса (это может быть как сам физический интерфейс так и vlan (802.1q) на этом физическом интерфейсе), получаем на основе прописанного на интерфейсе IP-адреса, например 1.1.1.1 (в нашем случае IP-адрес находится на vlan):

.1.3.6.1.2.1.4.20.1.2.1.1.1.1 = INTEGER: 208

2. Получаем мак-адрес нужного нам BGP пира, например с IP-адресом 1.1.1.2, зная индекс интерфеса (исходя из п.1 это 208):

.1.3.6.1.2.1.4.22.1.2.208.1.1.1.2 = STRING: 0:e0:81:b6:3c:1b

Он нам понадобится далее, но в десятичном виде: 0.224.129.182.60.27

3. Теперь нам нужен номер vlan за которым находится BGP пир. Мы ессно его знаем исходя из конфига девайса и можем посмотреть так (зная номера его индекса исходя из п.1 это 208):

.1.3.6.1.2.1.2.2.1.2.208 = STRING: ge-0/0/1.994

Т.к. на физическом интерфейсе у нас действительно присутствует vlan с id 994 на котором висит IP-адрес 1.1.1.1.

4. после чего нам нужно будет получить SNMP-индекс физического ge-0/0/1, например вот так в тупую:

snmpwalk -v2c -c RO-Community JUNIPER_CONTROL_IP .1.3.6.1.2.1.2.2.1.2 | grep 'ge-0/0/1$'

Видим:

.1.3.6.1.2.1.2.2.1.2.180 = STRING: ge-0/0/1

5. И вот теперь, на основе всех полученных данных, мы можем составить финальные OID’ы для построение графика MRTG:

Первый OID это входящий трафик (HCInOctets):

.1.3.6.1.4.1.2636.3.23.1.1.1.3.180.994.0.224.129.182.60.27 = Counter64: 174250

Второй OID это исходящий трафик (HCOutOctets):

.1.3.6.1.4.1.2636.3.23.1.1.1.5.180.994.0.224.129.182.60.27 = Counter64: 86433120

После чего мы уже можем сделать конфиг для MRTG:

Title[peer_m7i]: 1.1.1.2 BGP peer
MaxBytes[peer_m7i]: 125000000
Target[peer_m7i]: .1.3.6.1.4.1.2636.3.23.1.1.1.3.180.994.0.224.129.182.60.27&.1.3.6.1.4.1.2636.3.23.1.1.1.5.180.994.0.224.129.182.60.27:RO-Community@JUNIPER_CONTROL_IP

З.Ы. На Juniper серии MX mac accounting включается немного по другому:

[edit]
protocols {
    l2-learning {
        mac-statistics;
    }
}

Ссылки

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

Автор: Панфилов Алексей (lehis(at) subnets.ru)

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

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)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 10, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту