Sentry — что это, принципы и сбор ошибок

Автор: IT Sectr Опубликовано: 2026-05-29 Время чтения: 8 мин

Sentry — это платформа для отслеживания ошибок и мониторинга производительности приложений в реальном времени, предоставляющая разработчикам полный контекст каждого сбоя. По данным Sentry Documentation, 2025, Sentry обрабатывает более 10 миллиардов событий в день, обеспечивая интеграцию с 90+ языками и фреймворками для iOS, Android, веба и бэкенда.

Главное

  • Sentry — платформа error tracking и performance monitoring с открытым исходным кодом, поддерживающая 90+ языков и платформ.
  • Error events — автоматический сбор исключений с полным стектрейсом, значениями переменных и состоянием устройства.
  • Breadcrumbs — последовательность пользовательских действий и системных событий, предшествующих ошибке.
  • Source maps — деобфускация минифицированного кода для восстановления читаемого стека вызовов в production.
  • Performance Tracing — мониторинг времени выполнения транзакций с distributed tracing через все сервисы.

Что такое Sentry в разработке

Sentry — это open-source платформа для краш-репортинга и мониторинга производительности, основанная в 2012 году. Она позволяет разработчикам получать уведомления об ошибках в реальном времени с полным диагностическим контекстом: стек вызовов, значения переменных на момент сбоя, последовательность действий пользователя до ошибки и состояние окружения.

В отличие от агрегированных сервисов краш-репортинга (Google Play Console, App Store Connect), которые предоставляют только статистику и базовые графики, Sentry показывает каждое событие отдельно с возможностью группировки по типу ошибки и фильтрации по версии приложения. Issue в Sentry — это группа событий с одинаковым стектрейсом, что позволяет не тонуть в тысячах одинаковых крашей, а сосредоточиться на устранении первопричины с полным контекстом.

По данным Sentry (2025), среднее время обнаружения ошибки сокращается с 30 минут до 30 секунд после внедрения Sentry SDK, а время диагностики — на 60% благодаря automatic breadcrumbs и контексту окружения. Платформа используется более чем 100 000 организаций по всему миру, включая Airbnb, Microsoft, Instagram и PayPal, обрабатывая миллиарды событий ежедневно.

Архитектура Sentry: SDK, Relay и обработка событий

Система Sentry состоит из трёх основных компонентов: SDK на стороне приложения, Relay (прокси-сервер) и бэкенда обработки событий. Sentry SDK — это библиотека, внедряемая в приложение, которая перехватывает исключения, собирает контекст и отправляет события в Relay по протоколу JSON/HTTPS.

Sentry Relay

Relay — это промежуточный сервер, который может быть развёрнут в инфраструктуре компании. Он принимает события от SDK, фильтрует по правилам (PII-данные, лишние события), буферизирует и пересылает в Sentry SaaS или собственный инстанс. Relay обеспечивает низкую задержку отправки — типичное время получения события составляет 500–1500 мс.

Inbound Data Filter

Sentry предоставляет встроенные фильтры для отбрасывания нежелательных событий без их отправки на сервер: ошибки из тестовых окружений, ошибки от старых версий приложения, повторяющиеся события с одинаковым fingerprint. Filtering экономит до 70% объёма данных в типичном production-проекте, снижая стоимость потребления и нагрузку на канал связи устройства.

Настройка Sentry SDK для iOS и Android

Установка Sentry SDK для мобильных платформ занимает 5–10 минут и требует добавления зависимости и инициализации с DSN-ключом. DSN (Data Source Name) — уникальный идентификатор проекта в Sentry, который указывает, куда отправлять события.

Настройка на Android

Для Android Sentry предоставляет автоматическую инструментацию через Gradle-плагин. Плагин модифицирует байт-код на этапе компиляции, добавляя обёртки для всех Activity, Fragment и сетевых вызовов. Auto-instrumentation включается одной опцией в build.gradle и позволяет получать breadcrumbs из жизненного цикла приложения, не меняя код.

