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.