# Интеграционный модуль для проекта "Буревестник ВКС" ## Описание `Интеграционный модуль (ИМ)` - Rust-пакет, предоставляющий функционал интеграционного модуля в проекте "Буревестник ВКС", состоящий из бинарных крейтов для: - получение данных через API ВКС - поддержку хранения, валидации и актуализации собственных конфигураций - предобработку полученных данных и сохранение в БД - интеграции с `еНОД.Мониторинг` ## Специфика работы На даннный момент предусмотрено два режима работы: 1) **Нативный** - режим работы, производящий прямой опрос сервиса видео-конференц связи `Vinteo` и соотвествующий процесс `ETL` 2) **Статичный** - режим работы *"посредник"*, когда все метрические данные ВКС `Vinteo` получаются через `REST-Full API` средства `еНОД.Мониторинг` 3) **Системный** - аналогичный **статичному** режиму, но метрические данные (заведомо обогащенные нулевым статусом) отправялются не напрямую в модуль `Prometehus exporter`, а в `Статусную модель` 4) **Vinteo** - особый режим работы, предполагающий сбор определенного набора метрик напрямую с ВКС `Vinteo` механизмом многоэтапного `API-запроса` > **Примечание** По стандарту `ИМ` работает в **НАТИВНОМ** режиме и ожидает конфигурации в формате `.json`, однако приоритетным считается **СТАТИЧНЫЙ** режим. Подробная информация о настройке в пункте `Руководство` ## Руководство В данном разделе опсиан алгоритм настройки, сборки и запуска программного модуля `ИМ` ### Преднастройка 1. Выбор режима работы модуля, который скорректирует принцип настройки: | Режим работы | .env | config-api.json | $STATUS_SYSTEM_URL | $EXPORTER_URL | |---|---|---|---|---| | Нативный | ❌ | ✅ | ❌ | ❌ | | Статичный | ✅ | ❌ | ❌❌❌ | ✅ | | Системный | ✅ | ❌ | ✅ | ❌ | , где: ✅ -- следует настроить (предпринять) ❌ -- игнорируется системой, не стоит настраивать ❌❌❌ -- **НЕЛЬЗЯ** настраивать (предпринимать), возможны ошибки в работе > Режим работы `Vinteo` *не описан* в таблице **намеренно** ### Настройка режима работы "Нативный" Для настройки данного режима необходимо расположить в **активной** директории конфигурационный `config_api.json` файл: ``` json { "config": [ { "id":"zvks", "login" : "", "pass" : "", "api_key" : "6fe8b0db-62b4-4065-9c1e-441ec4228341.9acec20bd17d7178f332896f8c006452877a22b8627d089105ed39c5baef9711", "period" : "", "timeout" : "5", "metrics" : [ { "name": "conferences", "url": "https://demo.vcs.vinteo.dev/api/v1/conferences", "measure": [ { "id":"number", "type": "text", "addr": "data.conferences[].number" }, { "id":"total", "type": "integer", "addr": "data.total" }, { "id":"participants_total", "type": "integer", "addr": "data.conferences[].participants.total" }, { "id":"parts_total_in_each", "type": "integer", "addr": "data.conferences[description].participants.total" }, { "id":"participants_online", "type": "integer", "addr": "data.conferences[].participants.online" } ] }, { "name": "abonents", "url": "https://demo.vcs.vinteo.dev/api/v1/accounts", "measure": [ { "id":"total", "type": "integer", "addr": "data.total" } ] } ] } ] } ``` > **Примечание** Название конфигурационного файла должно быть как в примере - `config_api.json` ### Настройка режима работы "Статичный" Для настройки данного режима необходимо пополнить данными о сервере в `.env` файле по примеру: ``` toml ... EXPORTER_URL = "http(s)://ip.ip.ip.ip:port" # <--- экспорт данных (обязательно) # eNODE.Monitoring configuration ENODE_MONITORING_IP = "ip.ip.ip.ip" # admin user is required ENODE_MONITORING_LOGIN = "admin_user_enode_monitoring"# ---> получение данных # admin password is required ENODE_MONITORING_PASSWORD = "admin_password_enode_monitoring" ... ``` ### Настройка режима работы "Системный" Для настройки данного режима необходимо пополнить данными о сервере в `.env` файле по примеру: ``` toml ... STATUS_SYSTEM_URL = "http(s)://{ip}:{port}/api/input"# <--- экспорт данных # eNODE.Monitoring configuration ENODE_MONITORING_IP = "{ip}.{ip}.{ip}.{ip}" # admin user is required ENODE_MONITORING_LOGIN = "admin_user_enode_monitoring"# ---> получение данных # admin password is required ENODE_MONITORING_PASSWORD = "admin_password_enode_monitoring" ... ``` ### Настройка режима работы "Vinteo" Для работы в данном режиме необходимо установить переменные окружения в соотвествии со списком ниже ``` toml ... VINTEO_URL_BASE = "https://demo.vcs.vinteo.dev" VINTEO_ENDPOINT_CONFERENCES = "/api/v1/conferences" VINTEO_ENDPOINT_PARTICIPANTS = "/api/v1/participants/" VINTEO_API_KEY = "00000000000111111111.aaaaaaaaaaaaaaabbbbbbbbbbbbb" ... ``` ### Настройка экспорта полученных и обработанных данных Настройка *точки выхода* для полученных и обработанных метрик определеяется установленными в переменных окружения параметрами, варианта два: 1) **Экспорт в статусную модель** в рамках механизма сквозного прохода данных в проекте `Буревестник ВКС` ``` toml ... STATUS_SYSTEM_URL = "{BASE_URL}/{ROUTE}" ... ``` 2) **Экспорт в экспортер или иной потребитель данных** ``` toml ... EXPORTER_URL = "{BASE_URL}/{ROUTE}" ... ``` > ### **ОЧЕНЬ ВАЖНОЕ ПРИМЕЧАНИЕ** > --- > Одновременное использование `$STATUS_SYSTEM_URL` и `$EXPORTER_URL` **НЕДОПУСТИМО** !! Вариант со ссылкой **на статусную модель** является _по стандарту_ **БОЛЕЕ ПРИОРИТЕТНЫМ**, второй затрется, использовать необходимо только один 2. Произвести сборку проекта командой : ``` bash cargo build --release ``` 3. Запустить > **Debug** версия ``` bash cargo run --bin api-grub ``` или > **Release** версия ``` bash cargo run --release --bin api-grub ``` ## Текущий прогресс | Крейт (подмодуль) | Прогресс | |---|---| |`api-grub` | ✅✅✅✅✅✅✅✅✅🛠️ | |`config-delivery` [migrated] | ❌❌❌❌❌❌❌❌❌❌ | |`integrs-structs` | ✅✅✅✅✅✅✅✅✅✅ | |`preproc` [temp-deprecated] | ❌❌❌❌❌❌❌❌❌❌ | (разработка временно остановлена)