суббота, 19 ноября 2011 г.

Zabbix. Видео урок №2. SNMP мониторинг (zabbix snmp monitoring)

В этом видео уроке мы рассмотрим мониторинг сетевых интерфейсов по SNMP в системе Zabbix. SNMP широко применяется в системном администрировании. Zabbix поддерживает  snmp первой, второй и третьей версии, а так же snmp trap. 
Для мониторинга различных параметров устройства используются MIBs (Management Information Bases) - набор переменных, которые описывают характеристики устройств, поддерживающих snmp. Существует более 100 стандартных MIB и большое количество проприетарных MIB различных производителей.
Ниже приведены ссылки на проприетарные MIBs различных производителей:
Тут можно посмотреть MIBs для других сетевых устройств.
OID - уникальный идентификатор объекта. Каждый уникальный идентификатор объекта идентифицирует переменную, которая может быть прочитана или установлена через SNMP. Иерархия MIB может быть изображена как дерево с безымянным корнем, уровни которого присвоены разными организациями. На самом высоком уровне MIB OIDы принадлежат различным организациям, занимающимся стандартизацией, в то время как на более низком уровне OIDы выделяются ассоциированными организациями. Эта модель обеспечивает управление на всех слоях сетевой модели OSI, так как MIBы могут быть определены для любых типов данных и операций.
Однако часто бывает достаточно стандартных MIB. В таблице приведены наиболее   используемые OID в snmp.

Часто используемые OID в системе Zabbix(zabbix snmp OID)
Специальный MIBИдентификаторОписание
ifIndex1.3.6.1.2.1.2.2.1.1Уникальное значение для каждого интерфейса. От 1 до ifnumber.
ifDescr1.3.6.1.2.1.2.2.1.2Текстовая строка содержащая информацию о интерфейсе. Эта строка может включать в себя название компании производителя, имя продукта, аппаратную версию интерфейса.
ifType1.3.6.1.2.1.2.2.1.3Тип интерфейса, например, 6 - ethernet; 9 - 802.5 маркерное кольцо; 23 - PPP; 28 - SLIP.
ifMtu1.3.6.1.2.1.2.2.1.4Mtu для конкретного интерфейса. Размер наибольшей датаграммы, которую может отправить/получить интерфейс, указывается в байтах
ifSpeed1.3.6.1.2.1.2.2.1.5Текущая скорость интерфейса в битах за секунду.
ifPhysAddress1.3.6.1.2.1.2.2.1.6Физический адрес интерфейса или строка нулевой длины для интерфейсов без физического адреса (напр. последовательный).
ifAdminStatus1.3.6.1.2.1.2.2.1.7Текущее административное состояние интерфейса.
ifOperStatus1.3.6.1.2.1.2.2.1.8Текущее рабочее состояние интерфейса.
ifInOctets1.3.6.1.2.1.2.2.1.10Полное число полученных байтов, включая символы заголовков.
ifInUcastPkts1.3.6.1.2.1.2.2.1.11Количество пакетов одноадресной рассылки, доставленных на верхний уровень стека протокола.
ifInNUcastPkts1.3.6.1.2.1.2.2.1.12Количество пакетов НЕ одноадресной рассылки (broadcast и multicast), доставленных на верхний уровень стека протокола.
ifInDiscards1.3.6.1.2.1.2.2.1.13Количество входящих, но отвергнутых пакетов, даже если не было обнаружено ошибок, мешающих доставке пакетов на верхний уровень стека протокола. Одна из возможных причин для отвержения пакета могло быть освобождение места в буфере.
ifInErrors1.3.6.1.2.1.2.2.1.14Количество входящих пакетов, полученных с ошибкой, из за которой пакеты не были доставлены на верхний уровень стека протокола.
ifInUnknownProtos1.3.6.1.2.1.2.2.1.15Количество пакетов, полученных через интерфейс, но отвергнутых из за неизвестного или не поддерживаемого протокола.
ifOutOctets1.3.6.1.2.1.2.2.1.16Полное количество отправленных октетов с интерфейса, включая символы заголовков.
ifOutUcastPkts1.3.6.1.2.1.2.2.1.17Полное количество пакетов, которые пытался отправить верхний уровень стека протокола, и которые адресованы НЕ на broadcast или multicast адреса на этом суб-уровне, включая те которые были отвергнуты или не отправлены.
ifOutNUcastPkts1.3.6.1.2.1.2.2.1.18Полное количество пакетов, которые пытался отправить верхний уровень стека протокола, и которые адресованы на broadcast или multicast адреса на этом суб-уровне, включая те которые были отвергнуты или не отправлены.
ifOutDiscards1.3.6.1.2.1.2.2.1.19Количество исходящих пакетов, которые были отвергнуты даже если не было обнаружено ошибок, мешающих отправке. Одна из возможных причин отвержения пакета могло быть освобождение места в буфере.
ifOutErrors1.3.6.1.2.1.2.2.1.20Количество исходящих пакетов, которые не могут быть отправлены из за ошибок.
ifOutQLen1.3.6.1.2.1.2.2.1.21Длина очереди исходящих пакетов (количество).

