67 lines
6.9 KiB
Markdown
67 lines
6.9 KiB
Markdown
# Логи MikroTik
|
|
|
|
Раздел `/logs` использует общую панель выбора серверов, как `/filters` и `/firewall`.
|
|
История хранится в PostgreSQL; live читает уже сохранённые события через SSE.
|
|
|
|
## Включение
|
|
|
|
При следующем запуске backend автоматически применяется миграция `0014_router_logs.sql`.
|
|
В «Сбор данных → Логи MikroTik» администратор включает сбор. По умолчанию он выключен,
|
|
фоновый интервал — 10 секунд, хранение — 14 дней. Настройки требуют `mm:settings:admin`;
|
|
журнал, контекст, статистика и экспорт — `mm:servers:read` (также write/admin этой секции).
|
|
|
|
При открытом live выбранный включённый MikroTik опрашивается раз в 2 секунды.
|
|
Вкладки разделяют опрос; одновременно опрашиваются не более четырёх устройств.
|
|
Целевая задержка при штатной нагрузке — до 5 секунд. Ошибки сети вызывают backoff до минуты.
|
|
«Все серверы», выключенные и удалённые устройства доступны в режиме истории.
|
|
|
|
Коллектор читает только buffer=memory и не меняет правила RouterOS. После очистки,
|
|
перезагрузки или переполнения буфера возможны пропуски. Потеря пересечения снимков
|
|
помечается как возможный разрыв без выдуманного числа пропущенных событий. Время без
|
|
явного часового пояса не интерпретируется как UTC: журнал использует отмеченное время
|
|
получения и сохраняет исходную строку RouterOS.
|
|
|
|
События удаляются пакетами по времени получения. Очистка продолжает работать и при
|
|
выключенном сборщике. Дедупликация хранит SHA-256 отпечатки, а не копии сообщений.
|
|
Удаление устройства не удаляет его историю; повторно открыть её можно по ссылке
|
|
`/logs?server=<id>` или через общий журнал. Новые таблицы входят в полный `pg_dump`.
|
|
Планировщик и фоновые задачи ожидаются, а SSE закрываются перед обслуживанием БД.
|
|
Перед закрытием поток получает `reset`: интерфейс предлагает заново загрузить историю
|
|
после обслуживания, чтобы не продолжать старый курсор поверх восстановленной БД.
|
|
|
|
## Интерфейс и ReUI PRO
|
|
|
|
Сохранены компоненты и стиль проекта base-nova. Исходники блоков получены из
|
|
лицензионного реестра ReUI и адаптированы под RouterOS; демонстрационные данные,
|
|
изменения инфраструктуры и workflow review из блоков не используются.
|
|
|
|
- Основа таблицы, toolbar и графика: [Infra Audit Log](https://reui.io/blocks/solutions/dev-ops/solution-dev-ops-2), [превью](https://reui.io/preview/base/solution-dev-ops-2).
|
|
- Панель записи, исходные поля и контекст: [Audit Event Detail](https://reui.io/blocks/application/sheet/sheet-14), [превью](https://reui.io/preview/base/sheet-14).
|
|
- [Data Grid API](https://reui.io/docs/components/base/data-grid), [превью](https://reui.io/components/data-grid).
|
|
- [Filters API](https://reui.io/docs/components/base/filters), [превью](https://reui.io/components/filters).
|
|
- [Frame API](https://reui.io/docs/components/base/frame), [превью](https://reui.io/components/frame).
|
|
- [Badge API](https://reui.io/docs/components/base/badge), [превью](https://reui.io/components/badge).
|
|
|
|
Фильтры между полями соединяются AND, значения уровня/topics — OR. Поиск сообщения
|
|
регистронезависимый, буквальный. «Ошибки входа» — явно обозначенный текстовый шаблон.
|
|
Представления хранятся локально с привязкой к пользователю и backend. Экспорт CSV/JSON
|
|
применяет те же фильтры; выборки свыше 50 000 записей отклоняются с предложением сузить
|
|
период. Формулы spreadsheet в CSV нейтрализуются.
|
|
|
|
При прокрутке и открытии записи обновление видимой таблицы приостанавливается, но
|
|
сбор продолжается. Буфер отображения ограничен 5 000 строками; более ранние записи
|
|
доступны через период/экспорт. Смена сервера/источника/фильтров отменяет старые запросы.
|
|
|
|
## Проверки
|
|
|
|
- `npm --prefix backend run build` — contracts и backend.
|
|
- `npm --prefix backend run test:logs` — дедупликация, нормализация, фильтры, CSV, JWT/RBAC и REST-совместимость терминала.
|
|
- `npm --prefix backend run test:logs:pg` — интеграция с PostgreSQL и локальным HTTP-стендом RouterOS; используется отдельная случайная схема, которая удаляется после проверки.
|
|
- Для нагрузочной SQL-проверки установить `LOGS_PERFORMANCE=1` перед `test:logs:pg`: миллион событий, курсорная история и агрегация.
|
|
- `npm run test:logs` — Playwright: выбор серверов, детали, URL/поиск, экспорт, live-пауза, устаревшие ответы, 5 000 строк, mobile/desktop, светлая/тёмная темы.
|
|
|
|
Браузерный профиль использует Webpack и отдельный каталог `tmp/next-logs-test`, чтобы
|
|
не конфликтовать с кэшем запущенного dev-сервера. SQL-профиль требует доступного
|
|
`DATABASE_URL` и права создать временную схему; при недоступной БД завершится ошибкой,
|
|
а не выдаст пропуск за успешную проверку.
|