Налаштування Release Health (Sentry) для мобільного застосунку
Ми — команда з 5+ років досвіду в моніторингу мобільних застосунків. Налаштували Sentry Release Health для понад 20 проєктів. Інтегруємо та налаштовуємо його для вашого застосунку — це дає об'єктивну картину здоров'я кожного релізу ще до того, як користувачі залишать відгуки. Без цієї системи деградація часто залишається непоміченою до скарг. З Release Health ви отримуєте автоматичне порівняння версій за crash-free rate, adoption та кількістю сесій. Якщо метрики падають — Sentry позначає реліз як Unhealthy і тригерить алерти. Наш досвід показує: таке налаштування окупається за перший же інцидент. Наприклад, для застосунку з 500 000 MAU ми знизили час реакції на регресію з 2 годин до 15 хвилин. Автоматичний моніторинг виявляє проблеми в 3 рази швидше, ніж аналіз відгуків користувачів. Показник crash-free rate у здорових релізах тримається на рівні 99,5%.
Обчислення Crash Free Rate
В основі Release Health лежать сесії. Сесія починається при запуску застосунку і закінчується при переході в background більш ніж на 30 секунд або явному завершенні. Кожна сесія маркується або як crashed, або як ok. Crash Free Rate = (сесії без крешів / загальна кількість сесій) × 100%. Sentry автоматично агрегує ці дані по кожному релізу.Документація 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?
У розділі Releases відображається ключова метрика — Crash Free Rate. Sentry автоматично розраховує Adoption (частка користувачів на цій версії) та кількість сесій. Статус Unhealthy присвоюється, якщо Crash Free Rate впав більш ніж на 5% відносно попереднього релізу. Ми налаштовуємо цей поріг під ваш проєкт.
| Метрика | Опис | Приклад значення |
|---|---|---|
| Crash Free Rate | % сесій без крешів | 99,5% |
| Adoption | % користувачів на цій версії | 85% |
| Sessions | Загальна кількість сесій | 120 000 |
| Issues | Нові помилки, що з'явилися в цій версії | 3 |
Як налаштувати алерти на деградацію?
Використовуйте 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 |
Що входить у нашу роботу
- Крок 1. Інтеграція
enableAutoSessionTrackingз правильним форматомreleaseNameдля iOS та Android - Крок 2. Підключення Sentry CLI в CI/CD для автоматичного завантаження dSYM та ProGuard mapping
- Крок 3. Налаштування git commit tracking через
set-commits - Крок 4. Створення алертів на Regression Event з нотифікацією в Slack або Telegram
- Крок 5. Реалізація post-deploy check Crash Free Rate для gate в pipeline
- Крок 6. Документація по процесу та рекомендації по порогах метрик
Докладніше про автоматичні сесії
Автоматичні сесії в Sentry починаються при запуску застосунку і завершуються після 30 секунд у фоні. Це дозволяє точно вимірювати кількість сеансів та крешів без додаткового коду.
Кейс із практики
На одному з проєктів — застосунку для доставки їжі з аудиторією 500 000 MAU — після оновлення версії crash-free rate впав на 8% за годину. Без Release Health це стало б відомо лише через кілька днів із відгуків. Sentry автоматично позначив реліз як Unhealthy і відправив алерт у Slack. Ми за 30 хвилин відкотили реліз і виправили регресію. З моменту налаштування системи кількість інцидентів, що доходять до користувачів, скоротилася в 3 рази. Використання моніторингу здоров'я релізів у 2 рази точніше визначає проблемні версії, ніж покладання лише на відгуки. Після впровадження щомісячна економія на підтримці становить $2000.
Терміни та вартість
Базове налаштування Release Health займає 4–8 годин. Інтеграція в CI/CD з автозавантаженням символів — 1–2 дні. Вартість починається від $500 для середнього проєкту (20-50 тис. користувачів). Отримайте безкоштовну оцінку вашого проєкту — зв'яжіться з нами. Оцінимо ваш проєкт за 30 хвилин і запропонуємо план інтеграції.







