Учет сетевого оборудования и мониторинг

В качестве дополнительного модуля к информационной системе Pyzzle.ISP может быть установлена система Учета сетевого оборудования с функциями мониторинга.
Модуль основывается на следующих принципах:
  • В системе ведется база узлов связи (мест где устанавливается сетевое оборудование). Узел связи характеризуется адресом, и зоной покрытия. На основании зоны покрытия происходит определение абонентов, которые обслуживаются этим узлом.
  • В системе ведется учет сетевого оборудования (коммутаторы, маршрутизаторы, линии связи). Дополнительно можно вести учет медиа-конверторов, UPS и любого другого оборудования.
  • Сетевое оборудование может находится на складе, быть установленным в узле связи или быть списанным. Дополнительно могут быть активированы состояния “ремонт” и “продано”.
  • Линии связи характеризуются двумя узлами связи, которые соединяются этой линией.
  • Для коммутаторов в системе ведется учет использования портов коммутатора. Порт может быть привязан к другому оборудованию установленному в том же узле связи, к линии связи между узлами связи к абоненту или быть сломанным.
Модуль представлен в разделе “Мониторинг” web-интерфейса управления информационной системы. Для описания топологии сети, в этом разделе можно осуществлять поиск, добавление и редактирование свойств сетевого оборудования и узлов связи.

Note

Типы сетевого оборудования поддерживаемого системой настраиваются в файле enviroment.py, путем определения класса для каждого типа оборудования. Настройка осуществляется разработчиком в рамках внедрения модуля, в соответствии с требованиями заказчика.

Note

В ходе внедрения, могут быть проработаны возможности автоматизированного экспорта данных о сетевом оборудовании и топологии из существующих информационных систем.

Описание топологии сети

Для описания топологии сети нужно выполнить следующие действия:
  1. Добавить узел связи.

  2. Добавить линии связи, приходящие к этому узлу связи.

  3. Добавить устройства, расположенные в этом узле связи.

  4. Описать порты коммутаторов: указать в какие порты приходят линии связи и какие порты используются для связи между устройствами в пределах узла связи.

    Note

    Для добавления линии связи нужно, чтобы в системе были заведены оба узла, между которыми проходит линия.
    В описании линий связи используется логическая топология, если в сети используется многоволоконная оптическая трасса с различными муфтами, распределяющими волокна по разным точкам, то описывается не сам путь трассы, а каждое волокно описывается в виде начальной и конечной точки.
    При привязке линии связи к портам коммутаторов необходимо привязку выполнять с обоих сторон линии.

Добавление узлов связи

При добавлении узла связи указывается его адрес, зона обслуживания абонентов и произвольный комментарий. При необходимости в описании узла можно добавить дополнительные информационные поля.
_images/signal_center_add.png
По умолчанию система считает, что узел связи предназначен для обслуживания абонентов в пределах дома где он установлен, поэтому зона покрытия указывается перечислением подъездов и этажей. Поле этаж не обязательно если зона распространяется на все этажи дома. При добавлении можно указать до трех подъездов, в которых производится обслуживание. В дальнейшем, при редактировании свойств узла связи, на форме будут появляется дополнительные поля для добавления новых записей в зону покрытия.
Если в доме всего один узел, то зону покрытия можно не описывать, в этом случае считается что узел обслуживает весь дом.

Добавление оборудования

Поля формы добавления оборудования зависят от типа оборудования и гибко настраиваются под потребности заказчика.
_images/device_add.png
_images/device_add1.png
Для описания линии связи можно либо указывать ID узлов связи, либо писать адрес узла связи. В случае указания адреса, система добавит линию связи только если найдет полное совпадение адреса узла связи. ID узлов связи можно посмотреть на странице поиска узлов связи.
При добавлении коммутатора в зависимости от настроек системы либо нужно указать модель коммутатора и система сама определить количество портов, либо указать количество портов коммутатора вручную.
После добавления сетевого оборудования вы попадаете на основную страницу устройства, на которой можно указывать расположение устройства (склад, узел связи, списание)
_images/device_main1.png
В форме “Изменить состояние устройства” необходимо указать в каком узле связи расположено устройство.
Для добавления UPS’ов нужно дополнительно указать его тип:
  • APCACCESS мониторинг производится с помощью демона apcupsd, в полях IP управления, snmp_port нужно указать IP демона и порт соответственно.
  • NUT мониторинг производиться с помощью утилит NUT, в полях IP управления, snmp_port, Название устройства (модель) нужно указать IP демона, порт соответственно и имя упса в точности как он заведен в nut.
  • SNMP для упсов отдающих статистику по SNMP имеющих свой IP. нужно указать только IP управления.

