Sentry — это платформа для отслеживания ошибок и мониторинга производительности приложений в реальном времени, предоставляющая разработчикам полный контекст каждого сбоя. По данным Sentry Documentation, 2025, Sentry обрабатывает более 10 миллиардов событий в день, обеспечивая интеграцию с 90+ языками и фреймворками для iOS, Android, веба и бэкенда.
Главное
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 по протоколу JSON/HTTPS.
Relay — это промежуточный сервер, который может быть развёрнут в инфраструктуре компании. Он принимает события от SDK, фильтрует по правилам (PII-данные, лишние события), буферизирует и пересылает в Sentry SaaS или собственный инстанс. Relay обеспечивает низкую задержку отправки — типичное время получения события составляет 500–1500 мс.
Sentry предоставляет встроенные фильтры для отбрасывания нежелательных событий без их отправки на сервер: ошибки из тестовых окружений, ошибки от старых версий приложения, повторяющиеся события с одинаковым fingerprint. Filtering экономит до 70% объёма данных в типичном production-проекте, снижая стоимость потребления и нагрузку на канал связи устройства.
Установка Sentry SDK для мобильных платформ занимает 5–10 минут и требует добавления зависимости и инициализации с DSN-ключом. DSN (Data Source Name) — уникальный идентификатор проекта в Sentry, который указывает, куда отправлять события.
Для Android Sentry предоставляет автоматическую инструментацию через Gradle-плагин. Плагин модифицирует байт-код на этапе компиляции, добавляя обёртки для всех Activity, Fragment и сетевых вызовов. Auto-instrumentation включается одной опцией в build.gradle и позволяет получать breadcrumbs из жизненного цикла приложения, не меняя код.
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 автоматически создаёт сессии для каждого запуска приложения.
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.
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, после чего самые старые записи автоматически удаляются.
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, что позволяет быстро локализовать проблему в платёжном флоу.
Sentry позволяет прикреплять к событиям информацию о пользователе: ID, username, email. User context передаётся автоматически со всеми событиями из одной сессии, позволяя группировать ошибки по пользователям и определять, сколько пользователей затронул конкретный баг. Важно соблюдать политику конфиденциальности и не передавать персональные данные, если это не разрешено политикой приложения.
В 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 пайплайна.
Начиная с версии 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 предоставляет больше контекста: breadcrumbs, кастомные данные, связь ошибок с производительностью. Firebase Crashlytics — бесплатный инструмент с базовым краш-репортингом, но без distributed tracing и без возможности кастомной инструментации breadcrumbs. Sentry подходит для проектов, где нужна глубокая диагностика.
Sentry предлагает бесплатный тариф на 5 000 событий в месяц (ошибки + транзакции). Платный тариф Team стоит 26 долларов за пользователя в месяц и включает 100 000 событий. Для больших проектов доступен Business-тариф с неограниченным объёмом и индивидуальной ценой.
Sentry предоставляет встроенный механизм Data Scrubbing: автоматическое удаление email, IP-адресов, кредитных карт и других PII-данных из событий до их сохранения. Правила скрабинга настраиваются в веб-интерфейсе или в конфигурации Relay с поддержкой регулярных выражений. Рекомендуется включить scrubbing на уровне SDK, чтобы конфиденциальные данные не покидали устройство пользователя.
Да, Sentry имеет полностью open-source само-хостируемую версию. Self-hosted Sentry разворачивается через Docker Compose и включает все функции SaaS-версии. Требуется минимальная конфигурация сервера: 4 vCPU, 16 GB RAM, 100 GB дискового пространства для хранения событий.
Да, Sentry SDK полностью поддерживает SwiftUI (iOS 13+) и Jetpack Compose (Android). Для SwiftUI SDK автоматически создаёт транзакции для NavigationView и List с замером времени рендеринга. Для Jetpack Compose требуется кастомная интеграция через CompositionLocalProvider для передачи контекста Sentry в Composables.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также