115 lines
4.8 KiB
Markdown
115 lines
4.8 KiB
Markdown
# 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/<debug или release>/таргет_сборки/>`
|
||
|
||
### Преднастройка запуска
|
||
|
||
Преднастройка пакета `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
|
||
``` |