В этом видео уроке мы рассмотрим мониторинг сетевых интерфейсов по SNMP в системе Zabbix. SNMP широко применяется в системном администрировании. Zabbix поддерживает snmp первой, второй и третьей версии, а так же snmp trap.
Для мониторинга различных параметров устройства используются MIBs (Management Information Bases) - набор переменных, которые описывают характеристики устройств, поддерживающих snmp. Существует более 100 стандартных MIB и большое количество проприетарных MIB различных производителей.
Ниже приведены ссылки на проприетарные MIBs различных производителей:
OID - уникальный идентификатор объекта. Каждый уникальный идентификатор объекта идентифицирует переменную, которая может быть прочитана или установлена через SNMP. Иерархия MIB может быть изображена как дерево с безымянным корнем, уровни которого присвоены разными организациями. На самом высоком уровне MIB OIDы принадлежат различным организациям, занимающимся стандартизацией, в то время как на более низком уровне OIDы выделяются ассоциированными организациями. Эта модель обеспечивает управление на всех слоях сетевой модели OSI, так как MIBы могут быть определены для любых типов данных и операций.
Однако часто бывает достаточно стандартных MIB. В таблице приведены наиболее используемые OID в snmp.
Часто используемые OID в системе Zabbix(zabbix snmp OID)
Специальный MIB | Идентификатор | Описание |
ifIndex | 1.3.6.1.2.1.2.2.1.1 | Уникальное значение для каждого интерфейса. От 1 до ifnumber. |
ifDescr | 1.3.6.1.2.1.2.2.1.2 | Текстовая строка содержащая информацию о интерфейсе. Эта строка может включать в себя название компании производителя, имя продукта, аппаратную версию интерфейса. |
ifType | 1.3.6.1.2.1.2.2.1.3 | Тип интерфейса, например, 6 - ethernet; 9 - 802.5 маркерное кольцо; 23 - PPP; 28 - SLIP. |
ifMtu | 1.3.6.1.2.1.2.2.1.4 | Mtu для конкретного интерфейса. Размер наибольшей датаграммы, которую может отправить/получить интерфейс, указывается в байтах |
ifSpeed | 1.3.6.1.2.1.2.2.1.5 | Текущая скорость интерфейса в битах за секунду. |
ifPhysAddress | 1.3.6.1.2.1.2.2.1.6 | Физический адрес интерфейса или строка нулевой длины для интерфейсов без физического адреса (напр. последовательный). |
ifAdminStatus | 1.3.6.1.2.1.2.2.1.7 | Текущее административное состояние интерфейса. |
ifOperStatus | 1.3.6.1.2.1.2.2.1.8 | Текущее рабочее состояние интерфейса. |
ifInOctets | 1.3.6.1.2.1.2.2.1.10 | Полное число полученных байтов, включая символы заголовков. |
ifInUcastPkts | 1.3.6.1.2.1.2.2.1.11 | Количество пакетов одноадресной рассылки, доставленных на верхний уровень стека протокола. |
ifInNUcastPkts | 1.3.6.1.2.1.2.2.1.12 | Количество пакетов НЕ одноадресной рассылки (broadcast и multicast), доставленных на верхний уровень стека протокола. |
ifInDiscards | 1.3.6.1.2.1.2.2.1.13 | Количество входящих, но отвергнутых пакетов, даже если не было обнаружено ошибок, мешающих доставке пакетов на верхний уровень стека протокола. Одна из возможных причин для отвержения пакета могло быть освобождение места в буфере. |
ifInErrors | 1.3.6.1.2.1.2.2.1.14 | Количество входящих пакетов, полученных с ошибкой, из за которой пакеты не были доставлены на верхний уровень стека протокола. |
ifInUnknownProtos | 1.3.6.1.2.1.2.2.1.15 | Количество пакетов, полученных через интерфейс, но отвергнутых из за неизвестного или не поддерживаемого протокола. |
ifOutOctets | 1.3.6.1.2.1.2.2.1.16 | Полное количество отправленных октетов с интерфейса, включая символы заголовков. |
ifOutUcastPkts | 1.3.6.1.2.1.2.2.1.17 | Полное количество пакетов, которые пытался отправить верхний уровень стека протокола, и которые адресованы НЕ на broadcast или multicast адреса на этом суб-уровне, включая те которые были отвергнуты или не отправлены. |
ifOutNUcastPkts | 1.3.6.1.2.1.2.2.1.18 | Полное количество пакетов, которые пытался отправить верхний уровень стека протокола, и которые адресованы на broadcast или multicast адреса на этом суб-уровне, включая те которые были отвергнуты или не отправлены. |
ifOutDiscards | 1.3.6.1.2.1.2.2.1.19 | Количество исходящих пакетов, которые были отвергнуты даже если не было обнаружено ошибок, мешающих отправке. Одна из возможных причин отвержения пакета могло быть освобождение места в буфере. |
ifOutErrors | 1.3.6.1.2.1.2.2.1.20 | Количество исходящих пакетов, которые не могут быть отправлены из за ошибок. |
ifOutQLen | 1.3.6.1.2.1.2.2.1.21 | Длина очереди исходящих пакетов (количество). |
Рекомендуется смотреть видео в HD качестве(720p)
Простите, хотел уточнить такую закономерность...
ОтветитьУдалитьЕсли временной интервал для елемента данных выбрать например 10, следовательно множитель станет 0.8 или если взять 40 то соответственно множитель 0.2.
Самое интересное что при таком принцыпе в результате вывод данных менятся не должен, просто увеличивается время опроса, и графики получается должны быть во всех трех случаях одинаковые. Но не тут то было, во всех трех случаях графики рисуются по разному, к тому же при проверке паралельной, скорость нагрузки сильно рознится з графиком при параметрах 20-0.4. Вродь все логично и должно б работать бе сучка... но не тут то было. Второй день мучаюсь, не могу понять принцыпа работы, чтобы правильно рисовался график нагрузки интерфейса.
P.S.: тестировал на нескольких серверах и разные девайсы результат один =(
С множителями вы все верно поняли, но графики будут различаться. Мы мерим не текущую загрузку канала, а кол-во байт прошедших за интервал времени. Соответственно, чем меньше интервал, тем точнее график. Т.е. например за 1 минуту может быть 4 пика загрузки. Если интервал по 10 секунд, то мы увидим 4 пика, если интервал 1 минута, то увидим всего один пик, т.к. сказать средняя загруженность канала за 1 минуту.
ОтветитьУдалитьТоесть получается, грубо говоря чтобы нарисованные графики отвечали действительности нужно ставить временной интервал в 1 секунду...
ОтветитьУдалитьЕще аномалия: не спрашивайте как я до такого докотился, просто когда пытался первый раз настроить у меня не выходили правильные графики и я обратился к методу научного тыка...
Суть следующая, я методом подбора нашел такую закономерность, что когда поставить временной интервал в 10 секунд, множитель поставить тоже 10 и выбрать в "сохранить значения", "дельта (скорость за секунду)", то оно начинает рисовать правильные графики, я понятия не имею по какому закону бреда оно работает, но оно работает причем правильно, можете перепроверить. У меня в качестве NAS стоит микротик я полученные графики сравнивал с его графиками и что самое удивительное они были практически идентичны. Пробовал и на другом оборудовании, результаты получил те же.
смотря что вы называете действительным графиком... в некоторых случаях интервал в 5 минут - более чем достаточно(в основном для магистральных каналов)
ОтветитьУдалитьпо поводу вашего метода тыка... к сожалению ничего сказать не могу...
какую версию zabbix используете? какое устройство мониторите(линукс машина, роутер, свич)?
"Действительным графиком" - называю, график рисующий самим устройством (многие маршрутизаторы это позволяют).
ОтветитьУдалитьВерсия: zabbix-server-1.8.10,2.
Мониторю: Mikrotik RB411, Ubiquiti Bullet2 HP, Ubiquiti NanoStation M2, DL-2500...
На щет "метода тыка", незнаю как оно может работать вообще с такими параметрами, но тем не менее...
да, но к сожалению не все сетевые устройства имеют oid, который отвечает именно за текущую загрузку(например dlink). поэтому и приходится снимать среднюю. если есть oid, который показывает текущую загрузку, то лучше использовать именно его.
ОтветитьУдалитьпосмотрите в приватных mib ваших устройств, возможно у них есть данный oid
Хочу заметить, что каждое устройство которое работает с протоколом snmp имеет ТОЛЬКО OID.
ОтветитьУдалитьК системе забикс это не имеет никакого отношения, как и любым другим системам мониторинга или управления. Это всего лишь дерево элементов в цифровом отображении. MIB-ы в свою очередь, всего лишь "набор ключей", которые расшифровывают эти ветки и отображают в нормальном, человеческом виде, понятном для прочтения и идентификации. Приведенные в таблице элементы - часть "стандартной ветки" описания интерфейсов практически всех устройств(отличий я еще не встречал). Полный "перевод" звучит так:
IF-MIB::ifHCInOctets , еще этот пример замечателен тем что это 64 разрядный идентификатор, что позволяет делать подсчет на гигабитных интерфейсах с гораздо большим периодом переполнения. Также прошу обратить внимание, что исчисления измеряются октетами.
По поводу времени и snmp. К сожалению, snmp не является системой реального времени, и значения в ветках изменяются не моментально. Например в устройствах Ubiquiti - интервал может достигать 20 секунд, оптимально взвешенный период 1-5 мин.
Ну автор вроде бы учел, что исчисления измеряются октетами, для этого и ставил множитель.
ОтветитьУдалитьа вот на счет времени обновления спасибо, никогда не задумывался об этом
Не лучше ли снимать показания не как Simple Change (с коэфициентом 8/interval), а как Speed Per Second (с коэфициентом 8)? Ну и да, HC (ifHCInOctets/ifHCOutOctets) крайне желательно на гигабитах,а на 100Мбит можно обойтись обычными ifInOctets. Более того, 100Мбитные железки могут и не одтавать ifHCInOctets/ifHCOutOctets :)
ОтветитьУдалитьЯ как раз занимался выяснением того зачем у нас множители и что такое изменение Delta(speed per second).
ОтветитьУдалитьЯ несовсем понимаю почему время опроса интерфейса может влиять на снимаемые данные.
Мониторинг трафика на сетевом интерфейсе - http://www.zabbix.com/forum/showthread.php?t=15289
Кто знает, ответьте пожалуйста на вопросы в топике.
Спасибо.
счетчик устройств показывает данные в байтах(идет накопление), соответственно чтобы узнать кол-во прошедших байтов через интерфейс, нужно брать разницу за промежуток времени. а т.к. скорость трафика измеряют в битах, то для этого используется коэффицент, чтобы перевести байты в биты.
Удалитьа если взять очень большой интервал, то может произойти переполнения счетчитка, после чего он обнуляется и в итоге вы получите отрицательное число
Попробовал помониторить по данному примеру Cisco 28ю, так графики для входящего и исходящего трафика строятся совершенно одинаковые... как такое может быть? OIDы соответственно взял
ОтветитьУдалить1.3.6.1.2.1.2.2.1.10 и 1.3.6.1.2.1.2.2.1.16
скорее всего что-то напутали в настройка заббикса, а вообще в заббиксе есть готовые шаблоны для cisco, посмотрите в них, какие oid-ы испльзуются
УдалитьХарош голову людям морочить , специально проверил на микротике стоящем на РС , при периоде 20 сек и множителе 0.4 как у автора данные совпадают на 99 % . Сравнивал по винбоксу в онлайн режиме , а вот как рисует микротик свои графики на веб интерфейсе это уже отдельный вопрос !
ОтветитьУдалитьПытаюсь сделать мониторинг свича Allied Telesis. Сделал все как на видео. Все перепроверил. График не выводится. Причем если смотреть через мониторинг - последние данные, то график есть, а если через мониторинг - графики, то "нет данных". Помогите разобраться пожалуйста!
ОтветитьУдалитьможно посмотреть скриншот элемента данных?
Удалитьи график из последних данных
Спасибо за отклик! Графики пошли, причем при тех же настройках.
ОтветитьУдалитьПомогите разобраться с множителями. Если меряется количество байт за период времени, то почему изменяется множитель, в зависимости от периода времени? И каким образом подбирается тогда множитель?
ОтветитьУдалитьну смотрите. мы получаем данные - кол-во БАЙТ прошедших через интерфейс, а трафик обычно мерится в БИТАХ в секунду. В одном байте - 8 бит. Мы храним значение как "Дельта", т.е. кол-во БАЙТ прошедших через интерфейс за интервал времени(счетчик байтов на интерфейсе обнуляется только при переполнении, таким образом если на 5ой секунде через интерфейс пробежало 10 байт, а на 10ой секунде счетчик показывает 20 байт, то за период 5 секунд через интерфейс прошло 10 байт). Таким образом, если мы измерили кол-во байт за 20 секунд, то чтобы узнать среднее кол-во байт за 1 секунду надо разделить на 20. А чтобы перевести БАЙТЫ в БИТЫ нужно еще умножить на 8. Так коэффициент и считается: 8/t
УдалитьОгромное спасибо! Все доступно и понятно стало!
УдалитьВы пытались установить snmp builder 2.0 для zabbix ?
ОтветитьУдалитьнет, не пробовал. до вашего вопроса даже не знал что это
УдалитьДобрый день. Задача мониторить траффик на порту D-Link DGS-3100. Пытаюсь создать шаблон, он ругается на Ключь , и кнопка выбора не активна.
ОтветитьУдалитьНа коммутаторе все порты гигабитные, и я так понимаю надо использовать 64 битные счётчики ifHCInOctets/ifHCOutOctets, но он и на них ругается и по ним коммутатор не опрашивается
root@Lusi:/home/fluff# snmpwalk -v 2c -c public 10.100.0.1 1.3.6.1.2.1.31.1.1.1.10.4
iso.3.6.1.2.1.31.1.1.1.10.4 = Counter64: 14152361905103
root@Lusi:/home/fluff# snmpwalk -v 2c -c public 10.100.0.1 ifHCInOctets
ifHCInOctets: Unknown Object Identifier (Sub-id not found: (top) -> ifHCInOctets)
Подскажите если кто сталкивался, в чём может быть проблема.
Заранее спасибо.
забивайте число в элемент данных. snmp работает на сколько я вижу.
УдалитьДелаю так
ОтветитьУдалитьКлюч 1.3.6.1.2.1.31.1.1.1.10.4
SNMP OID 1.3.6.1.2.1.31.1.1.1.10.4
Остальное точно по вышеуказанной видео инструкции.
Но график пустой.
скиньте скрин элемента данных
УдалитьЗдравствуйте, статья очень помогла. Но есть еще вопрос. как по ifInErrors и ifInDiscards построить график? какие настройки в Item'е вписать? Тип информации / Тип данных / Единица измерения / Хранение значения
ОтветитьУдалитьТак сходу ответь не могу, надо макетировать. Тип информации наверняка Числовой (целое положительное), единица измерения можете указать любую, хоть Штук или как вам удобнее. Хранить значение скорее всего надо выбрать Дельта (простое изменение) т.к. если есть ошибки то счетчик будет постоянно расти до того как переполнится и обнулится. Вам же наверно нужно знать сколько было ошибок за период времени, а иначе у вас график будет просто стабильно расти вверх.
УдалитьНадо пробовать, не бойтесь экспериментировать.
Спасибо большое за ответ.
Удалитьа еще хотел уточнить, по счетчикам ifInUcastPkts и ifOutUcastPkts, указал
ОтветитьУдалитьТип информации: Числовой (целое положительное)
Единица измерения: pps
Хранение значения: Дельта (простое изменение)
Правильно ли указал для указанных счетчиков?
А то, чтото показания на графиках смущают. По таблице производительность для роутера Cisco3825 указано
Fast/CEF Switching PPS 350,000, а у меня на графиках показания плавают от 350kpps до 550kpps. Просто пытаюсь определить на каком уровне загрузки находится роутер. Подошел ли он уже к максимальному порогу нагрузки или как.
Здравствуйте, подскажите пожалуйста, если snmpwalk не дает ответа, то в чем может быть проблема?
ОтветитьУдалитьмного чего) может межсетевой экран не пускать. если вы в одной сети, то snmp может быть не включен на исследуемом хосте. либо вы используете неправильный ключ
Удалитьчёт не дапойму, у меня snmpwalk выдаёт вот такую штуку
ОтветитьУдалитьsnmpwalk -v 1 -c public 192.168.8.1 1.3.6.1.2.1.2.2.1.2
iso.3.6.1.2.1.2.2.1.2.1 = STRING: "Backplane-GigabitEthernet0/3"
iso.3.6.1.2.1.2.2.1.2.2 = STRING: "GigabitEthernet0/0"
iso.3.6.1.2.1.2.2.1.2.3 = STRING: "GigabitEthernet0/1"
iso.3.6.1.2.1.2.2.1.2.4 = STRING: "GigabitEthernet0/2"
iso.3.6.1.2.1.2.2.1.2.5 = STRING: "Embedded-Service-Engine0/0"
iso.3.6.1.2.1.2.2.1.2.6 = STRING: "Null0"
iso.3.6.1.2.1.2.2.1.2.7 = STRING: "Loopback0"
iso.3.6.1.2.1.2.2.1.2.8 = STRING: "Loopback1"
iso.3.6.1.2.1.2.2.1.2.9 = STRING: "Tunnel0"
iso.3.6.1.2.1.2.2.1.2.10 = STRING: "Tunnel1"
iso.3.6.1.2.1.2.2.1.2.11 = STRING: "Tunnel2"
iso.3.6.1.2.1.2.2.1.2.12 = STRING: "NVI0"
iso.3.6.1.2.1.2.2.1.2.13 = STRING: "GigabitEthernet0/1.11"
iso.3.6.1.2.1.2.2.1.2.14 = STRING: "GigabitEthernet0/1.13"
iso.3.6.1.2.1.2.2.1.2.15 = STRING: "GigabitEthernet0/1.14"
iso.3.6.1.2.1.2.2.1.2.16 = STRING: "GigabitEthernet0/1.18"
iso.3.6.1.2.1.2.2.1.2.17 = STRING: "GigabitEthernet0/1.61"
iso.3.6.1.2.1.2.2.1.2.18 = STRING: "GigabitEthernet0/1.100"
iso.3.6.1.2.1.2.2.1.2.19 = STRING: "GigabitEthernet0/1.101"
iso.3.6.1.2.1.2.2.1.2.20 = STRING: "GigabitEthernet0/1.102"
iso.3.6.1.2.1.2.2.1.2.21 = STRING: "GigabitEthernet0/1.103"
iso.3.6.1.2.1.2.2.1.2.22 = STRING: "Virtual-Template1"
iso.3.6.1.2.1.2.2.1.2.23 = STRING: "Virtual-Access1"
iso.3.6.1.2.1.2.2.1.2.24 = STRING: "Virtual-Access2"
iso.3.6.1.2.1.2.2.1.2.27 = STRING: "GigabitEthernet0/1.104"
iso.3.6.1.2.1.2.2.1.2.28 = STRING: "GigabitEthernet0/1.105"
и как теперь быть?
Пробую на готовом образе 2.4 под VirtualBox