Подключение 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). В нём выполнить следующие шаги:
- Нажать кнопку Добавить (Add). Откроется форма добавления системы
- Внести данные в представленные поля:
- Имя (Name) может быть любое слово, в инструкции используется
ZABBIX
- Обработчик (Handler) - путь до адаптера, вводим
noc.core.etl.extractor.zabbix.ZabbixRemoteSystem
- Среди представленных галочек отмечаем следующие:
Managed Object
,Object
,Resource Group
- В поле Environment вносим реквизиты подключения к Zabbix:
- API_URL - имя (или IP адрес) на котором установлен Zabbix
- API_TOKEN - строка токена для доступа
- Получим форму, заполненную аналогично изображению ниже
- Нажимаем кнопка Сохранить (Save)
Если всё прошло без ошибок в списке должна отобразиться добавленная запись с указанным именем.
Настройка правил¶
Выгрузка создаёт Профиль Аутентификации (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
и проделать следующие шаги:
- Запустить получения данных из vCenter командой
./noc etl extract ZABBIX
, вместоZABBIX
необходимо указать имя, заданное при добавлении внешней системы. - Проверить что какие-то записи выгрузились можно командой
./noc etl diff --summary ZABBIX
, на экране отобразится статистика по полученным записям. - После окончания синхронизации (при отсутствии ошибок) выполняем проверку данных командой
./noc etl check ZABBIX
. В случае обнаружения ошибок, необходимо вернуться на предыдущий шаг и проверить произведённые настройки. - Для загрузки полученных записи в систему следует выполнить команду
./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