понедельник, 10 декабря 2012 г.

Zabbix - детальный мониторинг узлов сети, используя SNMP

Доброго времени суток. Мы продолжаем рассматривать замечательный мониторинг сети и узлов сети Zabbix. Так мы с Вами уже установили данную систему и настроили, разобрали основные понятия Zabbix, настроили простую проверку узлов сети (доступность). А в данной статье мы перейдем к настройке более детального мониторинга узла сети, используя SNMP.

Кратко об SNMP

SNMP (Simple Network Management Protocol) - это простой протокол сетевого управления или протокол управления устройствами в IP-сетях на основе TCP/UDP. SNMP предоставляет данные для управления устройствами сети в виде переменных, которые описывают конфигурацию данного оборудования. Эти переменные могут быть запрошены или заданы (если это позволяет оборудование и его конфигурация) управляющими приложениями.
В самом протоколе SNMP не определено какая информация заложена в переменных. Для этого SNMP использует базу управляющей информации (базу MIB). Базы MIB описывают структуру управляемых данных и информацию заложенную в переменных. MIB имеет иерархическую структуру пространства имен, содержащие идентификаторы объектов (OID). Каждый OID определяет переменную, которая может быть считана или установлена с помощью SNMP.
Существует три версии протокола SNMP:

  1. SNMPv1 - начальная реализация данного протокола, основная проблема данной версии низкая защита.
  2. SNMPv2 - вторая версия, улучшена производительность и безопасность.
  3. SNMPv3 - третья версия ничего нового не добавляет в данный протокол, единственное отличие от предыдущей версии это криптографическая защита данных.
Как уже говорилось в предыдущих статьях, система мониторинга Zabbix поддерживает протокол SNMP. И дальше мы с Вами настроим мониторинг порта на узле (мы будем мониторить текущее состояние интерфейса )

Создание узла сети

Первое, что мы сделаем создадим узел сети. Для этого переходим: Настройка -> Узлы сети и жмем на кнопку “Создать узел сети”.
 Дальше заполняем поля нашего узла сети:
  1. Имя узла сети - вводим название нашего узла, который мы будем мониторить
  2. Видимое имя - название узла, которое будет отображаться
  3. В группах - добавляем группу, в которой будет находиться наш узел, если группу мы еще не создали, то в поле “Новая группа узлов сети” мы можем добавить название новой группы, куда поместим наш узел сети.
  4. Интерфейс агента вводим ip адрес или доменное имя узла
  5. Теперь нужно в “Интерфейсы SNMP” нажать “Добавить” и ввести ip адрес узла или доменное имя узла, а также при необходимости изменить порт для работы SNMP.
  6. Наблюдение через прокси, оставляем без прокси.
  7. Состояние - Под наблюдением (для включения мониторинга для данного узла)
Также Вы можете ввести Шаблоны во вкладке Шаблоны (как мы делали в прошлой статье, когда мониторили доступность узлов), ввести Инвентарные данные и другие данные для узла. И жмем “Сохранить”.
На этом создание узла мы завершаем. Теперь мы создадим элементы данных, которые будем мониторить на данном узле. В нашем случае это состояние порта.

Создание элементов данных

Переходим Настройка -> Узлы сети и выбираем вновь созданный узел. И переходим в Элементы данных.
Как видим у нас пока нет элементов данных. Жмем “Создать элемент данных”
В поле:
  1. Узел сети - находиться название узла сети для которого мы создаем элемент данных. Если в этом поле не тот узел, то жмем по “Выбрать” и выбираем необходимый узел.
  2. Имя - вводим имя элемента данных. Пусть в нашем случае это будет port_status.
  3. В поле Тип - выбираем тип элемента данных, в нашем случае это SNMPv2 агент. Вы должны выбрать соответствующую версию SNMP.
  4. В поле ключ вводим необходимый OID. Тут Вам необходимо обратиться к документации по оборудованию, а точнее к MIB. В моем случае - это 1.3.6.1.2.1.2.2.1 и дальше идет номер порта. Поэтому в данном поле я ввожу 1.3.6.1.2.1.2.2.1.1, т.е. я запрашиваю статус интерфейса под номером 1.
  5. В поле интерфейс узла сети указываем интерфейс для SNMP, который мы создали при создании узла.
  6. В поле SNMP OID указываем такое же значение как и в поле ключ 1.3.6.1.2.1.2.2.1.1
  7. В поле SNMP Community указываем пароль для доступа к считываю информации по SNMP. Тут нужно смотреть конфигурацию самого оборудования.
  8. В поле порт указываем порт по которому работает наш SNMP, по умолчанию это порт 161
  9. В поле тип информации оставляем Числовой(целое положительное), т.к. полученная информация у нас будет 1 - когда порт в коннекте, 2 - когда порт не в коннекте, 5 - когда порт в статусе admin down (т.е. выключен административно).
  10. В поле Тип данных оставляем десятичный, получаемые данные целые десятичные.
  11. В поле единица измерения ничего не прописываем
  12. В поле пользовательский множитель ничего не прописываем.   
  13. В поле интервал обновления устанавливаем интервал обновления в секундах, по умолчанию 30 секунд
  14. Остальные поля также не трогаем.
