/
systemsstrategyy
/
Treker
Обзор
Документация
Войти
/
systemsstrategyy
/
Treker
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
api/core/observability.py
42 строки
2 KB
SystemsStrategy
Initial import
02 июл 2026, 15:15
02 июл 2026, 15:15
9624ed1
Код
Авторство
О чём код?
"""Инициализация error-tracking (Sentry/Bugsink). No-op без DSN. Sentry SDK совместим с Bugsink (self-hosted) и Sentry SaaS — отличается только DSN. Интеграции FastAPI/Starlette/SQLAlchemy/Redis подхватываются автоматически по установленным пакетам, отдельной настройки не требуют. """ from __future__ import annotations import structlog from api import __version__ from api.core.settings import settings log = structlog.get_logger(__name__) def init_sentry() -> None: """Инициализирует Sentry SDK, если задан DSN. Без DSN — no-op. Так dev и тесты не шлют события наружу (DSN пуст по умолчанию), а на проде достаточно задать `APP_SENTRY__DSN` — код не меняется. `send_default_pii=False` — НЕ отправляем ПД пользователей (email, IP, cookies, тело запроса) во внешний сервис: требование 152-ФЗ и аккредитации Минцифры. Трейсбэки и контекст ошибки уходят, ПД — нет. """ dsn = settings.sentry.dsn.get_secret_value() if not dsn: log.info("sentry.disabled", reason="no_dsn") return import sentry_sdk sentry_sdk.init( dsn=dsn, environment=settings.env, release=f"tracker@{__version__}", traces_sample_rate=settings.sentry.traces_sample_rate, send_default_pii=False, ) log.info("sentry.enabled", environment=settings.env)