Дорожная карта для Pepeunit
0.5.0 Логирование и алертинг для Unit
- Стандартный топик log/pepeunit
- debug, info, warning, error, critical
- Нужна стандартная переменная окружения в env.json, указывающая какой уровень логирования будет отправляться в log/pepeunit
- Нужно установить начиная с какого уровня лога, будет отправляться alert
- Нужно установить стандартное время жизни лога - по умолчанию 86400
- Складывать логи в clickhouse
- clickhouse должен позволять делать запросы на выборку всех логов конкретного устройства, например по названию топика логов
- EMQX должен пересылать алерты на определённый тип ошибок, на основе Rule Engine
- Дросселирование в телеграм должно работать через Backend, а значит нужна пременная, регламентирующая расстояние между алертами в телеге
- Добавить в тестовый клиент, обновелине env.json
Базовый функционал для Telegram
- Написать интеграцию с телеграм - для охвата мобильных устройств
Система агрегации данных
Дать Пользователю создавать временного слушателя mqtt топиков, в идеале внешний сервис на go, а на бек добавить обратную очередь на сохранение:
- Он бы подписывался на все или часть топиков пользователя
- на определённое время
- c ограничением по объёму сохраняемой информации
- Нужно несколько типов слушателей:
- долговременные
- агрегационные со смещающимся окном
- подумать о возможности динамического размера окна
- Стратегии сохранения
- хранятся только данные уже рассчитанные
- cохранение данных в телегу
- clickhouse
- Система собираемых бордов с данными для Graphana и TG интеграции
Анализ динамического состояния узла
- Анализ общего числа сообщений поступающих на бэкенд
- mqtt
- gql
- rest
- aiogram
- Трекер занятых ресурсов - cpu, ram
- Оставшееся место
- Аптайм
- Трекер ошибок, какие возникают чаще, а какие реже
- Трекер алерт крашей, с дросселированием - в телегу админу, надо запоминать сколько раз возник
Анализ нагрузки
На эти метрики будет опираться монетизация и настройки пользователей
- Система отслеживания нагрузки на топики Unit - Расчёт желательно на стороне EMQX
- Система отслеживания средней нагрузки на один Unit - Метрика загрузки для repo
- Метрикой должен быть MPS - запросы в секунду
- Нужна автоматическая отсечка, если Unit превысил лимиты
Монетизация для держателей инстансов
- Подключаемая монетизация на основе Telegram и криптовалют
- Основана должна быть на нагрузке от Unit, который создаёт юзер
- Возможность настройки монетизации для администратора
- Агригируещие топики должны быть монетизированы с другой политикой, т.к. они несут накладные расходы на хранение данных
Система грейдов инстансов
- Добавить итеративность в проверку нагрузки
- Добавить хэш в отчёт, чтобы было сложнее его поменять
- Отчёт по нагрузке должен предоставляться по спец запросу load_limit
- Число бесплатных MPS
- Стоймость MPS всверх бесплатных
- Число бесплатных топиков с агрегацией (нужно придумать метрику)
- Стоймость за один топик с агрегацией (нужно придумать метрику)
- Токен доступа для скрапера генерит Админ инстанса
Федерация
TODO: требуется крепкая проработка
- Федеративный хаб Repo, c поиском по Unit на мультиинстансе
- Внедрение activity pub
- Система взаимодействия между инстансами
- Проработать activity pub
- Проработать bridge y emqx, до разных инстансов
- Белые и чёрные листы доменов для создания repo
- Импорт экспорт всех данных учётной записи по запросу Пользователя
- Добавить кнопку обновления env от pepeunit, для будущей возможности переноса Unit на другие инстансы
- Проработать условия автоматического бана внешних инстансов
- Нужен бан топиков от внешних инстансов, по условиям (выдумать условия)
Видео для документации
- Нужно видео по развёртыванию Pepeunit
- Нужно видео где с 0 на уже развёрнутом инстансе, создаётся готовая система по существующим Repo - от лица Пользователя
- Нужно видео где с 0 на уже развёрнутом инстансе, разработчик Unit последовательно создёт новый Unit с 0 - от лица разработчика Unit