Пользователь
54,0
рейтинг
27 ноября 2012 в 09:40

Администрирование → Мониторинг коммутаторов Cisco, D-Link, 3Com, Zyxel в системе Zabbix

Мониторинг — это один из столпов обеспечения высокой доступности ИТ-систем.
Как правило, системные администраторы при установке системы мониторинга в первую очередь настраивают ее на проверку параметров серверов и обнаружение недоступности сервисов, запущенных на этих серверах. Безусловно это приоритетная задача, но не стоит забывать и о другом оборудовании: ИБП, системах кондиционирования, сетевом оборудовании.

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

модная карта сети


Включаем мониторинг


Думаю, я не ошибусь, если скажу, что большинству системных администраторов приходится работать с унаследованным «зоопарком» оборудования различных моделей и вендоров. К счастью, большинство моделей поддерживает открытый протокол SNMP. Именно по нему мы и будем получать информацию о состоянии сетевых интерфейсов.

Предположим, что Zabbix у вас уже установлен. Чтобы воспользоваться SNMP нужно:
  1. включить поддержку SNMP на сетевом устройстве (команды зависят от производителя)
  2. добавить соответствующие item в Zabbix — по одному на каждый параметр; для этого нужно указать используемую версию SNMP, корректный идентификатор параметра SNMP OID и SNMP community (что-то типа имени пользователя)
  3. добавить триггеры для отслеживания нежелательных значений item

С учетом того, что у каждого сетевого порта может быть несколько отслеживаемых параметров, у типичного свитча — 24, а то и 48 портов, а свитчей в сети могут быть десятки, ручная конфигурация чересчур трудоемка.

Для облегчения задачи необходимо использовать шаблоны (templates). Шаблон содержит в себе все необходимые item'ы, триггеры и графики — остается только завести хост и подключить к нему шаблон.
Для Zabbix уже есть много готовых шаблонов, которые можно или нагуглить или посмотреть в мануале.
Если вы не нашли нужный шаблон, не расстраивайтесь: как правило, производители используют стандартные OID'ы из RFC1213 и RFC2233:
sysName.0 имя узла
.1.3.6.1.2.1.1.3.0 uptime
.1.3.6.1.2.1.2.2.1.8.X статус порта: 1(up) / 2(down) X — номер порта;
у Cisco номер порта пятизначный:
100XX для 100 Мбитных портов,
101XX для 1 Гбит/c
.1.3.6.1.2.1.2.2.1.16.X отправлено байт
.1.3.6.1.2.1.2.2.1.10.X принято байт
.1.3.6.1.2.1.31.1.1.1.5.X отправлено broadcast пакетов
.1.3.6.1.2.1.31.1.1.1.3.X принято broadcast пакетов
.1.3.6.1.2.1.31.1.1.1.4.X отправлено multicast пакетов
.1.3.6.1.2.1.31.1.1.1.2.X принято multicast пакетов
.1.3.6.1.2.1.2.2.1.17.X отправлено unicast пакетов
.1.3.6.1.2.1.2.2.1.11.X принято unicast пакетов
.1.3.6.1.2.1.2.2.1.20.X ошибок при отправке
.1.3.6.1.2.1.2.2.1.14.X ошибок при получении
Помимо этого можно считать имя интерфейса, MTU, скорость и другие параметры. Полный список смотрите на сайте Cisco.

Cisco Catalyst, как правило, поддерживают дополнительно:
.1.3.6.1.4.1.9.9.109.1.1.1.1.5.1 — процент загрузки CPU
.1.3.6.1.4.1.9.9.48.1.1.1.5.1 — занятая память (в байтах)
.1.3.6.1.4.1.9.5.1.2.13.0 — статус температуры (1 — нормальная, 2 — повышенная, 3 — критическая)

Генератор шаблонов


