Целью является 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(?) * Процесс обновления берётся как есть * дописывается докачка(а точнее скачивание блоками) обновлений, для надёжной работы на плохом канале с потеряим Юнит-тесты пишутся по мере наращивания функциональности Дополнителное: * интеграционное тестирование ...