SNMP имя устройства

Система позволяет получать и сохранять в своей базе данных имя устройства по SNMP. По этому полю так же возможно производить поиск.
При добавлении устройства это поле можно оставить пустым, в этом случае система опросит устройство по SNMP и получит данные от него.
При правке свойств устройства, рядом с полем присутствует значок “Лупа”, если нажать на него, то система заполнит это поле на основании текущего значения полученного по SNMP в момент нажатия.

Note

Поле можно отредактировать, в этом случае в системе будет храниться значение заданное вручную.

Функции мониторинга

Для мониторинга сетевого оборудования, на одном (или на нескольких) из серверов информационной системы должен быть запущен процесс monitoring_daemon. Это процесс производит периодическую проверку доступности устройства используя ICMP ping, и если устройство доступно, то проводит сбор данных с него в соответствии с настройками для этого типа устройств.
Через web-интерфейс управления системы можно просматривать состояние устройств, для этого используется раздел “Мониторинг”. Первая страница этого раздела “События устройств” отображает сводное состояние оборудования установленного в узлах связи. На ней показывается график и таблица с информацией о зарегистрированных в системе событиях. В верхней части страницы можно задать произвольный интервал времени для отображения, отфильтровать события по типам или по произвольность строке (например по IP или MAC адресу)
_images/monitoring_health.png
График может рисоваться в логарифмической шкале, поэтому не даже одно событие сразу четко видно на графике.
На странице “Коммутаторы” можно осуществлять поиск среди коммутаторов размещенных в узлах связи.

Note

Типы устройств которые будут находится через этот поисковый механизм настраивается в конфигурационном файле.

_images/monitoring_search.png
Выбрав в поиске коммутатор, можно посмотреть информацию о коммутаторе, текущее состояние портов коммутатора, привязку портов к абонентам и сетевому оборудованию.
_images/monitoring_main.png
Нажав на номер порта можно посмотреть информацию о трафике этого порта за произвольный промежуток времени.
_images/monitoring_port_traffic.png
В форме можно задать размер графика, минимальное и максимальное значение трафика, а также промежуток времени, за который показывать данные. Интервал отображения можно выбрать из списка стандартных вариантов “Последние 10 часов”, “Последние 24 часа”, “Последние 2 дня”, Последние 2 недели”, либо указать произвольный интервал.

Note

Варианты стандартных интервалов и значение по умолчанию можно изменить на странице “Системные параметры”

Для указания произвольного интервала нужно поставить галочку “Ручной интервал”, указать дату и время начала графика, и длительность. Длительность либо задается в секундах, либо можно указать единицу измерения (допустимо: m - минуты, h - часы, d - дни, например длительность “2h” покажет график за два часа). Ширина и высота графика задаются в пикселях, а минимальное значение в битах в секунду, также возможно указывать единицу измерения. (m - мегабиты, k - килобиты). Изменения максимального и минимального значения позволяет отмасштабировать график сконцентрировавшись на нужном диапазоне, например чтобы отсеять пики трафика. На картинке приведенной выше можно указать максимальное значение 500k, чтобы посмотреть входящий трафик интерфейса:
_images/monitoring_port_traffic2.png

Поддержка мониторинга произвольных SNMP OID

Дополнительно в описании устройства может быть включена поддержка мониторинга произвольных SNMP OID. В этом случае на странице изменения свойств устройства появляется ссылка на специальную страницу настройки OID.
_images/monitoring_snmp_custom1.png
На этой странице можно указывать произвольные OID устройства, значения которых могут либо просто отображаться в блоки информации об устройстве, либо дополнительно могут опрашиваться постоянно, в процессе мониторинга устройства.
_images/monitoring_snmp_custom2.png
В примере выше настроены 2 OID для сетевого принтера. первый показывает кол-во страниц отпечатанных принтером, а второй показывает остаток тонера.
Для каждого OID, помимо имени указывает нужно ли мониторить это значение постоянно (столбец “Создать график”), флажок указывающий на необходимость отображения информации о текущем значение в блоке с информацией об устройстве. Графа “Тип” имеет значение только для OID, которые будут опрашиваться постоянно, она показывает значения какого типа будут в этом поле. Если в OID постоянно растет (например счетчик байт на интерфейсе, кол-во отпечатанных страниц), то нужно указывать тип “Счетчик (COUNTER)” в этом случае на графике будет отображаться изменения этого параметра. Если же получаемое значение это непосредственно та величина, которую нужно отобразить (например температура, уровень сигнала, загрузка CPU), то нужно указать “Текущее значение (GAUGE)”.
В результате в блоке с информацией об устройстве будут ссылки на графики и текущие значения для выбранных OID.
_images/monitoring_snmp_custom3.png
Страница с графиком для устройства полностью аналогична странице с графиком порта, за исключением того, что отображается только одна величина. На странице так же можно произвольно указывать интервал отображения и масштаб.