Заметив, то что идентификаторы стандартизованы, я написал простенький скрипт на PHP, который позволяет сгенерировать XML-шаблон для Zabbix с нужными OID для всех портов. Мы протестировали его на оборудовании Cisco (500G, 2960. 3550 и 3750), 3Com (2426, 2924, 2948), паре D-Link и Zyxel 4012. (Кто хочет, может скачать исходники).
Генератор создает шаблоны, которые умеют:
  • отслеживать параметры интерфейсов (см. таблицу выше) и выводить их на графике;
  • устанавливать триггер на падение порта;
  • устанавливать триггер на превышение скорости прироста ошибок на порте;
  • отслеживать загрузку процессора, памяти и температуры для Cisco.

После того, как вы сгенерировали и сохранили шаблон для устройства, сымпортируйте его: перейдите в Configuration Templates и нажмите справа вверху кнопку Import. Создайте новый Host или отредактируйте существующий — привяжите к нему ваш шаблон.
Если вы хотите изменить какие-либо параметры (например, SNMP community), то это можно сделать прямо в Zabbix: зайдите в шаблон в Configuration Templates , в Items выделите нужные элементы галочками и внизу выберите из выпадающего списка Mass update.

В результате вы получите симпатичные графики:





Отладка


Если прошло несколько минут после добавления к устройству шаблона, а данные от SNMP так и не появились, необходимо проверить, может ли сервер Zabbix считать данные с устройства. Делается это утилитой snmpget:
snmpget -v версия_протокола -c комьюнити адрес_устройства OID

Например, получим число отправленных байт на первом гигабитном порту для Cisco:
snmpget -v 2c -c qwerty 192.168.1.1 .1.3.6.1.2.1.2.2.1.16.10101
IF-MIB::ifOutOctets.10101 = Counter32: 2044250092

Для не-Cisco железки:
snmpget -v 2c -c qwerty 192.168.1.2 .1.3.6.1.2.1.2.2.1.16.1
IF-MIB::ifOutOctets.1 = Counter32: 1691279168

Если вы получаете сообщение Timeout: No Response from ..., значит вам нужно убедиться, что SNMP включен на устройстве и серверу разрешено соединяться с портом 161/UDP коммутатора.
Сообщение No Such Object available on this agent at this OID говорит о том, что запрашиваемый параметр не поддерживается.

Чтобы прочитать полный список параметров с устройства выполните:
snmpwalk -v версия_протокола -c комьюнити адрес_устройства

Любители GUI для чтения SNMP-данных с устройства могут воспользоваться программами типа MIB Browser.

Карта сети


Карту придется кропотливо составлять вручную. Тут надо знать пару трюков. Чтобы над соединительными линиями между оборудованием показывать скорость, добавьте в подпись вызов соответствующего item в фигурных скобках. Например:
↑ {02-CS-42-3750:ifOutOctets.10112.last(0)}
{02-CS-42-3750:ifInOctets.10112.last(0)} ↓

Запись 02-CS-42-3750:ifOutOctets.10112.last(0) означает получить у хоста 02-CS-42-3750 последнее по времени значение параметра ifOutOctets (отправлено байт). ↑ и ↓ это просто коды стрелочек ↑ и ↓ для красоты.



Также в свойствах Link вы можете настроить отображении линии красным в случае падения порта в down.

Мониторинг состояния портов


К сожалению, в Zabbix нет удобного инструмента для просмотра состояния отдельных портов устройств, поэтому его пришлось написать. Информация импортируется из Zabbix и выводится администратору в удобном виде:



Серый цвет порта обозначает, то что он находится в down. Цвет от зеленого до красного меняется в зависимости от загрузки порта. Гигабитные порты выделены рамочкой.

