4.0 KiB
4.0 KiB
Системный план: мониторинг 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, много трафика)
Всё основное реализовано!
Оставшиеся задачи:
- Возможность задавать кастомные имена устройствам через бота
- (Опционально) Экспорт истории/статистики
- (Опционально) Алерты по событиям
Этот документ — эталонный план для всей разработки и поддержки проекта.