Целью является drop-in замена ranmon агента на новый
Предварительный план разработки:
# Задачи по RAN
## Этап 1
* добавить в сервис metrics_keeper функционал для сохранения метрик в CH из history_metrics_stream
* изменить сервис history_metrics
* /metrics - добавить api для сохранения realtime metrics
* /config - добавить прототип api для отдачи конфига без изменения таблицы gateway в базе
* /firmware_update - добавить прототип api для отдачи конфига url по firmware
## этап 2
* обсудить и определить как изменится модель gw в базе для хранения конфига. какие поля нужны будут, а какие нет. редактировать пользователем или нет. сделать миграцию данных.
* /config - определить как отдавать конфиг в api по cache&checksum
* переименовать сервис history_metrics в условный monitoring2 (рустам)
# задачи по агенту
примерно в ожидаемом порядке следования
* metric collector (1-3 дня)
* запуск скрипта сбор данных
* поддержание внешнего сокета, обработка входящих сообщений
* подготовка MonitoringEvent структур для отправки
* RAN API client. (? - непонятно, надо присмотреться)
* Реализация интерфейсов к RAN
* Приоретизация отправки realtime метрик перед history
* config handler ( 2-3 дня)
* Получение конфигурации из RAN
* конфигурация агента, перезапуск компонентов при изменении настроек
* созранение конфига и чтение при запуске
* Scheduler. (? - пока непонятно, логика может перетряхиваться)
* Отправка метрик в RAN
* circuit-breaker
* Сохранение в storage при невозможности отправки
* lora client (пара часов)
* интерфейс к unix-сокету ranproxy
* storage (? - пока непонятно)
* warm cache - сохранение неподтверждённых в памяти
* удаление подтверждённых пакетов. Как из warm, так и cold
* cold storage - сброс в файл на флеше
* history sender (1-2 дня)
* выборка из storage и отправка в RAN
* Agent updater(?)
* Процесс обновления берётся как есть
* дописывается докачка(а точнее скачивание блоками) обновлений, для надёжной работы на плохом канале с потеряим
Юнит-тесты пишутся по мере наращивания функциональности
Дополнителное:
* интеграционное тестирование
...