diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..82abde1 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +/target +Cargo.lock +*.sock +.env diff --git a/Dockerfile b/Dockerfile index 5215521..ada8997 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,13 @@ RUN apt update && apt install -y musl-tools RUN rustup target add x86_64-unknown-linux-musl COPY . . -RUN cargo test + +ENV CARGO_HTTP_DEBUG=true +ENV CARGO_HTTP_TIMEOUT=100 + +RUN cargo fetch --locked + +RUN cargo test --verbose RUN cargo build --release --target=x86_64-unknown-linux-musl FROM alpine:latest diff --git a/README.md b/README.md index 71c25e4..7936b92 100644 --- a/README.md +++ b/README.md @@ -1,39 +1,133 @@ # Интеграционный модуль для проекта "Буревестник ВКС" ## Описание -`integr_mod` - Rust-пакет, предоставляющий функционал интеграционного модуля в проекте "Буревестник ВКС", состоящий из бинарных крейтов для: +`Интеграционный модуль (ИМ)` - Rust-пакет, предоставляющий функционал интеграционного модуля в проекте "Буревестник ВКС", состоящий из бинарных крейтов для: - получение данных через API ВКС - поддержку хранения, валидации и актуализации собственных конфигураций -- предобработку полученных данных и ~~отправку `Системе Мониторинга`~~ сохранение в БД +- предобработку полученных данных и сохранение в БД +- интеграции с `еНОД.Мониторинг` + +## Специфика работы + +На даннный момент предусмотрено два режима работы: + +1) **Нативный** - режим работы, производящий прямой опрос сервиса видео-конференц связи `Vinteo` и соотвествующий процесс `ETL` + +2) **Статичный** - режим работы *"посредник"*, когда все метрические данные ВКС `Vinteo` получаются через `Full REST API` средства `еНОД.Мониторинг` + +3) **Системный** - аналогичный **статичному** режиму, но метричекие данные (заведомо обогащенные нулевым статусом) отправялются не напрямую в модуль `Prometehus exporter`, а в `Статусную модель` + +> **Примечание** +По стандарту `ИМ` работает в **НАТИВНОМ** режиме и ожидает конфигурации в формате `.json`, однако приоритетным считается **СТАТИЧНЫЙ** режим. Подробная информация о настройке в пункте `Руководство` ## Руководство -1. Заполнить .env файл или установить переменные окружения в соотвествии с примером в `.env.example` файле -``` toml -# Template .env for API grabber +В данном разделе опсиан алгоритм настройки, сборки и запуска программного модуля `ИМ` -# Prometheus-Exporter info -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" +1. Выбор режима работы модуля, который скорректирует принцип настройки: + +| Режим работы | .env | config-api.json | $STATUS_SYSTEM_URL | $EXPORTER_URL | +|---|---|---|---|---| +| Нативный | ❌ | ✅ | ❌ | ❌ | +| Статичный | ✅ | ❌ | ❌❌❌ | ✅ | +| Системный | ✅ | ❌ | ✅ | ❌ | +, где: + +✅ -- следует настроить (предпринять) + +❌ -- игнорируется системой, не стоит настраивать + +❌❌❌ -- **НЕЛЬЗЯ** настраивать (предпринимать), возможны ошибки в работе + +### Настройка режима работы "Нативный" + +Для настройки данного режима необходимо расположить в **активной** директории конфигурационный `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" +... +``` + 2. Произвести сборку проекта командой : ``` bash cargo build --release ``` 3. Запустить -> Debug версия +> **Debug** версия ``` bash cargo run --bin api-grub ``` или -> Release версия +> **Release** версия ``` bash cargo run --release --bin api-grub ``` @@ -42,6 +136,6 @@ cargo run --release --bin api-grub | Крейт (подмодуль) | Прогресс | |---|---| |`api-grub` | ✅✅✅✅✅✅✅✅✅🛠️ | -|`config-delivery [migrated]` | ❌❌❌❌❌❌❌❌❌❌ | +|`config-delivery` [migrated] | ❌❌❌❌❌❌❌❌❌❌ | |`integrs-structs` | ✅✅✅✅✅✅✅✅✅✅ | |`preproc` [temp-deprecated] | ❌❌❌❌❌❌❌❌❌❌ | (разработка временно остановлена)