Repository navigation
Releases: krionefishy/monitoring
Release list
Monitoring v2.1.0 — p50, p75 and p95
Перцентили времени ответа
- p50, p75 и p95 теперь показаны вместе в общей карточке времени ответа и в таблице каждой ручки.
- API добавляет p75 в общую статистику и p50/p75 в статистику ручек. p99 сохранён в общей статистике.
- Расчёт использует объединённые гистограммы с учётом периода и фильтров, а не усреднение отдельных перцентилей. Значения остаются приближёнными.
- Отсутствие измерений и значения выше 60 секунд отображаются раздельно. Изменён ключ Redis-кеша, чтобы после обновления не возвращалась старая структура ответа.
Обновление с v2.0.0
Миграция БД, изменение nginx-лога и пересборка мониторируемого приложения не требуются. Новые перцентили рассчитываются и по уже накопленной истории.
Получите тег v2.1.0 в checkout мониторинга, сохранив текущие runtime.env, application.json, Compose project name и overrides. Пересоберите образ api и пересоздайте только контейнер api с теми же параметрами Compose (build api, затем up -d --no-deps --force-recreate api). UI входит в этот образ. На время перезапуска API возможен короткий перерыв в доступе к интерфейсу; collector и worker продолжат работу. Обновите страницу браузера после запуска.
Не удаляйте volumes и не меняйте секреты/instance ID. Готовый registry image не публикуется — требуется сборка образа из исходников тега. Команды предполагают штатную структуру Compose; при собственной сборке frontend отдельно обновите и её.
Локально прошли 21 backend-тест, 2 frontend-теста, Ruff, TypeScript/Vite build; интерфейс проверен в браузере. Регрессионные тесты покрывают фильтры, кеш, разные размеры батчей, отсутствие latency и переполнение гистограммы.
CI итогового коммита: backend, frontend и Docker Compose smoke прошли. Изменения слиты через PR #2.
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.
v0.1.2
Release v0.1.2
Changes:
- Run monitor-service container as non-root user
- Add configurable traceback length for Telegram alerts with hard cap at 2048 chars
- Wire traceback limit through settings and notifier
SDK v0.1.1
Patch release focused on alert quality and payload clarity.
Changes:
- Added readable signature source (file:line:function) to SDK payload
- Kept hash signature for stable aggregation
- Improved Telegram alert formatting with proper newlines
- Improved traceback rendering in alert message
- Updated docs to use sdk-v0.1.1 tag examples
SDK v0.1.0
Initial public SDK release.
Changes:
- Packaged SDK as installable Python library (monitor_sdk) with src-layout
- Added exception capture hooks for sync and asyncio flows
- Added robust fire-and-forget ingest transport
- Switched project license to AGPL-3.0-or-later
- Added NOTICE and release/versioning documentation
- Added installation instructions from GitHub subdirectory (sdk)