kotlin
import io.sentry.Sentry

class App : Application() {
    override fun onCreate() {
        super.onCreate()
        Sentry.init { options ->
            options.dsn = "https://example@sentry.io/project"
            options.tracesSampleRate = 0.2
            options.enableAutoSessionTracking = true
        }
    }
}

Код инициализирует Sentry SDK в Android-приложении. Параметр tracesSampleRate = 0.2 включает performance tracing для 20% сессий, enableAutoSessionTracking автоматически создаёт сессии для каждого запуска приложения.

Настройка на iOS

SDK для iOS поддерживает CocoaPods, Swift Package Manager и Carthage. После установки SDK автоматически перехватывает NSException, сигналы (SIGABRT, SIGSEGV) и ошибки Swift. Sentry Cocoa SDK совместим с iOS 12+ и macOS 10.13+, поддерживает Swift Concurrency (async/await) и автоматическую инструментацию URLSession.

swift
import Sentry

class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        SentrySDK.start { options in
            options.dsn = "https://example@sentry.io/project"
            options.enableAutoPerformanceTracing = true
        }
        return true
    }
}

Код на Swift активирует Sentry SDK с автоматическим сбором метрик производительности. enableAutoPerformanceTracing включает мониторинг времени загрузки экранов и HTTP-запросов без дополнительного кода.

Breadcrumbs — это хронологическая последовательность событий, предшествующих ошибке. Sentry автоматически записывает breadcrumbs для нажатий кнопок, переходов между экранами, HTTP-запросов и системных уведомлений. Разработчик может добавлять кастомные breadcrumbs для бизнес-логики.

Каждый breadcrumb содержит временную метку, тип события (navigation, http, ui, error), категорию и произвольные данные. При возникновении ошибки все breadcrumbs за последние 2–5 минут (настраивается) прикрепляются к событию. Этот контекст часто важнее самого стектрейса: разработчик видит, что пользователь нажал "Оплатить" после выбора товара, и только потом произошёл краш. Максимальное количество breadcrumbs по умолчанию — 200, после чего самые старые записи автоматически удаляются.

kotlin
Sentry.addBreadcrumb(
    Breadcrumb().apply {
        category = "payment"
        message = "User tapped Pay button"
        type = "user"
        level = BreadcrumbLevel.INFO
        data["amount"] = "19.99"
        data["currency"] = "USD"
    }
)

Код добавляет кастомный breadcrumb для действия пользователя в платёжном сценарии. Если после этого действия произойдёт ошибка, разработчик увидит в Sentry, что пользователь нажал "Pay" с суммой 19.99 USD, что позволяет быстро локализовать проблему в платёжном флоу.

User context

Sentry позволяет прикреплять к событиям информацию о пользователе: ID, username, email. User context передаётся автоматически со всеми событиями из одной сессии, позволяя группировать ошибки по пользователям и определять, сколько пользователей затронул конкретный баг. Важно соблюдать политику конфиденциальности и не передавать персональные данные, если это не разрешено политикой приложения.

Source maps и символы отладки

В production-сборках iOS и Android код обычно минифицирован или обфусцирован. Без обработки стек ошибки будет содержать непонятные имена вроде "a.b()" вместо "UserViewModel.fetchData()". Source maps (JavaScript) и debug symbols (dSYM для iOS, ProGuard mapping для Android) восстанавливают читаемый стек.

Для Android Sentry автоматически загружает ProGuard mapping файлы через Gradle-плагин при сборке релизной версии. Для iOS требуется загрузка dSYM файлов — Sentry предоставляет скрипт для автоматической загрузки на этапе архивирования. Без символов отладки стек ошибки в Sentry будет бесполезен для разработчика, поэтому процесс их загрузки должен быть обязательным шагом CI/CD пайплайна.

Мониторинг производительности через Sentry

