62 lines
4.0 KiB
Markdown
62 lines
4.0 KiB
Markdown
# Системный план: мониторинг 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, фиксирует отключения (закрывает сессию)
|
||
- Если клиент исчез — сессия закрывается, статистика фиксируется
|
||
- Все события и статистика доступны для фильтрации и поиска
|
||
|
||
## Команды и интерфейс
|
||
- [x] /history — история подключений (фильтры: день, неделя, месяц, постраничность)
|
||
- [x] /clients — список устройств (сортировка по last_seen, постраничность)
|
||
- [x] /stats — агрегированная статистика (топ по трафику, активности, постраничность)
|
||
- [x] Инлайн-кнопки для фильтрации, навигации, обновления
|
||
- [x] fetch+API: гибридная обработка событий, антидублирование, запись в SQLite
|
||
- [x] Асинхронная работа, интеграция с aiogram и FastAPI
|
||
- [x] Вся логика реализована для работы в локальной сети
|
||
- [ ] Возможность задать кастомное имя устройству через бота
|
||
- [ ] (Опционально) Экспорт истории/статистики в CSV/Excel
|
||
- [ ] (Опционально) Алерты по подозрительной активности (например, новый MAC, много трафика)
|
||
|
||
---
|
||
|
||
**Всё основное реализовано!**
|
||
|
||
**Оставшиеся задачи:**
|
||
- Возможность задавать кастомные имена устройствам через бота
|
||
- (Опционально) Экспорт истории/статистики
|
||
- (Опционально) Алерты по событиям
|
||
|
||
**Этот документ — эталонный план для всей разработки и поддержки проекта.** |