// Engineering Log
Мониторинг: Часть 6 — Ошибки приложения: Sentry и GlitchTip
Опубликовано 22.09.2026
// Быстрый маршрут
Эта статья относится к теме Деплой и стабильная работа.
Метрики сервера и журналы показывают не всё. Если ошибка случилась в браузере пользователя или в редкой ветке кода, сервер может ничего не записать, а пользователь просто закроет страницу. Для таких случаев существуют системы отслеживания ошибок приложения: они получают исключение прямо из кода вместе со стеком вызовов, версией релиза и контекстом запроса и собирают одинаковые ошибки в одну задачу.
Самая известная из них — Sentry. Её открытая альтернатива, совместимая с теми же клиентскими библиотеками, — GlitchTip.
Что даёт система отслеживания ошибок
- Стек вызовов с точным местом в коде, в том числе для минифицированного JavaScript, если загружены source maps.
- Группировку. Тысяча одинаковых исключений — одна задача со счётчиком, а не тысяча писем.
- Контекст: браузер, операционная система, версия релиза, адрес страницы, последовательность событий перед сбоем (breadcrumbs).
- Привязку к релизам: видно, в какой версии ошибка появилась и исправлена ли она в следующей.
- Оповещения о новых ошибках и о резком росте старых.
Это не замена метрикам и журналам: Prometheus или Zabbix ответят, жив ли сервер и хватает ли ресурсов, а Sentry — что именно сломалось в коде. Обзор метрик и оповещений — в первой части цикла.
Sentry: облако или свой сервер
Облачный Sentry (sentry.io). На сентябрь 2026 года бесплатный тариф Developer рассчитан на одного пользователя и включает 5 000 ошибок и 5 млн спанов трассировки в месяц. Тариф Team для команды стоит от $26 в месяц при оплате за год. Оплатить зарубежный сервис российской картой нельзя: Visa и Mastercard не работают за пределами России с марта 2022 года.
Sentry на своём сервере. Исходный код Sentry распространяется под лицензией FSL-1.1-Apache-2.0 (Functional Source License). Использовать и изменять его для своих задач можно, запрещено строить на нём конкурирующий сервис; через два года после выпуска каждая версия автоматически переходит под Apache 2.0. Это не открытая лицензия в строгом смысле, но для внутреннего использования ограничений практически нет.
Готовая сборка для своего сервера — репозиторий getsentry/self-hosted. Требования по документации: 4 ядра, 16 ГБ памяти плюс 16 ГБ подкачки (рекомендуется 32 ГБ), от 20 ГБ на диске, Docker и Docker Compose свежих версий. Внутри работают несколько баз данных и брокер сообщений, поэтому важна скорость диска. Для небольшого проекта это тяжело.
GlitchTip: лёгкая открытая альтернатива
GlitchTip — открытая система отслеживания ошибок под лицензией MIT. Она принимает события от клиентских библиотек Sentry, поэтому в коде меняется только адрес DSN. У GlitchTip есть облачная версия с бесплатным тарифом до 1 000 событий в месяц, но главное её преимущество — простота размещения на своём сервере: несколько контейнеров (веб-приложение, фоновые задачи, PostgreSQL, Redis) вместо десятков.
Возможностей у GlitchTip меньше: нет части инструментов анализа производительности и воспроизведения сессий, которые есть в Sentry. Для задачи «узнавать об ошибках и видеть стек вызовов» этого обычно достаточно.
| Sentry (облако) | Sentry (свой сервер) | GlitchTip | |
|---|---|---|---|
| Лицензия | — | FSL-1.1-Apache-2.0 | MIT |
| Где данные | у Sentry | у вас | у вас или в облаке GlitchTip |
| Ресурсы сервера | не нужны | от 16 ГБ памяти | несколько гигабайт |
| Совместимость с SDK Sentry | да | да | да |
Подключение SDK
Порядок одинаков для Sentry и GlitchTip: создайте проект, скопируйте DSN — адрес, по которому библиотека отправляет события, — и инициализируйте SDK как можно раньше при запуске приложения.
JavaScript в браузере. Трассировка входит в основной пакет, отдельный @sentry/tracing больше не нужен:
npm install @sentry/browser --saveimport * as Sentry from "@sentry/browser";
Sentry.init({
dsn: "https://<key>@o<orgId>.ingest.sentry.io/<projectId>",
release: "my-app@1.4.2",
integrations: [Sentry.browserTracingIntegration()],
tracesSampleRate: 0.1,
});Python (Django, Flask, FastAPI подключаются автоматически, если установлены):
pip install sentry-sdkimport sentry_sdk
sentry_sdk.init(
dsn="https://<key>@o<orgId>.ingest.sentry.io/<projectId>",
release="my-app@1.4.2",
traces_sample_rate=0.1,
)Значение tracesSampleRate: 1.0 из примеров документации означает запись каждого запроса. Для рабочей нагрузки обычно хватает 5–10 %, иначе квота трассировки заканчивается за несколько дней.
Проверить подключение просто: вызовите в коде тестовое исключение и убедитесь, что событие появилось в интерфейсе.
Source maps и релизы
Код фронтенда в продакшене минифицирован, и без source maps стек вызовов указывает на строку 1 файла main.8f3a.js. Самый простой способ настроить загрузку source maps — мастер:
npx @sentry/wizard@latest -i sourcemapsОн добавит в сборку загрузку карт через Sentry CLI. Связь карт с файлами строится по отладочным идентификаторам (Debug IDs), поэтому менять собранные файлы вручную не нужно. Номер релиза в release должен совпадать с тем, что знает сборка, — тогда в интерфейсе видно, в какой версии появилась ошибка. Загрузку карт и создание релиза разумно делать в пайплайне CI, а не с рабочей машины.
Оповещения
Оповещение о каждой ошибке быстро превращается в шум. Практичный набор правил:
- о новой ошибке, которой раньше не было;
- о резком росте частоты известной ошибки;
- о регрессии — ошибке, отмеченной исправленной и появившейся снова.
Каналы — почта, мессенджеры, веб-хуки. Принципы те же, что для инфраструктурных оповещений: сообщать только о том, что требует действия.
Персональные данные в событиях
Событие об ошибке легко уносит с собой персональные данные: адрес электронной почты в параметрах запроса, IP-адрес, содержимое формы. Для российской компании это вопрос не только безопасности, но и закона: с 1 июля 2025 года первичная запись персональных данных граждан России должна вестись в базы на территории России (подробно — в статье о 152-ФЗ). Отправка событий с такими данными в зарубежное облако противоречит этому требованию.
Что делать:
- не включать отправку персональных данных по умолчанию (
send_default_piiв Python и аналогичную настройку в JavaScript оставить выключенной); - вычищать чувствительные поля до отправки обработчиком
beforeSend/before_send; - включить очистку данных на стороне сервера в настройках проекта;
- если данные в событиях неизбежны — размещать GlitchTip или Sentry на своём сервере в России.
Типичные ошибки
- Выборка трассировки 100 % в продакшене — квота заканчивается, а польза от лишних данных нулевая.
- Нет source maps — стек вызовов фронтенда нечитаем.
- Номер релиза не передаётся — непонятно, исправлена ли ошибка.
- DSN с правами на запись в публичном репозитории серверного кода. DSN фронтенда публичен по определению, но в серверный код его лучше передавать через переменные окружения.
- Оповещение о каждом событии — через неделю их перестают читать.
- Персональные данные уходят в зарубежное облако вместе со стеком вызовов.
// Похожая задача
Если у вас похожая ситуация
Эта статья относится к одной из рабочих тем. Можно продолжить чтение по теме, перейти на главную, чтобы понять, чем я занимаюсь, или сразу открыть услуги.
Тема статьи
Деплой и стабильная работа
Docker, CI/CD, релизы, мониторинг, observability и разбор инцидентов.
Часто с этим приходят
- Настроить деплой без ручных действий и хаоса
- Подключить мониторинг, алерты и базовую observability
- Разобрать инциденты и стабилизировать production
// Следующий шаг
Если вам нужна не только статья, а помощь по этой теме, удобнее сразу перейти в услугу. Главная и подборка материалов остаются рядом.
Открыть услуги// Reviews
Отзывы по теме
Пришел с дорогим запросом по настройке VPS-сервера, но в процессе консультации Михаил предложил гораздо более простое и экономичное решение. В итоге сэкономил бюджет и время. Михаил — настоящий эксперт, который работает на результат клиента, а не на чек. Рекомендую!
Пришел с дорогим запросом по настройке VPS-сервера, но в процессе консультации Михаил предложил гораздо более простое и экономичное решение. В итоге сэкономил бюджет и время. Михаил — настоящий эксперт, который работает …
Настройка vps, настройка сервера
12.05.2026 · ★ 5/5
Отличная работа! Очень быстро настроил сервер, установил панель, прописал IP. Однозначно могу порекомендовать!
Отличная работа ! Очень быстро настроил сервер, установил панель прописал IP Однозначно могу по рекомендовать !
Всё отлично, помог оперативно и профессионально, спасибо, рекомендую сообществу
Всё отлично, помог оперативно и профессионально, спасибо, рекомендую сообществу
Настройка vps, настройка сервера
16.04.2026 · ★ 5/5
Было несколько проблем касаясь как технической части так и понимания в целом. Михаил быстро ответил на запрос, помог разобраться и решил проблеммы технические и помог разобраться в понимании, за что отдельное спасибо. Результатом доволен.
Было несколько проблем касаясь как технической части так и понимания в целом. Михаил быстро ответил на запрос, помог разобраться и решил проблеммы технические и помог разобраться в понимании, за что отдельное спасибо. …
Настройка vps, настройка сервера
18.02.2026 · ★ 5/5
Все было сделано быстро и четко. Рекомендую
Все было сделано быстро и четко. Рекомендую
Настройка vps, настройка сервера
17.01.2026 · ★ 5/5
Всё прошло хорошо, исполнитель быстро реагировал на вопросы и помог решить проблему. Спасибо!
Всё прошло хорошо, исполнитель быстро реагировал на вопросы и помог решить проблему. Спасибо!
Настройка vps, настройка сервера
16.12.2025 · ★ 5/5
// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
Написать в TelegramОтвечаю в течение рабочего дня (03:00–13:00 GMT)
Или оставьте заявку здесь:
// Related