---
# System prepended metadata

title: Задачи по RAN

---

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


Юнит-тесты пишутся по мере наращивания функциональности

Дополнителное:
* интеграционное тестирование
  ...