Минус скрипта в том, что он писался «для себя», поэтому установка достаточно корявая (-:. Скачайте исходники и прочитайте readme. UPD 13.03.13 (Версия для Zabbix 2.0)

Производительность


Нельзя не упомянуть о возможной проблеме с производительностью zabbix-сервера. Предположим, что вы раз в минуту получаете информацию об 11 параметрах каждого порта 50-ти 24-портовых свитчей. На базу данных zabbix-сервера ляжет нагрузка в среднем 220 записей в секунду. Для слабой машины она может оказаться непосильной. Поэтому рекомендуется ограничивать количество item'ов или увеличивать интервал проверки. Мы считаем достаточным запрашивать статус порта, трафик, количество ошибок и широковещательных пакетов раз в 60 секунд.

Планы


В следующей версии генератора шаблонов хотелось бы добавить возможность получения остальных параметров интерфейсов, выбор цветов линий для графиков, возможность указания скорости портов для не-Cisco устройств. Предложения приветствуются.
Владислав Росс @gag_fenix
карма
169,8
рейтинг 54,0
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (34)

  • +1
    А почему вы используете не ifX таблицы?
    • +2
      p.s. пользуюсь такой netxms.org
      Если будут желающие могу написать статейку о внедрении и использовании.
      • 0
        Желающие есть. Особенно интересно насколько эта система готова с использованию из коробки.
    • 0
      Если я правильно понял, речь о 64-битных счетчиках.
      Наверное, стоит добавить как опцию в генераторе их использование. Но работать они будут только для оборудования, которое их поддерживает.
      А так вроде Zabbix корректно обрабатывает обнуление обычного 32-х битного счетчика.
      • 0
        Да, именно они.
        А как именно он его корректно обрабатывает? По сути никаких инструментов для этого не имеется.
        Их поддерживают все сетевые железки года с 2000… Особенно те на которых может понадобиться мониторить утилизацию порта.
        Просто на гигабитных портах обнуление 32битного счетчика происходит очень быстро, что при некорректно обработке ведет к получению некорректных значений.
        • 0
          Ну я имею ввиду, что при обнулении не возникает проблем, типа отрицательной скорости.
          Я сегодня протестирую и добавлю поддержку в генератор.
          • 0
            ну теоритически отрицательной не должно быть, считается то от 0, unsigned int. Просто при постоянных переполнениях данные скорее всего будут не актуальны. Да мне наверно не нужно, я же написал выше что использую другое )) Просто я смотрю у вас сплошь гигабитные порты, вам должно пригодиться.
            Просто после плясок с 1G и 10G портами я перешел на ifX.
            • 0
              Тут нет особой проблемы, т.к. нас интересует не само число байт на интерфейсе, а мгновенная скорость, т.е. разность между числом байт сейчас и минуту назад. Именно такой item я храню в Zabbix.
              Но все равно стоит поправить, конечно.
              • 0
                ну так poll time явно минута? А счетчик на 1g обнуляется за секунду. Или нет?
              • 0
                и отвлеченный вопрос.

                Используете ли вы что-нибудь для снятия например температуры в помещения, ящиках. Герконы.
                • 0
                  NetPing для измерения температуры, влажности, герконов, датчика протечки и датчика объема.
                  Хочу написать небольшой топик про это тоже.
                  • 0
                    а я snr erd 2/3
  • 0
    Уважаю zabbix. Использую его от мониторинга за состоянием SMART hdd в серверах до наблюдения за различными специфическими сетевыми железками.
  • 0
    Кстати, 220 записей в секунду достаточно небольшое число для zabbix.
    Для примера под нагрузкой в тысячи параметров LA=0.12.

    P.S.Статья хорошая, спасибо! :)
    • 0
      На каком железе?
      И вы не путаете количество записей в секунду с количеством отслеживаемых параметров?
      • 0
        У меня как раз ~220 записей. Старенький сервер 2006 г. в. с SATA RAID-1 дисками уже начинает сильно грузиться — mysqld зажирает до 30% CPU.
  • +1
    64-битные счетчики лучше начать использовать заранее, т.к. при таких частых обновлениях и при возрастании нагрузки они начнут обнуляться 2 раза между съемом счетчика, что приведет к неверным всплескам на гафиках или значения не будут приниматься системой по максимальному ограничению.

    в телекоме сложилось, что счетчики снимают раз в 5 минут и при трафике более 114мбит разрядности уже не хватает.
  • 0
    Какую версию zabbix используете?
  • 0
    В версии 2 заббикса есть auto-discovery для snmp. Для кошковых свичей работает, дла dell немного переделал правила.
  • 0
    Написано хорошо, да, спасибо. Но на эту тему есть много статей, это делается несложно, если человек давно работает с Zabbix'ом. — имелся в виду мониторинг оборудования.
    За «Мониторинг состояния портов» — отдельный плюс!
    Куда более интересно раскрыть тему мониторинга snmp-трапами в заббиксе: в официальной документации что-то есть, но чтобы от и до (начиная с конфигурации устройств, заканчивая отображением триггеров на события, в промежутке рассказав детально, как конвертируются oid'ы и в каком виде они еду в заббикс) — нет нормальных статей.
    Не интересовались, случайно, этой темой? У меня такое предложение — осветить этот момент :)
    • 0
      Подключил к заббиксу огромный зоопарк разного хлама (около 300 свичей 8 разных вендоров в одной сети). По oid кратко могу рассказать:
      1) Получи то, не знаю что.
      Часто нужных трапов в документации нет, тогда
      snmpwalk -c public(либо свой) -v 2c IP-железки -O Uq
      

      получаем все, что железка может отдать в виде id-трапа значение, по grep из известных значений получаем нужные трапы, если же производитель напрягся и написал вменяемую документацию, то переходим дальше.
      Если id известен, то данные по нему можно считать так (для примера входящий трафик по 1 порту коммутатора):
      snmpget -v 2c -c public IP-железки .1.3.6.1.2.1.2.2.1.10.1 -O Uvq
      

      2) Заполнение item в zabbix (по примеру выше)
      • 0
        Это вы мне сейчас что описали?
        Часто нужных трапов в документации нет, тогда

        А зачем? У меня есть MIB (конвертится оттуда) для моих устройств, и заполнять ничего не нужно — трапы должны приходить сами. Путаете понятия?
        • 0
          Отвечал на вопрос
          как конвертируются oid'ы и в каком виде они еду в заббикс

          Простите тогда не понял вашего комментария
          Куда более интересно раскрыть тему мониторинга snmp-трапами в заббиксе: в официальной документации что-то есть, но чтобы от и до

          А что конкретно не ясно из подробной официальной документации, я думал как заполнять — привел пример со скрином, если все ясно и Ваш пост был, чтоб отметить пристутствие, то простите.
  • 0
    Может кто видел. Есть ли в какой-нибудь NMS возможность в качестве подложки для карты подтянуть реальный карты яндекса или гула?
    • 0
      netxms тянет openstreet если забьете GPS координаты.
      • 0
        А яндекс нет возможности подключить. Вообще у меня идея такая. Хочу карту от яндеска и при выезде на объекты, чтобы можно было сразу пробки там же смотреть, чтобы понятно было как лучше/быстрее доехать.
        • 0
          ну или дописать самому либо просить разработчика.
    • 0
      Если костыли не смущают www.zabbix.com/forum/showthread.php?t=37480
    • 0
      PRTG Network Monitor
      10 сенсоров бесплатно.
  • 0
    Предположим, что вы раз в минуту получаете информацию об 11 параметрах каждого порта 50-ти 24-портовых свитчей.

    Именно для таких целей и придумали snmp-трапы. Вот если скорость/ошибки и т.п. то их нужно мониторить регулярно, а вот состояние интерфейса (up/down), или другие показатели, которые имеют малую динамику — лучше всего не дергать каждый раз, а что бы сама железка слала трапы заббиксу при изменениях, а он уже реагировал на них.
  • 0
    встретил готовый шаблон для мониторинга Brocade FC switches, может кому пригодится github.com/jjmartres/Zabbix/tree/master/zbx-templates/zbx-brocade/zbx-brocade-fc-port
  • 0
    Вы не обновляли скрипт отображения статуса портов для новых версий zabbix? В версии 2.2 работать отказывается.
    • 0
      Необходимо в библиотеке ZabbixAPI.class.php(она идёт не в комплекте Zabbix, а в проекте автора) заменить метод аутентификации пользователя.
      user.authenticate -> user.login
      

      По тексту встречается всего два раза.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.