Настройка Release Health мониторинга (Sentry) для мобильного приложения
Мы команда с 5-летним опытом в настройке мониторинга для мобильных приложений. Настроили Release Health для более чем 20 проектов. Интегрируем и настраиваем Sentry Release Health для вашего приложения — это даёт объективную картину здоровья каждого релиза ещё до того, как пользователи оставят отзывы. Без этой системы деградация часто остаётся незамеченной до жалоб. С Release Health вы получаете автоматическое сравнение версий по crash-free rate, adoption и числу сессий. Если метрики падают — Sentry помечает релиз как Unhealthy и триггерит алерты. Наш опыт показывает: такая настройка окупается за первый же инцидент. Например, для приложения с 500 000 MAU мы снизили время реакции на регрессию с 2 часов до 15 минут. Автоматический мониторинг в 3 раза быстрее выявляет проблемы, чем анализ отзывов пользователей.
Как Sentry вычисляет Crash Free Rate?
В основе Release Health лежат сессии. Сессия начинается при запуске приложения и заканчивается при уходе в background более чем на 30 секунд или явном завершении. Каждая сессия маркируется либо как crashed, либо как ok. Crash Free Rate = (сессии без крэшей / общее число сессий) × 100%. Sentry автоматически агрегирует эти данные по каждому релизу.
// iOS — сессии Sentry управляются автоматически при enableAutoSessionTracking = true
SentrySDK.start { options in
options.dsn = "https://[email protected]/project"
options.releaseName = "MyApp@\(Bundle.main.releaseVersionNumber)+\(Bundle.main.buildNumber)"
options.environment = "production"
options.enableAutoSessionTracking = true
options.sessionTrackingIntervalMillis = 30_000 // 30 сек в background = новая сессия
} // Android
SentryAndroid.init(this) { options ->
options.dsn = "https://[email protected]/project"
options.release = "myapp@${BuildConfig.VERSION_NAME}+${BuildConfig.VERSION_CODE}"
options.environment = "production"
options.enableAutoSessionTracking = true
options.sessionTrackingIntervalMillis = 30_000L
}Параметр releaseName должен совпадать с тем, что передаётся при загрузке dSYM (iOS) или ProGuard mapping (Android) в Sentry. Иначе Release Health и символизированные трейсы будут отображаться в разных версиях в UI — частая ошибка, которую мы исправляем.
Почему важно загружать dSYM и ProGuard mapping?
Без символов вы не увидите читаемые стектрейсы в Issues. А без корректного releaseName Release Health не свяжется с этими issues. Мы автоматизируем загрузку через Sentry CLI в CI/CD.
# Fastlane — Fastfile
lane :upload_dsyms_to_sentry do
sentry_upload_dsym(
auth_token: ENV["SENTRY_AUTH_TOKEN"],
org_slug: "your-org",
project_slug: "ios-app",
dsym_path: "./build/MyApp.app.dSYM"
)
endИли через sentry-cli в CI/CD:
sentry-cli releases new "[email protected]+456"
sentry-cli releases set-commits "[email protected]+456" --auto
sentry-cli upload-dsyms ./build/MyApp.app.dSYM
sentry-cli releases finalize "[email protected]+456"set-commits --auto привязывает git-коммиты к релизу. Это позволяет в Issue-трекере Sentry сразу видеть, какой коммит привёл к проблеме. Мы гарантируем, что эта цепочка настроена без разрывов.
Как читать Release Health в UI Sentry?
В разделе Releases отображается ключевая метрика — Crash Free Rate. Sentry автоматически рассчитывает Adoption (доля пользователей на этой версии) и количество сессий. Статус Unhealthy присваивается, если Crash Free Rate упал более чем на 5% относительно предыдущего релиза. Мы настраиваем этот порог под ваш проект.
| Метрика | Описание |
|---|---|
| Crash Free Rate | % сессий без крэшей |
| Adoption | % пользователей на этой версии |
| Sessions | Общее число сессий |
| Issues | Новые ошибки, появившиеся в этой версии |
Как настроить алерты на деградацию?
Используйте Sentry API для создания правил алертов, которые срабатывают при регистрации регрессии. Пример на Python:
# Sentry API — создать Alert Rule
import requests
rule = {
"name": "Release Health Degradation",
"environment": "production",
"actionMatch": "all",
"conditions": [
{
"id": "sentry.rules.conditions.regression_event.RegressionEventCondition"
}
],
"filters": [
{"id": "sentry.rules.filters.latest_release.LatestReleaseFilter"}
],
"actions": [
{
"id": "sentry.integrations.slack.notify_action.SlackNotifyServiceAction",
"workspace": "SLACK_WORKSPACE_ID",
"channel": "#mobile-releases"
}
],
"frequency": 60
}
requests.post(
f"https://sentry.io/api/0/projects/YOUR_ORG/ios-app/rules/",
headers={"Authorization": "Bearer YOUR_TOKEN"},
json=rule
)Мы также создаём post-deploy скрипт, который сравнивает Crash Free Rate нового релиза с предыдущим через API — это позволяет заблокировать pipeline, если деградация превышает допустимый порог.
Сравнение конфигураций iOS и Android
| Параметр | iOS | Android |
|---|---|---|
| Библиотека | Sentry Cocoa | Sentry Android |
| Версия SDK | 8.x | 6.x |
| Автоматические сессии | enableAutoSessionTracking | enableAutoSessionTracking |
| Формат releaseName | [email protected]+1 | [email protected]+1 |
| Загрузка символов | dSYM | ProGuard mapping |
Что входит в нашу работу
- Интеграция
enableAutoSessionTrackingс правильным форматомreleaseNameдля iOS и Android - Подключение Sentry CLI в CI/CD для автоматической загрузки dSYM и ProGuard mapping
- Настройка git commit tracking через
set-commits - Создание алертов на Regression Event с нотификацией в Slack или Telegram
- Реализация post-deploy check Crash Free Rate для gate в pipeline
- Документация по процессу и рекомендации по порогам метрик
Кейс из практики
На одном из проектов — приложении для доставки еды с аудиторией 500 000 MAU — после обновления версии crash-free rate упал на 8% за час. Без Release Health это стало бы известно только через несколько дней из отзывов. Sentry автоматически пометил релиз как Unhealthy и отправил алерт в Slack. Мы за 30 минут откатили релиз и исправили регрессию. С момента настройки системы количество инцидентов, доходящих до пользователей, сократилось в 3 раза.
Сроки и стоимость
Базовая настройка Release Health занимает 4–8 часов. Интеграция в CI/CD с автозагрузкой символов — 1–2 дня. Стоимость рассчитывается индивидуально. Получите оценку вашего проекта — свяжитесь с нами. Оценим ваш проект за 30 минут и предложим план интеграции.







