Repository navigation
Monitoring v2.0.0
Monitoring v2
Новая self-hosted версия мониторинга: отдельный экземпляр на сервере каждого приложения, веб-интерфейс на собственном поддомене и локальные аккаунты. Источник HTTP-статистики — JSON access log nginx; обязательного SDK нет.
Что изменилось
- Dashboards: количество запросов, RPM, точные коды HTTP на общем графике ручки, доли ответов, приближённые p50/p95/p99. Фильтры по сервису, группе маршрутов и ручке; явные правила нормализации динамических URL.
- Incidents: накопление всех наблюдаемых 4xx/5xx по ручке и HTTP-коду, время первого/последнего случая и request_id для поиска в логах. Управление жизненным статусом убрано из интерфейса.
- Services status: активные health-проверки каждые 30 секунд, проверка кода и опционального JSON, общий deadline 3 секунды, независимое сохранение результатов.
- DB monitoring: раздел обозначен как будущая возможность; сбор метрик БД ещё не реализован.
- Автообновление интерфейса всегда включено. Telegram-уведомления из нового runtime удалены.
- Login-only модель: пользователи создаются CLI, пароли Argon2, локальные сессии, Secure/HttpOnly cookies, CSRF и ограничение попыток входа.
- Durable collector с курсором и SQLite spool, идемпотентная запись в PostgreSQL, outbox, отдельная логическая read-модель с публикацией каждые 5 минут и Redis-кешем на 30 секунд. Это не физическая репликация PostgreSQL.
- Догоняющее чтение накопленного лога и отображение backlog, восстановление read-модели, Docker Compose для direct nginx и API Gateway, CI для backend/frontend и полного запуска Compose.
Несовместимые изменения и установка
- Это новая поставка с PostgreSQL primary/read-db и Redis. История старой SQLite и Telegram-настройки автоматически не мигрируют. Сохраните старую установку и данные до приёмки v2.
- Старый SDK endpoint
/api/errorsвозвращает 410 Gone. Новый runtime не требует SDK и не знает traceback из nginx-лога. - Используйте конфигурацию в
monitor-service/deploy:docker-compose.yaml,.env.example, профилиapplication.direct.json/application.gateway.jsonи nginx snippets. - Задайте уникальные project/instance ID и секреты, JSON log с совпадающими application/environment, права на лог, health URLs, HTTPS origin и поддомен. Аккаунт создаётся через
python -m app.v2.cli create-user <username>в контейнере api. MONITOR_TRUSTED_PROXIESобязателен: это IP/CIDR nginx перед веб-интерфейсом, каким его видит API-контейнер, а не IP приложения или устройств пользователя. Не включайте доверие всем адресам. Bootstrap и подсказка определения gateway приведены в.env.example.- Корневые README/RELEASE пока описывают прежнюю SDK/Telegram-поставку. Актуальная подробная инструкция интеграции передана владельцу отдельно; в репозиторий планы и отчёты не добавлялись.
- Готовый Docker image в registry этим релизом не публикуется; образ собирается из исходников данного тега.
Проверки и ограничения
Локально прошли 20 backend-тестов, 2 frontend-теста, Ruff, TypeScript/Vite production build и smoke-тест чистого Compose с реальными PostgreSQL и Redis. Проверены сбор → запись → публикация, точные коды и инциденты, изоляция аккаунтов установок, восстановление, доверенные proxy, backlog и health deadline.
Nginx на входе показывает итоговые HTTP-ответы; внутренние вызовы микросервисов и причины исключений требуют отдельного анализа логов. Полноценный длительный нагрузочный тест на сервере конкретного приложения и проверка восстановления его production backup остаются задачами приёмки. Лимит входа составляет 10 попыток за 5 минут по логину и IP; устройства за одним NAT делят IP-лимит.
Все три задания GitHub Actions прошли также на итоговом merge-коммите 9347a0eea83eebde0c43507fcdb172d1bfcd7a1c: CI. Изменения слиты через PR #1.