# Prometheus exporter Программный компонент проекта "Буревестник ВКС", предоставляющий функционал "кастомного" `Prometheus` экспортера для обработки метрических данных ### Функциональные особенности 1) приемка метрических данных с "Интеграционного модуля" в особом формате 2) приведение принятых метрических данных к виду `Prometheus`-метрик 3) хранение и актуализация метрических данных формата `Prometheus`-метрик в локальном `Registry` 4) предоставления веб-интерфейса (аналогичного интерфейсу стандартного `Prometheus` экспортера) для получения ### Прикладные ограничения локальной сборки пакета Для локальной сборки Rust-пакета `prometheus-exporter` необходимы: 1) `cargo` (>=1.85.0) 2) `rustc` (>=1.85.0) 3) `rustup` (>=1.28.1) для выбора `target` ОС и архитектуры сборки ### Руководство по сборке пакета 1) На первом этапе следует удостовериться в отсутствии багов и неточностей в работе модуля предвариетльно запустив юнит-тесты командой: ``` cargo test ``` > Пакетный менеджер `cargo` автоматически соберет проект в необходимой для тестирования конфигурации и запустит тесты, в терминале будут отображены результаты >> ВАЖНО! При возникновении какой-либо ошибки в процессе тестирования убедительная просьба - оставить соответствующий `Issue` в данном репозитории и не использовать пакет до устранения проблемы 2) Сама сборка Rust-пакета `prometheus-exporter` осуществляется введением команды * для сборки `Debug`-версии проекта ``` bash cargo build ``` * для сборки `Release`-версии проекта ``` bash cargo build --release ``` ### Запуск проекта Для запуска проекта необходимо воспользоваться одной из команд: * для запуска `Debug`-версии проекта ``` bash cargo run ``` * для запуска `Release`-версии проекта ``` bash cargo run --release ``` > Если необходимо работать с бинарными файлами, их можно найти по пути `<путь_до_пакета/target//таргет_сборки/>` ### Преднастройка запуска Преднастройка пакета `prometheus-exporter` осуществляется внутри `.env` файла по примеру, описанному в файле `.env.example` ``` toml # port binding for prometheus-exporter # default value = 9100 PROMETHEUS_EXPORTER_PORT = 9100 ``` ### Проверка работоспособности С точки зрения специфики программного модуля `Prometehus exporter` существует **2 способа** проверки работоспособности #### Прикладные требования для проверки работоспособности `prometheus-exporter` * наличие утилиты `curl` или ближайшего аналога #### Способы 1) Попытка получить данные ``` bash curl -X GET http://localhost:9100/metrics ``` 2) Попытка загрузить тестовую метрику Вид тестовой метрики по формату который принимает пакет `prometheus-exporter`: ``` json { "service_name" : "test", "endpoint_name" : "test", "metrics" : [{ "id" : "test", "type" : "", "addr" : "test", "value" : 12, "description" : "test help", }] } ``` Команда загрузки тестовой метрики в `prometheus-exporter`: ``` bash curl -X POST -H 'Content-Type: application/json' 'http://localhost:9100/update' -d '{ "service_name" : "test", "endpoint_name" : "test", "metrics" : [{ "id" : "test", "type" : "", "addr" : "test", "value" : 12, "description" : "test help" }]}' ``` Ответом от сервера если метрика загрузится будет: ``` Ok ```