Начиная с версии 2020, Sentry включает performance monitoring — сбор метрик времени выполнения транзакций с distributed tracing. Transaction в Sentry — это измеряемая единица работы: загрузка экрана, выполнение API-запроса, обработка фоновой задачи. Каждая транзакция содержит дочерние spans, которые показывают, какие именно шаги заняли больше всего времени.

Performance monitoring в Sentry интегрирован с error tracking: если транзакция завершилась ошибкой, соответствующий span помечается статусом "error", и разработчик может перейти от метрики производительности к деталям исключения. Trace ID связывает все события (ошибки, транзакции, breadcrumbs) в единую сессию для сквозного анализа, обеспечивая бесшовный переход между вкладками Issues и Performance в едином дашборде платформы Sentry.

По данным Sentry Performance Benchmark (2024), приложение с включённым performance monitoring (частота выборки 10%) потребляет на 2–5% больше трафика и на 1–2% больше ресурсов CPU на устройстве. Эта нагрузка компенсируется сокращением времени диагностики производительности на 70% по сравнению с ручным профилированием.

Часто задаваемые вопросы

Чем Sentry отличается от Firebase Crashlytics?

Sentry предоставляет больше контекста: breadcrumbs, кастомные данные, связь ошибок с производительностью. Firebase Crashlytics — бесплатный инструмент с базовым краш-репортингом, но без distributed tracing и без возможности кастомной инструментации breadcrumbs. Sentry подходит для проектов, где нужна глубокая диагностика.

Сколько стоит Sentry для мобильного приложения?

Sentry предлагает бесплатный тариф на 5 000 событий в месяц (ошибки + транзакции). Платный тариф Team стоит 26 долларов за пользователя в месяц и включает 100 000 событий. Для больших проектов доступен Business-тариф с неограниченным объёмом и индивидуальной ценой.

Как Sentry обрабатывает персональные данные в ошибках?

Sentry предоставляет встроенный механизм Data Scrubbing: автоматическое удаление email, IP-адресов, кредитных карт и других PII-данных из событий до их сохранения. Правила скрабинга настраиваются в веб-интерфейсе или в конфигурации Relay с поддержкой регулярных выражений. Рекомендуется включить scrubbing на уровне SDK, чтобы конфиденциальные данные не покидали устройство пользователя.

Можно ли запустить Sentry на своих серверах?

Да, Sentry имеет полностью open-source само-хостируемую версию. Self-hosted Sentry разворачивается через Docker Compose и включает все функции SaaS-версии. Требуется минимальная конфигурация сервера: 4 vCPU, 16 GB RAM, 100 GB дискового пространства для хранения событий.

Поддерживает ли Sentry SwiftUI и Jetpack Compose?

Да, Sentry SDK полностью поддерживает SwiftUI (iOS 13+) и Jetpack Compose (Android). Для SwiftUI SDK автоматически создаёт транзакции для NavigationView и List с замером времени рендеринга. Для Jetpack Compose требуется кастомная интеграция через CompositionLocalProvider для передачи контекста Sentry в Composables.

Итоги

  • Sentry — платформа error tracking и performance monitoring с открытым исходным кодом, используемая более чем 100 000 организаций.
  • Архитектура включает SDK на устройстве, Relay-прокси и бэкенд обработки событий с поддержкой self-hosted и SaaS-развёртывания.
  • Breadcrumbs предоставляют хронологию действий пользователя до ошибки, критически важную для диагностики сложных багов.
  • Source maps и dSYM восстанавливают читаемый стек вызовов из обфусцированного production-кода.
  • Performance Tracing интегрирован с error tracking, позволяя переходить от метрик времени к деталям ошибки через единый trace ID.
  • Auto-instrumentation покрывает Activity, ViewController, HTTP-запросы и жизненный цикл приложения без ручного кода.
  • Внедрение Sentry рекомендуется для любого production-приложения: бесплатный тариф покрывает 5 000 событий в месяц, достаточных для небольших и средних проектов.

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также