Мониторинг UNIX-серверов

Для мониторинга серверов можно использовать протокол SNMP, однако для достижения большей гибкости можно использовать встроенный в информационную систему механизм получения информации о состоянии сервера. Этот механизм основан на использовании протокола HTTP/HTTPS и CGI скрипта который отдает все необходимые данные в простом текстовом формате. Изменяя этот скрипт можно получить любую нужную информацию, начиная от загрузки CPU и свободного места на диске, заканчивая значением счетчика на определенном правиле firewall и т.п, так как при реализации CGI скрипта можно выполнять любые системные команды сервера.
У оборудования типа “UNIX-сервер” есть поле “URL мониторинга”, в котором указывается URL на сервере где можно получить данные.

Note

Рекомендуется ограничить доступ к этому URL на уровне системного firewall или web-сервера, так чтобы на него можно было попасть только с серверов информационной системы осуществляющих мониторинг оборудования.

Сам CGI скрипт может быть любым, в комплект поставки системы входит pyzzle_agent, которые позволяет отдавать основную информацию о состоянии сервера: счетчики интерфейсов, CPU, свободное место на жестком диске, количество записей в таблице conntrack (для Linux), и счетчики с определенных цепочек правил firewall, использование оперативной памяти.
Формат вывода этого скрипта - группа значений (одно или несколько) на отельной строке, в каждой строке параметры разделенные пробелами:
  1. Имя группы параметры (внутреннее имя параметров, используется в качестве части имени для .rrd файла)
  2. Имя параметра (внутреннее имя параметра, например in_bytes)
  3. Тип параметра (COUNTER или GAUGE в терминологии RRDtool)
  4. Текущее значение
