Skip to content

Releases: krionefishy/monitoring

Monitoring v2.1.0 — p50, p75 and p95

Choose a tag to compare

@krionefishy krionefishy released this 02 Oct 14:05
823b19e

Перцентили времени ответа

  • 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

Choose a tag to compare

@krionefishy krionefishy released this 01 Oct 21:50
9347a0e

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

Choose a tag to compare

@krionefishy krionefishy released this 27 May 09:45

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

Choose a tag to compare

@krionefishy krionefishy released this 25 May 21:31

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

Choose a tag to compare

@krionefishy krionefishy released this 25 May 20:51

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)