// 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.0MIT
Где данныеу Sentryу васу вас или в облаке GlitchTip
Ресурсы серверане нужныот 16 ГБ памятинесколько гигабайт
Совместимость с SDK Sentryдадада

Подключение SDK

Порядок одинаков для Sentry и GlitchTip: создайте проект, скопируйте DSN — адрес, по которому библиотека отправляет события, — и инициализируйте SDK как можно раньше при запуске приложения.

JavaScript в браузере. Трассировка входит в основной пакет, отдельный @sentry/tracing больше не нужен:

bash
npm install @sentry/browser --save
javascript
import * 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 подключаются автоматически, если установлены):

bash
pip install sentry-sdk
python
import 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 — мастер:

bash
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-сервера, но в процессе консультации Михаил предложил гораздо более простое и экономичное решение. В итоге сэкономил бюджет и время. Михаил — настоящий эксперт, который работает …

kfhzasorin

Настройка vps, настройка сервера

12.05.2026 · ★ 5/5

Отличная работа! Очень быстро настроил сервер, установил панель, прописал IP. Однозначно могу порекомендовать!

Отличная работа ! Очень быстро настроил сервер, установил панель прописал IP Однозначно могу по рекомендовать !

fedinseo

Настройка vps, настройка сервера

19.04.2026 · ★ 5/5

Покупатель профи-эксперт

Было несколько проблем касаясь как технической части так и понимания в целом. Михаил быстро ответил на запрос, помог разобраться и решил проблеммы технические и помог разобраться в понимании, за что отдельное спасибо. Результатом доволен.

Было несколько проблем касаясь как технической части так и понимания в целом. Михаил быстро ответил на запрос, помог разобраться и решил проблеммы технические и помог разобраться в понимании, за что отдельное спасибо. …

abazawolf

Настройка vps, настройка сервера

18.02.2026 · ★ 5/5

// Contact

Нужна помощь?

Свяжись со мной и я помогу решить проблему

Написать в Telegram

Отвечаю в течение рабочего дня (03:00–13:00 GMT)

Или оставьте заявку здесь:

Подтвердите, что вы не бот.

Написать и получить быстрый ответ