Рекомендуется смотреть видео в HD качестве(720p)

33 комментария:

  1. Простите, хотел уточнить такую закономерность...
    Если временной интервал для елемента данных выбрать например 10, следовательно множитель станет 0.8 или если взять 40 то соответственно множитель 0.2.
    Самое интересное что при таком принцыпе в результате вывод данных менятся не должен, просто увеличивается время опроса, и графики получается должны быть во всех трех случаях одинаковые. Но не тут то было, во всех трех случаях графики рисуются по разному, к тому же при проверке паралельной, скорость нагрузки сильно рознится з графиком при параметрах 20-0.4. Вродь все логично и должно б работать бе сучка... но не тут то было. Второй день мучаюсь, не могу понять принцыпа работы, чтобы правильно рисовался график нагрузки интерфейса.

    P.S.: тестировал на нескольких серверах и разные девайсы результат один =(

    ОтветитьУдалить
  2. С множителями вы все верно поняли, но графики будут различаться. Мы мерим не текущую загрузку канала, а кол-во байт прошедших за интервал времени. Соответственно, чем меньше интервал, тем точнее график. Т.е. например за 1 минуту может быть 4 пика загрузки. Если интервал по 10 секунд, то мы увидим 4 пика, если интервал 1 минута, то увидим всего один пик, т.к. сказать средняя загруженность канала за 1 минуту.

    ОтветитьУдалить
  3. Тоесть получается, грубо говоря чтобы нарисованные графики отвечали действительности нужно ставить временной интервал в 1 секунду...

    Еще аномалия: не спрашивайте как я до такого докотился, просто когда пытался первый раз настроить у меня не выходили правильные графики и я обратился к методу научного тыка...
    Суть следующая, я методом подбора нашел такую закономерность, что когда поставить временной интервал в 10 секунд, множитель поставить тоже 10 и выбрать в "сохранить значения", "дельта (скорость за секунду)", то оно начинает рисовать правильные графики, я понятия не имею по какому закону бреда оно работает, но оно работает причем правильно, можете перепроверить. У меня в качестве NAS стоит микротик я полученные графики сравнивал с его графиками и что самое удивительное они были практически идентичны. Пробовал и на другом оборудовании, результаты получил те же.

    ОтветитьУдалить
  4. смотря что вы называете действительным графиком... в некоторых случаях интервал в 5 минут - более чем достаточно(в основном для магистральных каналов)

    по поводу вашего метода тыка... к сожалению ничего сказать не могу...
    какую версию zabbix используете? какое устройство мониторите(линукс машина, роутер, свич)?

    ОтветитьУдалить
  5. "Действительным графиком" - называю, график рисующий самим устройством (многие маршрутизаторы это позволяют).

    Версия: zabbix-server-1.8.10,2.

    Мониторю: Mikrotik RB411, Ubiquiti Bullet2 HP, Ubiquiti NanoStation M2, DL-2500...

    На щет "метода тыка", незнаю как оно может работать вообще с такими параметрами, но тем не менее...

    ОтветитьУдалить
  6. да, но к сожалению не все сетевые устройства имеют oid, который отвечает именно за текущую загрузку(например dlink). поэтому и приходится снимать среднюю. если есть oid, который показывает текущую загрузку, то лучше использовать именно его.
    посмотрите в приватных mib ваших устройств, возможно у них есть данный oid

    ОтветитьУдалить
  7. Хочу заметить, что каждое устройство которое работает с протоколом snmp имеет ТОЛЬКО OID.
    К системе забикс это не имеет никакого отношения, как и любым другим системам мониторинга или управления. Это всего лишь дерево элементов в цифровом отображении. MIB-ы в свою очередь, всего лишь "набор ключей", которые расшифровывают эти ветки и отображают в нормальном, человеческом виде, понятном для прочтения и идентификации. Приведенные в таблице элементы - часть "стандартной ветки" описания интерфейсов практически всех устройств(отличий я еще не встречал). Полный "перевод" звучит так:
    IF-MIB::ifHCInOctets , еще этот пример замечателен тем что это 64 разрядный идентификатор, что позволяет делать подсчет на гигабитных интерфейсах с гораздо большим периодом переполнения. Также прошу обратить внимание, что исчисления измеряются октетами.

    По поводу времени и snmp. К сожалению, snmp не является системой реального времени, и значения в ветках изменяются не моментально. Например в устройствах Ubiquiti - интервал может достигать 20 секунд, оптимально взвешенный период 1-5 мин.

    ОтветитьУдалить
  8. Ну автор вроде бы учел, что исчисления измеряются октетами, для этого и ставил множитель.

    а вот на счет времени обновления спасибо, никогда не задумывался об этом

    ОтветитьУдалить
  9. Не лучше ли снимать показания не как Simple Change (с коэфициентом 8/interval), а как Speed Per Second (с коэфициентом 8)? Ну и да, HC (ifHCInOctets/ifHCOutOctets) крайне желательно на гигабитах,а на 100Мбит можно обойтись обычными ifInOctets. Более того, 100Мбитные железки могут и не одтавать ifHCInOctets/ifHCOutOctets :)

    ОтветитьУдалить
  10. Я как раз занимался выяснением того зачем у нас множители и что такое изменение Delta(speed per second).
    Я несовсем понимаю почему время опроса интерфейса может влиять на снимаемые данные.

    Мониторинг трафика на сетевом интерфейсе - http://www.zabbix.com/forum/showthread.php?t=15289
    Кто знает, ответьте пожалуйста на вопросы в топике.

    Спасибо.

    ОтветитьУдалить
    Ответы
    1. счетчик устройств показывает данные в байтах(идет накопление), соответственно чтобы узнать кол-во прошедших байтов через интерфейс, нужно брать разницу за промежуток времени. а т.к. скорость трафика измеряют в битах, то для этого используется коэффицент, чтобы перевести байты в биты.
      а если взять очень большой интервал, то может произойти переполнения счетчитка, после чего он обнуляется и в итоге вы получите отрицательное число

      Удалить
  11. Попробовал помониторить по данному примеру Cisco 28ю, так графики для входящего и исходящего трафика строятся совершенно одинаковые... как такое может быть? OIDы соответственно взял
    1.3.6.1.2.1.2.2.1.10 и 1.3.6.1.2.1.2.2.1.16

    ОтветитьУдалить
    Ответы
    1. скорее всего что-то напутали в настройка заббикса, а вообще в заббиксе есть готовые шаблоны для cisco, посмотрите в них, какие oid-ы испльзуются

      Удалить
  12. Харош голову людям морочить , специально проверил на микротике стоящем на РС , при периоде 20 сек и множителе 0.4 как у автора данные совпадают на 99 % . Сравнивал по винбоксу в онлайн режиме , а вот как рисует микротик свои графики на веб интерфейсе это уже отдельный вопрос !

    ОтветитьУдалить
  13. Пытаюсь сделать мониторинг свича Allied Telesis. Сделал все как на видео. Все перепроверил. График не выводится. Причем если смотреть через мониторинг - последние данные, то график есть, а если через мониторинг - графики, то "нет данных". Помогите разобраться пожалуйста!

    ОтветитьУдалить
    Ответы
    1. можно посмотреть скриншот элемента данных?
      и график из последних данных

      Удалить
  14. Спасибо за отклик! Графики пошли, причем при тех же настройках.

    ОтветитьУдалить
  15. Помогите разобраться с множителями. Если меряется количество байт за период времени, то почему изменяется множитель, в зависимости от периода времени? И каким образом подбирается тогда множитель?

    ОтветитьУдалить
    Ответы
    1. ну смотрите. мы получаем данные - кол-во БАЙТ прошедших через интерфейс, а трафик обычно мерится в БИТАХ в секунду. В одном байте - 8 бит. Мы храним значение как "Дельта", т.е. кол-во БАЙТ прошедших через интерфейс за интервал времени(счетчик байтов на интерфейсе обнуляется только при переполнении, таким образом если на 5ой секунде через интерфейс пробежало 10 байт, а на 10ой секунде счетчик показывает 20 байт, то за период 5 секунд через интерфейс прошло 10 байт). Таким образом, если мы измерили кол-во байт за 20 секунд, то чтобы узнать среднее кол-во байт за 1 секунду надо разделить на 20. А чтобы перевести БАЙТЫ в БИТЫ нужно еще умножить на 8. Так коэффициент и считается: 8/t

      Удалить
    2. Огромное спасибо! Все доступно и понятно стало!

      Удалить
  16. Вы пытались установить snmp builder 2.0 для zabbix ?

    ОтветитьУдалить
    Ответы
    1. нет, не пробовал. до вашего вопроса даже не знал что это

      Удалить
  17. Добрый день. Задача мониторить траффик на порту 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)
    Подскажите если кто сталкивался, в чём может быть проблема.
    Заранее спасибо.

    ОтветитьУдалить
    Ответы
    1. забивайте число в элемент данных. snmp работает на сколько я вижу.

      Удалить
  18. Делаю так
    Ключ 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
    Остальное точно по вышеуказанной видео инструкции.
    Но график пустой.

    ОтветитьУдалить
  19. Здравствуйте, статья очень помогла. Но есть еще вопрос. как по ifInErrors и ifInDiscards построить график? какие настройки в Item'е вписать? Тип информации / Тип данных / Единица измерения / Хранение значения


    ОтветитьУдалить
    Ответы
    1. Так сходу ответь не могу, надо макетировать. Тип информации наверняка Числовой (целое положительное), единица измерения можете указать любую, хоть Штук или как вам удобнее. Хранить значение скорее всего надо выбрать Дельта (простое изменение) т.к. если есть ошибки то счетчик будет постоянно расти до того как переполнится и обнулится. Вам же наверно нужно знать сколько было ошибок за период времени, а иначе у вас график будет просто стабильно расти вверх.
      Надо пробовать, не бойтесь экспериментировать.

      Удалить
    2. Спасибо большое за ответ.

      Удалить
  20. а еще хотел уточнить, по счетчикам ifInUcastPkts и ifOutUcastPkts, указал
    Тип информации: Числовой (целое положительное)
    Единица измерения: pps
    Хранение значения: Дельта (простое изменение)
    Правильно ли указал для указанных счетчиков?
    А то, чтото показания на графиках смущают. По таблице производительность для роутера Cisco3825 указано
    Fast/CEF Switching PPS 350,000, а у меня на графиках показания плавают от 350kpps до 550kpps. Просто пытаюсь определить на каком уровне загрузки находится роутер. Подошел ли он уже к максимальному порогу нагрузки или как.


    ОтветитьУдалить
  21. Здравствуйте, подскажите пожалуйста, если snmpwalk не дает ответа, то в чем может быть проблема?

    ОтветитьУдалить
    Ответы
    1. много чего) может межсетевой экран не пускать. если вы в одной сети, то snmp может быть не включен на исследуемом хосте. либо вы используете неправильный ключ

      Удалить
  22. чёт не дапойму, у меня 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

    ОтветитьУдалить

Новый сайт проекта

Новый сайт проекта
Прокачай себя, а не персонажа из игры

Translate

Популярные сообщения

Blog Archive

Технологии Blogger.