Перейти к содержанию

Подключение Zabbix как источника устройств NOC

Zabbix достаточно часто используется как системы мониторинга. При этом сбора данных по сетевому оборудованию часто подключают NOC, в этом случае может возникнуть ситуацию когда оборудование необходимо заносить в две системы, что достаточно неудобно. Для случая когда Zabbix является мастер-системой (в первую очередь добавляется оборудование), его можно интегрировать с НОКом через механизм ETL, добавив как внешнюю систему и синхронизирую с ним устройства (Managed Object).

Для данной схемы в составе NOCa присутствует адаптер для интеграции с Zabbix, он позволяет:

  • Синхронизировать группы (Group) Zabbix, в соответствующие им Ресурсные группы (Resource Group) НОКа
  • Загружать Хосты (Host) Zabbix, поддерживающие SNMP как устройства (Managed Object) НОКа
  • Если у Хоста (Host) заполнены координаты, то на его базе может быть создана точка присутствия (PoP) на карте
  • Интегрироваться по ключу API Key, либо через пользователя (User)
  • Указывать группы (Group), из которых будет получаться оборудование

[!WARNING]

Для работы адаптера потребуется установить библиотеку python-zabbix-utils, это можно сделать командой ./bin/pip install -r .requirements/zabbix.txt из директории noc

Добавление внешней системы

Благодаря механизму ETL НОК может забирать информацию по составу кластера интегрируясь с vCenter. В составе НОКа есть адаптер для интеграции, расположенный в noc.core.etl.extractor.zabbix.ZabbixRemoteSystem. Для его задействования необходимо настроить Внешнюю систему (Remote System), раздел меню Основные (Main) -> Настройки (Setup) -> Внешние системы (Remote System). В нём выполнить следующие шаги:

  1. Нажать кнопку Добавить (Add). Откроется форма добавления системы
  2. Внести данные в представленные поля:
  3. Имя (Name) может быть любое слово, в инструкции используется ZABBIX
  4. Обработчик (Handler) - путь до адаптера, вводим noc.core.etl.extractor.zabbix.ZabbixRemoteSystem
  5. Среди представленных галочек отмечаем следующие: Managed Object, Object, Resource Group
  6. В поле Environment вносим реквизиты подключения к Zabbix:
    1. API_URL - имя (или IP адрес) на котором установлен Zabbix
    2. API_TOKEN - строка токена для доступа
  7. Получим форму, заполненную аналогично изображению ниже
  8. Нажимаем кнопка Сохранить (Save)

Zabbix RemoteSystem Add Form

Если всё прошло без ошибок в списке должна отобразиться добавленная запись с указанным именем.

Настройка правил

Выгрузка создаёт Профиль Аутентификации (Auth Profile) - ZB.AUTO, он же назначается устройствам. По умолчанию в нём не заданы реквизиты доступа. Поэтому для работы необходимо их прописать в разделе Управление устройствами (Service Activation) -> Настройки (Setup) -> Профиль Аутентификации (Auth Profile), либо настроить правила подбора реквизитов в Управление устройствами (Service Activation) -> (Настройки ) Setup -> Правила подбора доступа (Credential Check Rules).

Для размещения устройств выгрузки используется Зона ответственности (Administrative Domain) - default, и Сегмент (Network Segment) - ALL.

Для устройств (Managed Object) создаётся Профиль объекта (Object Profile) - zb.std.sw

Warning

Если во время синхронизации у записи изменится какое-либо поле, то оно затрёт изменения сделанные пользователем в системе

Настройка адаптера

В поле Environment Внешней системы (Remote System) можно указывать настройки для адаптера, для Zabbix доступны следующие:

  • API_URL - размещается ссылка на Zabbix в формате https://<host>
  • API_TOKEN - указывается токен для аутентификации - если используется схема с ним
  • GROUPS_FILTER - перечисляются имена групп Zabbix хосты из которых будут выгружены. Разделитель точка с запятой. Имена должны ТОЧНО совпадать с таковыми в Zabbix
  • DEFAULT_SCHEME - схема доступа по умолчанию для выгружаемых устройств. Если не указана, то будет SSH:
  • 1 - TELNET
  • 2 - SSH
  • DEFAULT_POOL - пул (Pool) для размещения устройств. Если не указан, то будет default
  • LOCATION_FIELD - название поля в Inventory Zabbix, содержащее строку географического адреса. Для размещения оборудования на карте. Используется если не заданы ширина или долгота: lan/lot.

Warning

Настройка LOCATION_FIELD на текущий момент не поддерживается

Использование отстойника

По умолчанию из хостов (Host) Zabbix в процессе выгрузки создаются устройства (Managed Obejct), но возможно использовать механизм Отстойника (Purgatorium), для хранения хостов из Zabbix. В этом случае результаты вначале регистрируются как найденные адрес (Discovered Objects) и становятся доступны в разделе Service Activation -> Setup -> Discovered Objects. ~~Инструкция по работе (ссылка)~~

Для отправки устройств в Отстойник необходимо изменить настройку Managed Object Loader Policy Внешней системы на Discovered Object.

Note

Функционал Отстойника (Discovered Objects) доступен начиная с версии 24.1 в экспериментальном режиме

Выгрузка данных

После добавления внешней системы необходимо запустить процедуру выгрузки данных. Это делается через консольную команду ./noc etl. Для её запуска необходимо перейти в папку с установленным НОКом - /opt/noc и проделать следующие шаги:

  1. Запустить получения данных из vCenter командой ./noc etl extract ZABBIX, вместо ZABBIX необходимо указать имя, заданное при добавлении внешней системы.
  2. Проверить что какие-то записи выгрузились можно командой ./noc etl diff --summary ZABBIX, на экране отобразится статистика по полученным записям.
  3. После окончания синхронизации (при отсутствии ошибок) выполняем проверку данных командой ./noc etl check ZABBIX. В случае обнаружения ошибок, необходимо вернуться на предыдущий шаг и проверить произведённые настройки.
  4. Для загрузки полученных записи в систему следует выполнить команду ./noc etl load ZABBIX

Миграция с Contrib

В случае если для синхронизации с Zabbix использовался адаптер из Contrib то для использования адаптера из коробки, необходимо заменить поле Handler в настройках внешней системы. Если изменения в код contrib не вносилось - при переходе на адаптер из коробки при синхронизации произойдут следующие изменения:

  • Зона ответственности (Administrative Domain) изменится на Default
  • Сегмент сети (Network Segment) изменится на ALL
  • Точка присутствия (PoP) будет удалена

Для избегания подобных изменений можно код из встроенного адаптера скопировать в текущий (из Contrib), заменив значения полей administrative_domain и segment соответственно:

  • administrative_domain - zb.root
  • segment - !new

Warning

Если производились какие-либо собственные доработки, их необходимо перенести :)

Доработка адаптера

Если необходимо дополнить/поменять логику работы адаптера или использовать свой, то для этого предусмотрен механизм размещения доработок системы (Custom). При его использовании доработки размещаются в отдельной папке, что позволяет обновлять систему без необходимости восстанавливать свои изменения после обновления. Инструкция по использованию Custom