Жмем сохранить. На этом настройка опроса статуса порта завершена. 
Если мы сделали все правильно и сбор информации по SNMP стал проходить, то мы должны увидеть напротив нашего хоста зеленый квадрат с надписью SNMP:

Специальные OID в Zabbix


Специальный OIDИдентификаторОписание
ifIndex 1.3.6.1.2.1.2.2.1.1 Уникальное значение для каждого интерфейса. От 1 до ifnumber.
fDescr 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Текущая скорость интерфейса в битах за секунду.
ifPhysAddress1.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Полное число полученных байтов, включая символы заголовков.
fInUcastPkts 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Количество входящих пакетов, полученных с ошибкой, из за которой пакеты не были доставлены на верхний уровень стека протокола.
ifInUnknownProtos1.3.6.1.2.1.2.2.1.15Количество пакетов, полученных через интерфейс, но отвергнутых из за неизвестного или не поддерживаемого протокола.
ifOutOctets 1.3.6.1.2.1.2.2.1.16Полное количество отправленных октетов с интерфейса, включая символы заголовков.
ifOutUcastPkts1.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Длина очереди исходящих пакетов (количество).

После того, как мы настроили опрос состояния порта нам приходят данные с оборудования. Теперь нам необходимо создать правило (триггер), после срабатывания которого нам zabbix сообщит о наличии проблемы.

Создание триггера.

Переходим Настройка -> Узлы сети и выбираем узел для которого будем создавать триггер. Дальше переходим по ссылке “Триггеры”
Пока триггеров у нас нет. Жмем “Создать триггер”
В поле:
  1. Имя - задаем название нашего триггера. В моем случае - Port_Status
  2. Выражение жмем “Добавить” и в открывшемся окне 




 элементы данных жмем “Выбрать” и выбираем наш элемент данных port_status, в поле “Функция” выбираем необходимую функцию, в моем случае, Last value = N (это означает, что при получении значения равного N мой триггер сработает) и в поле “N” ставим 2 (т.к. если порт не в коннекте, то OID вернет значение 2. Жмем “Вставить”.
  1. Важность я поставил “Предупреждение”.
  2. Активно необходимо поставить галочку для активации данного триггера.
  3. Жмем “Сохранить”   
На этом настройка триггера завершена.
Теперь наш мониторинг на основе zabbix проверяет статус порта узла сети, используя SNMP.
На этом настройка детального мониторинга узла завершена. С помощью SNMP можно настроить мониторинг множества параметров оборудования. Так у меня мониториться температура, нагрузка на процессор, фактическая скорость на порту. В следующей статье мы настроим мониторинг скорости на порту и создадим график, который будет отображать данную скорость. А на этом пока все.



Понравилась статья? Поблагодарить автора:

Введите e-mail адрес:



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

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

    ОтветитьУдалить
  2. Поджеч и смотреть через зелёное стёклышко :-)

    ОтветитьУдалить
  3. Сделал по инструкции, а показатели все врут. На серваке скорость передачи 50 мб, заббикс рисует график 5 мб. Как только не игрался с множителями все время разный результат и далек от нужного. А когда проходят бэкапы так там вообще за гб улетает хотя макс скорость на серваке 800-900 мб.

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