Фетчеры
Фетчер — компонент, который получает сырые данные из внешнего источника: с объекта контроля, из другой системы или из атрибута самой КЕ.
Фетчер настраивается на атрибуте ТКЕ. Атрибут без фетчера в обогащении не участвует. Дальнейшую обработку полученного значения выполняют парсеры и постпроцессоры.
Наследование параметров фетчеров
Благодаря наследованию 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,
}
Логика работы фетчера
-
Группировка данных: Входные данные группируются по уровню точности, от более точных к менее точным.
-
Усреднение координат: Усреднение выполняется только в пределах одной группы. Выбирается группа с наивысшей точностью. Внутри группы координаты берутся из базы данных вышек с учетом имеемой информации о вышке в текущей группе. Чем меньше информации о вышке тем больше вариантов получится при сопоставлении с базой данных, тем меньше точность результата.
-
Определение точности: Точность результата зависит от полноты данных о вышке. Значение точности указывается в поле 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:
Входные данные:
[{
"act": 123,
"mcc": 123,
"mnc": 123,
"area": 123,
"cell": 123,
"lon": 123.123,
"lat": 123.123
}]
Результат:
{
"lat": 123.123,
"lon": 123.123,
"precision": 10,
}
- Пример 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.
Настройки окружения
- Скачайте архив и разместите его в локальном хранилище.
- Пробросьте архив в контейнер
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 запрос
Предназначен для получения данных из хранилища метрик. Настраиваемые параметры:
атрибут из которого взять данные-Использовать литеральное значениеили наименование атрибута ТКЕ;значение- текст;проверить TLS сертификат сервера- флаг включающий проверку TLS сертификата сервера;