Sentry собирает необработанные исключения Django-приложения, объединяет их в issue, добавляет контекст (пользователь, запрос, релиз, breadcrumbs) и уведомляет команду. В уроке подключим sentry-sdk и настроим его для продакшена.
Что Sentry добавляет к логам
Строка лога говорит, что что-то сломалось. Sentry даёт по одному issue на каждую уникальную ошибку, число затронутых пользователей, релиз, в котором она появилась, traceback с локальными переменными и уведомление по почте или в Slack. Используйте оба инструмента: логи для истории, Sentry для сигнала тревоги (см. логирование в Django).
Установка и init
pip install "sentry-sdk[django]"Создайте проект в Sentry, скопируйте его DSN и вызовите init в начале settings.py. Интеграция с Django включается автоматически, если Django установлен; если передать её явно, можно задать параметры вроде transaction_style.
# settings.py
import os
import sentry_sdk
from sentry_sdk.integrations.django import DjangoIntegration
sentry_sdk.init(
dsn=os.environ.get('SENTRY_DSN'), # None -> SDK stays off
environment=os.environ.get('SENTRY_ENVIRONMENT', 'development'),
release=os.environ.get('GIT_SHA'),
integrations=[DjangoIntegration(transaction_style='url')],
traces_sample_rate=0.1,
send_default_pii=False,
)Если SENTRY_DSN не задан, SDK остаётся выключенным, и локальная разработка ничего не отправляет. Кроме того, SDK сам читает SENTRY_DSN, SENTRY_ENVIRONMENT и SENTRY_RELEASE из окружения.