Skip to content

Дорожная карта для Pepeunit

0.5.0 Логирование и алертинг для Unit

  1. Стандартный топик log/pepeunit
  2. debug, info, warning, error, critical
  3. Нужна стандартная переменная окружения в env.json, указывающая какой уровень логирования будет отправляться в log/pepeunit
  4. Нужно установить начиная с какого уровня лога, будет отправляться alert
  5. Нужно установить стандартное время жизни лога - по умолчанию 86400
  6. Складывать логи в clickhouse
  7. clickhouse должен позволять делать запросы на выборку всех логов конкретного устройства, например по названию топика логов
  8. EMQX должен пересылать алерты на определённый тип ошибок, на основе Rule Engine
  9. Дросселирование в телеграм должно работать через Backend, а значит нужна пременная, регламентирующая расстояние между алертами в телеге
  10. Добавить в тестовый клиент, обновелине env.json

Базовый функционал для Telegram

  1. Написать интеграцию с телеграм - для охвата мобильных устройств

Система агрегации данных

Дать Пользователю создавать временного слушателя mqtt топиков, в идеале внешний сервис на go, а на бек добавить обратную очередь на сохранение:

  1. Он бы подписывался на все или часть топиков пользователя
    • на определённое время
    • c ограничением по объёму сохраняемой информации
  2. Нужно несколько типов слушателей:
    • долговременные
    • агрегационные со смещающимся окном
    • подумать о возможности динамического размера окна
  3. Стратегии сохранения
    • хранятся только данные уже рассчитанные
    • cохранение данных в телегу
    • clickhouse
  4. Система собираемых бордов с данными для Graphana и TG интеграции

Анализ динамического состояния узла

  1. Анализ общего числа сообщений поступающих на бэкенд
    • mqtt
    • gql
    • rest
    • aiogram
  2. Трекер занятых ресурсов - cpu, ram
  3. Оставшееся место
  4. Аптайм
  5. Трекер ошибок, какие возникают чаще, а какие реже
  6. Трекер алерт крашей, с дросселированием - в телегу админу, надо запоминать сколько раз возник

Анализ нагрузки

На эти метрики будет опираться монетизация и настройки пользователей

  1. Система отслеживания нагрузки на топики Unit - Расчёт желательно на стороне EMQX
  2. Система отслеживания средней нагрузки на один Unit - Метрика загрузки для repo
  3. Метрикой должен быть MPS - запросы в секунду
  4. Нужна автоматическая отсечка, если Unit превысил лимиты

Монетизация для держателей инстансов

  1. Подключаемая монетизация на основе Telegram и криптовалют
  2. Основана должна быть на нагрузке от Unit, который создаёт юзер
  3. Возможность настройки монетизации для администратора
  4. Агригируещие топики должны быть монетизированы с другой политикой, т.к. они несут накладные расходы на хранение данных

Система грейдов инстансов

  1. Добавить итеративность в проверку нагрузки
  2. Добавить хэш в отчёт, чтобы было сложнее его поменять
  3. Отчёт по нагрузке должен предоставляться по спец запросу load_limit
  4. Число бесплатных MPS
  5. Стоймость MPS всверх бесплатных
  6. Число бесплатных топиков с агрегацией (нужно придумать метрику)
  7. Стоймость за один топик с агрегацией (нужно придумать метрику)
  8. Токен доступа для скрапера генерит Админ инстанса

Федерация

TODO: требуется крепкая проработка

  1. Федеративный хаб Repo, c поиском по Unit на мультиинстансе
  2. Внедрение activity pub
  3. Система взаимодействия между инстансами
  4. Проработать activity pub
  5. Проработать bridge y emqx, до разных инстансов
  6. Белые и чёрные листы доменов для создания repo
  7. Импорт экспорт всех данных учётной записи по запросу Пользователя
  8. Добавить кнопку обновления env от pepeunit, для будущей возможности переноса Unit на другие инстансы
  9. Проработать условия автоматического бана внешних инстансов
  10. Нужен бан топиков от внешних инстансов, по условиям (выдумать условия)

Видео для документации

  1. Нужно видео по развёртыванию Pepeunit
  2. Нужно видео где с 0 на уже развёрнутом инстансе, создаётся готовая система по существующим Repo - от лица Пользователя
  3. Нужно видео где с 0 на уже развёрнутом инстансе, разработчик Unit последовательно создёт новый Unit с 0 - от лица разработчика Unit