Далее идут параметры аналогичные 2-4 для второго и последующего последующих источников данных.
В описании класса UNIX сервера, дополнительно может определятся функция описывающая правила создания стандартных графиков для отображения этих параметров. По умолчанию в описание класса входят функции для красивого отображения загрузки CPU, статистики базы данных mysql, трафика интерфейса, места на жестком диске, статиситка redis и rrdcached сервера, а так же сводный график для роутера на базе linux (на одном графике одновременно показывается трафик в байтах и пакетах, загрузка CPU, наличие потери пакетов, кол-во записей в conntrack.

Анализ производительности мониторинга

Каждый экземпляр процесса monitoring_daemon осуществляет опрос устройств последовательно, поэтому в реальных инсталляциях необходимо запускать несколько таких процессов. Распределением устройств между ними занимается отдельный процесс. Для этого в конфигурационном файле billing.cfg указываются следующие параметры:
daemon_monitoringdispatcher_count=1
daemon_redismonitoring_count=16
В приведенном примере запускается 16 рабочих процессов и 1 контролирующий процесс.
Основная проблема работы мониторинга - процесс не успевает опрашиваться все устройства за необходимый промежуток времени (обычно 60 секунд). в этом случае данные от устройств собираются реже положенного и в графиках образуются пропуски, или данных вообще не хватает для построения графика. Процесс может не успевать опрашивать все свои устройства либо из-за того что устройств слишком много, либо из-за того что определенные устройства очень медленно отвечают на SNMP запросы (или вообще не отвечают).

Note

Запускать сразу много процессом мониторинга, тоже не целесообразно, так они тратят оперативную память и другие ресурсы системы. Обычно время итерации мониторинга одного устройства около 5 секунд, поэтому кол-во процессов посчитать исхода из правила 5-10 устройств на процесс.

Замена устройств

В зависимости от настроек инсталляции система может быть или просто системой мониторинга текущего состояния сети, или дополнительно нести функции складского и инвентарного учета. В последнем случае для каждого устройства хранится его серийный номер. В ходе эксплуатации сети случаются ситуации когда одно оборудования выходить из строя и на его место ставят другое, причем не всегда полностью аналогичное (например заменили 24 портовый коммутатор, 48 портовым). Для упращения учета замены устройств система позволяет переносить характеристики между устройствами (IP, привязку портов и т.п.). У устройства состояние которого “узел связи” в блоке изменения состояния есть пункт “Замена”, в этой форме нужно указать устройства на складе которое заменяет, и выбрать что делать с текущим устройством: списать или поместить на склад. В результате необходимые характеристики устройства будут заменены: ip, привязка портов, привязка портов других устройств, которые связаны с выбранным.

Специальные графики

В реальной практики работы оператора связи помимо графиков загрузки определенного порта определенного устройства, бывает удобно создавать комплексные графики, на которых отображать несколько параметров одновременно используя различное цветовое выделение и другие приемы повышающие наглядность. Вот несколько примеров таких графиков:
_images/monitoring_specail_graph3.png
_images/monitoring_special_graph1.png
_images/monitoring_speical_graph2.png
Для хранения данных и создания графиков используется библиотека RRDtool™, и модуль мониторинга позволяет использовать все возможности этой библиотеки для создания, при этом упрощая вопросы масштабирования графиков и задания временных интервалов.
Для создания и редактирования графика в разделе “Настройка” web-интерфейса управления используется страница “Мониторинг. Графики”. Для редактирования графика нужно выбрать существующий график из списка, или нажать на ссылку “Добавить новый график”, чтобы создать новый график. Страница настройки графика выглядит так:
_images/monitoring_special_graph4.png
В этой форме задается:
  1. Название графика

  2. Размеры и масштаб графика по умолчанию (при отображении графика эти параметры могут быть изменены)

  3. Устройства, данные которых используются для построения графика. Можно использовать сколько угодно устройств. При добавлении устройства в появляется новый выпадающий список для добавления нового устройства в график.

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

  5. Описание алгоритма построения графика. В этом текстовом блоке произвольно указываются остальные параметры для команды graph библиотеки RRDtool™. (CDEF,VDEF,LINE,AREA,GPRINT и т.п.)

    Note

    Полную информацию о возможностях библиотеки RRDtool™ можно узнать в документации к ней. http://www.rrdtool.org/

    Note

    В рамках технического сопровождения системы, разработчик может дать консультации по построению определенных графиков.

Ссылки на специальные графики отображаются в левой части страниц раздела мониторинга. Масштаб и размеры графика меняются аналогично графикам загрузки порта коммутатора.

Поиск MAC адреса в сети

Информационная система позволяет производить поиск и трассировку L2 маршрута до определенного MAC-адреса в сети. Для этого используется описание топологии сети хранящееся в базе данных информационной системы.
Поиск можно делать через WEB или CLI интерфейсы системы.
Для поиска через web-интерфейс используется страница “Мониторинг” - “MAC поиск”
_images/monitoring_mac_search.png
В форме нужно указать MAC адрес который нужно найти, и выбрать устройство с которого нужно начинать поиск. В процессе поиска система будет опрашивать MAC-PORT таблицу устройств, и при нахождении порта в котором виден искомый MAC адрес, система выполнит аналогичный поиск на оборудовании связанном с найденным портом. В процессе поиска блок с результатами будет фиолетового цвета, по окончании поиска он станет зеленым. Поиск завершается если MAC адрес не найден на очередном устройстве, если MAC адрес принадлежит самому устройству или если MAC адрес находится не в магистральном порту, в последнем случае система сообщит за кем в системе записан найденный порт оборудования.
Список устройств, с которых можно начинать поиск задается в конфигурационном файле billing.cfg в параметре mac_search_web_start_devices, в нем через запятую перечисляются ID устройств с которых можно начинать поиск. Рекомендуется перечислить узловое оборудование, и при поиске когда предварительно район известен, начинать поиск с ближайшего оборудования.
Для поиска через CLI интерфейс, используется команда mac_search. В качестве аргументов нужно указать MAC-адрес, и дополнительно указать ID устройства с которого нужно начинать поиск. Если ID устройства не указана, то поиск начнется с устройства, id которого указан в конфигурационном файле billing.cfg в параметре mac_search_start_device_id
Pyzzle> mac_search 00:1B:11:B5:B8:B7 234
Searching at 234 Cisco Catalyst 2960G-8 Ленинский проспект 51 12 подвал Found at port 2
Searching at 135 DES-3526 (10.0.1.72) Ленинский проспект 51 13 подвал Found at port 25
Searching at 136 DES-3526 (10.0.1.73) Ленинский проспект 51 14 подвал Found at port 25
Searching at 138 DES-3550 (10.0.1.74) Ленинский проспект 51 15 подвал Found at port 49
Searching at 139 DES-3550 (10.0.1.75) Ленинский проспект 51 16 подвал Found at port 49
Searching at 140 DES-3550 (10.0.1.76) Ленинский проспект 51 17 подвал Found at port 49
Searching at 141 DES-3526 (10.0.1.77) Ленинский проспект 51 17 12 эт. Found at port 0
FINISH MESSAGE: This is device itself

События мониторинга

Помимо постоянного сбора данных со счетчиков устройств, система позволяет регистрировать различные события (events).
События могут быть либо одномоментыми (например перезагрузка устройства), либо растянутыми во времени (непример недоступность устройства). События бывают разных типов. Основные типы событий:
  • Устройство недоступно
  • Нет линка
  • Много трафика
  • Нет трафика
  • Ненормальная температура
  • Устройство перезагрузилось
  • МАС адрес заблокирован
  • RAID развалился
  • Ошибка на линке
  • UPS использует батарею
События разделяются на три категории по типам: “Ошибки”, “Предупреждения”, “Клиентские события”. Распределение типов событий по категориям настраивается в системых параметрах.
На странице Мониторинг - События устройств покаывается сводный отчет по текущим и недавним событиям, на странице можно отфильтровать события за произвольный интервал времени, указать категории событий или выбрать типы вручную, дополнительно можно отфильтровать события по району, или по произвольной строке в опписании события.
В отчете рисуется график событий, где наглядно видно когда сколько событий было. Список активных событий и история прошедших событий.
Аналогично можно посмотреть события определенного устройства на странице в меню устройства, там же можно отфильтровать события для определенного порта устройства. В информации о состоянии порта коммутатора, на странице абонента, есть ссылка на страницу со всеми событиями этого порта.
Событием может считаться не только какая-то проблема, но и нормальное состояние системы, которые нужно протоколировать, например остутствие линка в клиентском порту коммутатора это тоже событие и отрыв страницу с событиями порта можно сразу наглядно увидить когда линк был, а когда его не было. Так же регистируются блокировки MAC адресов на портах коммутатора в результате срабатывания MAC-IP привязки.

Информирование о событиях

Система позволяет отправлять сообщения о событиях на email, sms, jabber. Для этого в разделе “Настройка” - “События мониторинга” нужно указать группу получателей сообщений (можно перечислять операторв системы, или группы доступа), а так же способ доставки сообщения.
Далее нужно описать сами правила доставки сообщений, в правиле указываются получатели сообщений, тип события, и так же возможно указание дополнительных фильтров: адрес устройства, тип устройства, тип узла связи где расположено устройство.

Сводная страница мониторинга

Можно настроить страницу, на которой отображать комбинацию любых графиков и статус определенных событий мониторинга.
_images/monitoring_summary.png
Внешний вид и содержимое этой страницы определяется шаблоном local/templates/monitoring_summary.html, шаблон можно редактировать через web-интерфейс по ссылке “Редактировать”
В шаблоне указывается непосредственно HTML код, поэтому можно гибко сверстать страницу любой сложности.
Для вставки графика на страницу можно использовать специальный тег <graph>. В атрибутах тега указывается URL картинки - img и адрес ссылки куда переходить при клике на картинку - href URL для графиков можно посмотреть на соответствующих страницах. В URL не нужно передавать параметры length, start_date` - эти параметры будут добавлены автоматически на основании выбранного интервала на сводной странице. Так же можно использовать параметр quiet=1 для того, чтобы картинка была более компактной, этот параметр убирает детальные подписи к элементам графика.
Для вставки информации о событиях мониторинга можно использовать специальный тег <event_status>. В атрибутах указывается:
  • label отображаемый текст, например название проверяемого устройства
  • device_id - ID проверяемого устройства, можно указть несколько через запятую, alarm сработает, если хотябы с на одном из устройств есть активные события.
  • type - тип события, можно указать несколько через запятую. Если не указать ничего, то будут проверятся все типы, и alarm сработает при любом событии.
  • port_id - фильтр событий по порту устройства (можно несколько портов через запятую), может применяться при детектировании событий на определенном порту.
  • element - тип HTML элемента с указанием этого события (например span или div).
  • style - CSS стиль HTML элемента, применяется при любом варианте состояния, тут можно указать общие стилевое описание - размеры, отступы.
  • ok_style - CSS стиль если события не активны
  • fail_style - CSS стиль если события активны
  • ok_class - CSS класс если события не активны, рекомендуемое значение monitoring_summary_ok - тогда фон будет зеленым
  • fail_class - CSS класс если события активны, рекомендуемое значение monitoring_summary_fail - тогда фон будет красным, а текст мигать.
По умолчанию на странице присутcтвует форма для указания интервала графиков, если в get параметрах указать full_screen=1, то будут отображены только сами события мониторинга - этот режим предназначен для вывода сводной статистики на отдельном большом мониторе.