Настройка Release Health мониторинга (Sentry) для мобильного приложения

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Настройка Release Health мониторинга (Sentry) для мобильного приложения
Средняя
от 4 часов до 2 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

Настройка Release Health мониторинга (Sentry) для мобильного приложения

Release Health в Sentry — это не просто счётчик крэшей для версии. Это автоматическое сравнение каждого нового релиза с предыдущим: adoption rate, crash-free rate, error rate в динамике. Если выкатить версию с регрессией — Sentry пометит её как Unhealthy до того, как это заметят пользователи в отзывах.

Как работает Session Tracking

Sentry строит Release Health на основе сессий — не событий. Сессия начинается при запуске приложения и заканчивается при переходе в background (> 30 секунд) или явном завершении.

// 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/ProGuard mapping в Sentry — иначе Release Health и символизированные трейсы будут в разных "версиях" в UI.

Автоматизация через Sentry CLI

dSYM файлы для iOS нужно загружать в Sentry при каждом релизе. В 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 commits к релизу — в Issue-трекере Sentry будет видно, какой коммит привёл к проблеме.

Чтение Release Health в UI

В Sentry → Releases каждая версия показывает:

Метрика Описание
Crash Free Rate % сессий без крэшей
Adoption % пользователей на этой версии от всех
Sessions Общее число сессий
Issues Новые ошибки, впервые появившиеся в этой версии

Статус Unhealthy устанавливается автоматически, если Crash Free Rate упал более чем на 5% по сравнению с предыдущим релизом.

Алерты на деградацию

# 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
)

Сравнение двух релизов через API

Полезно для post-release анализа в автоматических pipelines:

import requests

def get_release_crash_free_rate(release: str) -> float:
    resp = requests.get(
        "https://sentry.io/api/0/organizations/YOUR_ORG/sessions/",
        headers={"Authorization": "Bearer YOUR_TOKEN"},
        params={
            "field": ["crash_free_rate(session)"],
            "groupBy": "release",
            "query": f"release:{release}",
            "statsPeriod": "7d",
            "interval": "1d",
            "project": ["PROJECT_ID"]
        }
    )
    groups = resp.json().get("groups", [])
    if groups:
        return groups[0]["totals"].get("crash_free_rate(session)", 0)
    return 0.0

current = get_release_crash_free_rate("[email protected]+456")
previous = get_release_crash_free_rate("[email protected]+455")
print(f"Delta: {current - previous:.2f}%")

Что делаем

  • Настраиваем enableAutoSessionTracking с правильным форматом releaseName
  • Интегрируем Sentry CLI в CI/CD для автозагрузки dSYM (iOS) и ProGuard mapping (Android)
  • Конфигурируем git commit tracking через set-commits
  • Настраиваем алерты на Regression Event с нотификацией в Slack
  • Создаём скрипт post-deploy проверки Crash Free Rate для gate в pipeline

Сроки

Базовая настройка Release Health: 4–8 часов. Интеграция в CI/CD с автозагрузкой символов: 1–2 дня. Стоимость рассчитывается индивидуально.