Перейти к основному содержимому
Версия: 2.4

Фетчеры

Фетчер — компонент, который получает сырые данные из внешнего источника: с объекта контроля, из другой системы или из атрибута самой КЕ.

Фетчер настраивается на атрибуте ТКЕ. Атрибут без фетчера в обогащении не участвует. Дальнейшую обработку полученного значения выполняют парсеры и постпроцессоры.

Наследование параметров фетчеров​

Благодаря наследованию CMDB выполняет автоматическую привязку атрибутов в дереве ТКЕ. Однако, для обогащения сами атрибуты привязать недостаточно. На них нужно настроить фетчеры. Настройка фетчеров подчиняется правилам наследования. Поведение наследования зависит от того в каком месте иерархической цепочки выполняется настройка. В общем виде правила наследования выглядят следующим образом:

  • Настройка фетчера распространяется на все атрибуты дочерних ТКЕ
  • На дочернем ТКЕ фетчер может быть переопределен
  • Переопределение может быть удалено, фетчер восстановит настройку родителя
  • Фетчер самостоятельно не может перейти из настроенного/переопределенного состояния в унаследованное, даже если его настройки совпадают с родительским фетчером

Настройка фетчера на корневом атрибуте

Настройка фетчера на атрибуте корневого ТКЕ распространяется на этот атрибут во всех дочерних ТКЕ — по всей ветке дерева. Там, где нужно другое поведение, фетчер переопределяется на конкретном дочернем ТКЕ.

Получить данные из атрибута​

Предназначен для получения данных из значения атрибута КЕ. Настраиваемый параметр: атрибут из которого взять данные - наименование атрибута ТКЕ.

Получить данные из конфигурации​

Предназначен для получения конфигурации КЕ во время обогащения.

Сохранить значение в атрибут​

Предназначен для заполнения атрибута КЕ определенным значением. Настраиваемый параметр: данные, которые нужно записать в атрибут - строка.

Выполнить HTTP GET запрос​

Предназначен для получения данных по HTTP. Настраиваемые параметры:

  • параметры запроса- строка;
  • проверить TLS сертификат сервера - флаг включающий проверку TLS сертификата сервера;
  • использовать ТКЕ для подстановки данных из атрибутов - Не использовать или наименование ТКЕ;
  • имя хоста - строка или наименование атрибута ТКЕ;
  • порт - число или наименование атрибута ТКЕ;
  • логин - строка или наименование атрибута ТКЕ;
  • пароль - строка или наименование атрибута ТКЕ;
  • путь - строка или наименование атрибута ТКЕ;

Выполнить SSH команду​

Предназначен для получения данных по ssh. Настраиваемые параметры:

  • команда выполняемая на устройстве - строка;
  • использовать ТКЕ для подстановки данных из атрибутов - Не использовать или наименование ТКЕ;
  • имя хоста - строка или наименование атрибута ТКЕ;
  • порт - число или наименование атрибута ТКЕ;
  • логин - строка или наименование атрибута ТКЕ;
  • пароль - строка или наименование атрибута ТКЕ;
  • цифровой отпечаток - строка или наименование атрибута ТКЕ;

Опросить DionisNX​

Предназначен для взаимодействия с DionisNX по ssh. Настраиваемые параметры:

  • действие - Получить конфигурацию или Выполнить команду;
  • конфигурации - running или startup;
  • команда - строка или наименование атрибута ТКЕ;
  • использовать ТКЕ для подстановки данных из атрибутов - Не использовать или наименование ТКЕ;
  • имя хоста - строка или наименование атрибута ТКЕ;
  • порт - число или наименование атрибута ТКЕ;
  • логин - строка или наименование атрибута ТКЕ;
  • пароль - строка или наименование атрибута ТКЕ;
  • цифровой отпечаток - строка или наименование атрибута ТКЕ;

Отпечаток ключа​

Предназначен для получения ssh отпечатка. Настраиваемые параметры:

  • использовать ТКЕ для подстановки данных из атрибутов - Не использовать или наименование ТКЕ;
  • имя хоста - строка или наименование атрибута ТКЕ;
  • порт - число или наименование атрибута ТКЕ;

Получить авторизационные данные из запроса​

Предназначен для получения авторизационных данных из HTTP запроса. Настраиваемые параметры:

  • формат HTTP запроса - JavaScript формат или Yaml формат;
  • проверить TLS сертификат сервера - флаг включающий проверку TLS сертификата сервера;
  • данные HTTP запроса для авторизации - текст;
  • данные HTTP запроса для проверки/продления актуальности данных - текст;

Пример параметра данные HTTP запроса для авторизации в JavaScript формате:

fetch("http://example.com/test?id=8&name=t", {
"headers": {
"content-type": "application/json",
"cookie": "params=1; session=123"
},
"body": "{\"arguments\":{\"attribute_name\":\"raw_configuration\"}}",
"method": "PUT"
});

Пример параметра данные HTTP запроса для проверки/продления актуальности данных в Yaml формате:

url: http://example.com/test
params:
id: 8
name: t
headers:
content-type: application/json
cookie: params=1; session=123
body:
arguments:
attribute_name:raw_configuration
method: PUT

Правила заполнения параметров​

Поле для параметров данные HTTP запроса для авторизации и данные HTTP запроса для проверки/продления актуальности данных поддерживают шаблонизатор jinja.

