Sources - wildberries-tech/universal-harvester GitHub Wiki
Для работы Universal Harvester требуется определить внешние источники данных, помимо стандартных sqlite3_in_memory, pandas_in_memory и duckdb. Чтобы определить новый источник данных, нужно создать его через интерфейс Universal Harveter или добавить его напрямую в БД. Список необходимых полей для каждого источника описаны в файле app/engine/engine.py -> ENGINE_SOURCES_AND_FUNCTIONS_MAP.
sourcename -- уникальное имя источника данных в экземпляре Universal Harvester, по полям sourcename и type осуществляется привязка шагов (step) к источнику (source).
Блок key представляет собой JSON с ссылкой на раздел keys
"key":{
"system":"system in keys table",
"account":"account in keys table"
}
max_threads является обязательным параметром для каждого источника и определяет возможное количество одновременно работающих с источником экземпляров движка.
Elastic
Подключение напрямую к elastic.
type -- elastic
{
"description":"",
"type":"elastic",
"host":"https://elastic.ru",
"auth_type":"api_key",
"port":9200,
"request_timeout":300,
"max_retries":10,
"verify_certs":false,
"retry_on_timeout":true,
"ssl_show_warn":false,
"max_threads": 10,
"key":{
"system":"system in keys table",
"account":"account in keys table"
}
}
Тип аутентификации auth_type может быть http_auth или api_key. В случае http_auth account будет передаваться как username.
Elastic proxypass (kibana)
Подключние к elastic через kibana через механизм proxypass. Как будто вы выполняете запросы в dev tools.
type -- elastic_requests
{
"type":"elastic_requests",
"max_threads":10,
"verify_certs":false,
"request_timeout":300,
"key":{
"system":"system in keys table",
"account":"account in keys table"
}
}
URL подключения указывается в конкретном шаге в разделе Steps.
Opensearch
type -- opensearch
{
"type":"opensearch",
"host":"opensearch.example.ru",
"port":9200,
"auth_type":"http_auth",
"max_threads":10,
"http_compress":true,
"use_ssl":true,
"verify_certs":false,
"ssl_assert_hostname":false,
"ssl_show_warn":false,
"timeout":300,
"max_retries":2
"key":{
"system":"system in keys table",
"account":"account in keys table"
}
}
Тип аутентификации auth_type может быть только http_auth.
Netbox
type -- netbox
{
"type":"netbox",
"url":"https://netbox.example.ru/",
"host":"netbox.example.ru",
"port":443,
"max_threads":10,
"use_ssl":true,
"timeout":120,
"key":{
"system":"system in keys table",
"account":"account in keys table"
}
}
SQLite3 in memory
Стандартный встроенный источник данных, на нём могут выполняться все основные задачи по подготовке, обработке и обогащению данных. С помощью значения max_threads можно регулировать потребление ОЗУ на хосте Universal Harvester.
type -- sqlite3_in_memory
{
"type":"sqlite3_in_memory",
"max_threads":999
}
duckdb
Стандартный встроенный источник данных, на нём могут выполняться все основные задачи по подготовке, обработке и обогащению данных. С помощью значения max_threads можно регулировать потребление ОЗУ на хосте Universal Harvester.
type -- duckdb
{
"type":"duckdb",
"max_threads":999
}
PostgreSQL
type -- postgresql
{
"type":"postgresql",
"host":"postgresql.example.ru",
"port":5432,
"database":"db",
"auth_type":"login/pass",
"max_threads":10,
"key":{
"system":"system in keys table",
"account":"account in keys table"
}
}
MSSQL
type -- mssql
{
"type":"mssql",
"host":"mssql.example.ru",
"port":1433,
"database":"db",
"auth_type":"login/pass",
"max_threads":10,
"key":{
"system":"system in keys table",
"account":"account in keys table"
}
}
DNS
type -- dns
{
"type":"dns",
"max_threads":10
}
Запросы производятся от хоста Universal Harvester в соответствии с настройками ОС.
GitLab
type -- gitlab
{
"type":"gitlab",
"url":"https://gitlab.example.ru",
"timeout": 60,
"max_threads":10,
"key":{
"system":"system in keys table",
"account":"account in keys table"
}
}
Iris IRP
type -- irp_iris
{
"type":"irp_iris",
"url":"https://iris.example.ru",
"timeout": 60,
"max_threads":10,
"key":{
"system":"system in keys table",
"account":"account in keys table"
}
}
Teleport
Для корректной работы Teleport необходимо на этапе сборки контейнера добавить дистрибутив нужной версии для установки клиента в контейнер. Для работы вне контейнера необходимо установить клиент teleport требуемой версии. Реализован вход с помощью дополнительно фактора TOTP.
type -- teleport
{
"type":"teleport",
"host":"teleport.example.ru",
"max_threads":1,
"key":[{"system":"teleport", "account":"foo.bar"},{"system":"teleport", "account":"foo.bar_TOTP"}]
}
Блок keys для teleport имеет уникальный вид ввиду использования двух секретов.
YouTrack
type -- youtrack
{
"type":"youtrack",
"url":"https://youtrack.example.ru",
"timeout": 60,
"max_threads":1,
"key":{
"system":"system in keys table",
"account":"account in keys table"
}
}
Grafana
type -- grafana
{
"type":"grafana",
"url":"https://grafana.example.ru",
"max_threads":1,
"key":{
"system":"system in keys table",
"account":"account in keys table"
}
}
Pandas in memory
Стандартный встроенный источник данных, на нём выполнется сложное агрегирование данных. С помощью значения max_threads можно регулировать потребление ОЗУ на хосте Universal Harvester.
type -- pandas
{
"type":"pandas",
"max_threads":999
}
Ollama
type -- ollama
{
"type":"ollama",
"max_threads":1,
"verify_certs":false,
"request_timeout":300
"key":{
"system":"system in keys table",
"account":"account in keys table"
}
}
Manticoresearch
type -- manticoresearch.
{
"type":"manticoresearch",
"url":"https://manticore.example.ru/sql?mode=raw",
"timeout":60,
"verify":false,
"max_threads":2
}
Адрес подключения указывается в конкретном шаге в разделе Steps.