mikrotik-bot/instructions/plan_system.md

4.0 KiB
Raw Permalink Blame History

Системный план: мониторинг MikroTik через Telegram-бота (fetch + API)

Архитектура и цели

  • Telegram-бот для мониторинга и управления MikroTik (работает в Docker/Portainer, Proxmox, локальная сеть)
  • Два источника событий:
    • fetch-скрипт MikroTik — для мгновенных алертов о новых подключениях
    • API (polling registration-table) — для сбора полной статистики (rx/tx bytes, uptime, отключения)
  • История и статистика хранятся в SQLite (sessions, clients)
  • Управление и просмотр через команды и инлайн-кнопки в Telegram

Ограничения и особенности

  • Всё работает внутри локальной сети (нет проброса портов, Cloudflare Tunnel не нужен)
  • fetch-скрипт может не содержать rx/tx bytes — только алерт о событии
  • API даёт полную картину, но с задержкой (polling)
  • Возможны неучтённые данные (VPN, туннели, смена MAC, перезагрузка роутера)
  • SQLite выбран как оптимальный вариант для домашней/офисной нагрузки

Структура данных (БД)

  • clients (устройства)
    • mac (PK)
    • name (host-name/comment/vendor)
    • custom_name (ручное имя)
    • last_seen
  • sessions (подключения)
    • id (PK)
    • mac (FK)
    • ip
    • start_time
    • end_time
    • rx_bytes
    • tx_bytes
    • source (fetch/api)
    • last_update

Поведение

  • fetch-скрипт: мгновенно пишет событие о новом подключении (если нет активной сессии — создаёт)
  • API: периодически обновляет rx/tx bytes, uptime, фиксирует отключения (закрывает сессию)
  • Если клиент исчез — сессия закрывается, статистика фиксируется
  • Все события и статистика доступны для фильтрации и поиска

Команды и интерфейс

  • /history — история подключений (фильтры: день, неделя, месяц, постраничность)
  • /clients — список устройств (сортировка по last_seen, постраничность)
  • /stats — агрегированная статистика (топ по трафику, активности, постраничность)
  • Инлайн-кнопки для фильтрации, навигации, обновления
  • fetch+API: гибридная обработка событий, антидублирование, запись в SQLite
  • Асинхронная работа, интеграция с aiogram и FastAPI
  • Вся логика реализована для работы в локальной сети
  • Возможность задать кастомное имя устройству через бота
  • (Опционально) Экспорт истории/статистики в CSV/Excel
  • (Опционально) Алерты по подозрительной активности (например, новый MAC, много трафика)

Всё основное реализовано!

Оставшиеся задачи:

  • Возможность задавать кастомные имена устройствам через бота
  • (Опционально) Экспорт истории/статистики
  • (Опционально) Алерты по событиям

Этот документ — эталонный план для всей разработки и поддержки проекта.