Используются следующие правила:

  • [% - начало блока;
  • %] - конец блока;
  • [# - начало коментария;
  • #] - конец коментария;
  • [[ - начало переменной;
  • ]] - конец переменной.

Поддерживаются следующие конструкции:

  • [[ attributes.<имя_атрибута> ]] - ссылка на значение атрибута;
  • [[ composition.<имя_ТКЕ>.attributes.<имя_атрибута> ]] - ссылка на значение атрибута композирующего КЕ;
  • [[ fields.ci_id ]] - ссылка на идентификатор текущего КЕ;
  • [[ fields.ci_type_name ]] - ссылка на имя ТКЕ текущего КЕ;
  • [[ fields.comp_ci_id ]] - ссылка на идентификатор композирующего КЕ.

Поддерживаются следующие ключи:

  • url - только в Yaml формате;
  • params;
  • headers;
  • body;
  • method;

Ключ method поддерживает следующие значения:

  • GET;
  • OPTIONS;
  • HEAD;
  • POST;
  • PUT;
  • PATCH;
  • DELETE.

Выполнить HTTP запрос​

Предназначен для получения данных по HTTP. Настраиваемые параметры:

  • формат HTTP запроса - JavaScript формат или Yaml формат;
  • запомнить возвращенную cookie в глобальном хранилище - флаг;
  • проверить TLS сертификат сервера - флаг включающий проверку TLS сертификата сервера;
  • данные HTTP запроса для авторизации - текст, поддерживает шаблонизатор jinja аналогично фетчеру Получить авторизационные данные из запроса;

Cell towers fetcher from attributes​

примечание

В системе есть два фетчера вышек сотовой связи. Здесь описан Cell towers fetcher from attributes — он берёт данные из атрибута КЕ. Фетчер Cell towers fetcher решает ту же задачу, но получает данные HTTP-запросом и настраивается так же, как Выполнить HTTP запрос.

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

Настраиваемый параметр: атрибут из которого взять данные - наименование атрибута ТКЕ, из которого будут извлекаться данные.

Данные в атрибуте должны быть представлены в виде списка объектов со следующими полями:

  • act - (опционально) активность;
  • mcc - (опционально) код страны;
  • mnc - (опционально) код оператора;
  • area - (опционально) код зоны;
  • cell - (опционально) код ячейки;
  • lon - (опционально) долгота вышки;
  • lat - (опционально) широта вышки; Все поля не обязательны, но хотя бы одно из них должно быть заполнено. Лишние поля игнорируются.

Пример json схемы для атрибута:

{
"type": "array",
"items":{
"type": "object",
"properties": {
"act": {
"type": "string"
},
"mcc": {
"type": "integer"
},
"mnc": {
"type": "integer"
},
"area": {
"type": "integer"
},
"cell": {
"type": "integer"
},
"lon": {
"type": "number"
},
"lat": {
"type": "number"
}
}
}
}

Пример данных в атрибуте:

[{
"act": 123,

"mcc": 123,
"mnc": 123,

"area": 123,
"cell": 123,

"lon": 123.123,
"lat": 123.123
}]

В результате работы фетчер возвращает следующую структуру:

{
"lat": 123.23,
"lon": 123.23,

"precision": 10,
}

Логика работы фетчера

  1. Группировка данных: Входные данные группируются по уровню точности, от более точных к менее точным.

  2. Усреднение координат: Усреднение выполняется только в пределах одной группы. Выбирается группа с наивысшей точностью. Внутри группы координаты берутся из базы данных вышек с учетом имеемой информации о вышке в текущей группе. Чем меньше информации о вышке тем больше вариантов получится при сопоставлении с базой данных, тем меньше точность результата.

  3. Определение точности: Точность результата зависит от полноты данных о вышке. Значение точности указывается в поле precision.

Уровни точности

  • 10: Используются поля lon и lat.
  • 9: Используются поля act, mcc, mnc, area, cell.
  • 8: Используются поля mcc, mnc, area, cell.
  • 7: Используются поля act, mcc, mnc, area.
  • 6: Используются поля mcc, mnc, area.
  • 5: Используются поля act, mcc, mnc.
  • 4: Используются поля mcc, mnc.

Примеры работы

  1. Пример 1:

Входные данные:

[{
"act": 123,

"mcc": 123,
"mnc": 123,

"area": 123,
"cell": 123,

"lon": 123.123,
"lat": 123.123
}]

Результат:

{
"lat": 123.123,
"lon": 123.123,

"precision": 10,
}
  1. Пример 2:

Входные данные:

[{
"act": 123,

"mcc": 123,
"mnc": 123,

"area": 123,
"cell": 123,
}]

Результат(координаты получены из базы данных вышек):

{
"lat": 123.123,
"lon": 123.123,

"precision": 9,
}

Требования к данным

Для работы фетчера необходима база данных координат вышек сотовой связи. Архив с координатами сервера доступен по ссылке https://nexus.pamir.int/#browse/browse:pamir-configs:cell_towers.sqlite.

Настройки окружения

  1. Скачайте архив и разместите его в локальном хранилище.
  2. Пробросьте архив в контейнер celery, указав путь к файлу в переменной окружения CELL_TOWERS_SQLITE_PATH По умолчанию (без указания переменной) файл ищется по пути /opt/tenax-it/cell_towers/cell_towers.sqlite.

Пример проброса архива в контейнер (если архив с вышками лежит в папке ./data/cell_towers):

# docker-compose.celery.app.yml в контейнере:
- type: bind
source: ./data/cell_towers
target: /opt/tenax-it/cell_towers

Выполнить PromQL запрос​

Предназначен для получения данных от Prometheus. Настраиваемые параметры:

  • атрибут из которого взять данные- Использовать литеральное значение или наименование атрибута ТКЕ;
  • значение - текст;
  • проверить TLS сертификат сервера - флаг включающий проверку TLS сертификата сервера;