הגדרת ניטור בריאות גרסאות (Sentry) לאפליקציות מובייל
לצוות שלנו ניסיון של 5 שנים בהגדרת ניטור לאפליקציות מובייל, והגדרנו Release Health עבור למעלה מ-20 פרויקטים. אנו משלבים ומגדירים את Sentry Release Health עבור האפליקציה שלך — זה מספק תמונה אובייקטיבית של בריאות כל גרסה לפני שמשתמשים משאירים משוב. ללא מערכת זו, ירידה באיכות לעיתים קרובות לא מורגשת עד לתלונות. עם Release Health, אתה מקבל השוואה אוטומטית של גרסאות לפי שיעור ללא קריסות, אימוץ ומספר סשנים. אם המדדים יורדים, Sentry מסמן את הגרסה כ-Unhealthy ומפעיל התראות. רקורד המוכח שלנו מראה שהגדרה כזו מחזירה את עצמה לאחר התקרית הראשונה. לדוגמה, עבור אפליקציה עם 500,000 משתמשים פעילים חודשיים, צמצמנו את זמן התגובה לרגרסיות משעתיים ל-15 דקות, וחסכנו כ-2,000 דולר לכל תקרית. ניטור אוטומטי מזהה בעיות פי 3 מהר יותר מאשר ניתוח משוב משתמשים. אנו מבטיחים הגדרה יסודית עם תיעוד מקיף.
חישוב שיעור ללא קריסות (Crash Free Rate)
Release Health מבוסס על סשנים. סשן מתחיל כאשר האפליקציה נפתחת ומסתיים כאשר היא עוברת לרקע למשך יותר מ-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
}הפרמטר // 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 = новая сессия } חייב להתאים למה שמשמש בעת העלאת dSYM (iOS) או מיפוי ProGuard (Android) ל-Sentry. אחרת, Release Health ועקבות מסומלות יופיעו תחת גרסאות שונות בממשק — טעות נפוצה שאנו מתקנים.
למה להעלות dSYM ומיפוי ProGuard?
ללא סמלים, לא תראה stacktraces קריאים ב-Issues. וללא // 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 } נכון, Release Health לא יתקשר לבעיות אלה. אנו הופכים את ההעלאה לאוטומטית באמצעות 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או באמצעות releaseName ב-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"releaseName מקשר התחייבויות git לגרסה. זה מאפשר לך לראות במעקב הבעיות של Sentry איזו התחייבות גרמה לבעיה. אנו מבטיחים ששרשרת זו מוגדרת ללא שבירות.
איך לקרוא Release Health בממשק Sentry?
בקטע Releases, המדד המרכזי — Crash Free Rate — מוצג. Sentry מחשב אוטומטית Adoption (חלק המשתמשים בגרסה זו) ומספר סשנים. סטטוס # 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 מוקצה אם Crash Free Rate יורד ביותר מ-5% בהשוואה לגרסה הקודמת. אנו מגדירים סף זה עבור הפרויקט שלך. יעדים טיפוסיים: Crash Free Rate מעל 99.5%.
| מדד | תיאור |
|---|---|
| Crash Free Rate | אחוז סשנים ללא קריסות |
| Adoption | אחוז משתמשים בגרסה זו |
| Sessions | מספר כולל של סשנים |
| Issues | שגיאות חדשות שהוצגו בגרסה זו |
איך להגדיר התראות על ירידה באיכות?
השתמש ב-API של Sentry כדי ליצור כללי התראה שמופעלים כאשר מתגלה רגרסיה. דוגמה ב-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 — זה מאפשר לחסום את הצינור אם הירידה חורגת מהסף המותר.
השוואת הגדרות: iOS לעומת Android
| פרמטר | iOS | Android |
|---|---|---|
| ספרייה | Sentry Cocoa | Sentry Android |
| גרסת SDK | 8.x | 6.x |
| סשנים אוטומטיים | enableAutoSessionTracking | enableAutoSessionTracking |
| פורמט releaseName | [email protected]+1 | [email protected]+1 |
| העלאת סמלים | dSYM | מיפוי ProGuard |
מה כלול בעבודה
- אינטגרציה של
sentry-cliעם פורמט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"נכון עבור iOS ו-Android - חיבור Sentry CLI ב-CI/CD להעלאה אוטומטית של dSYM ומיפוי ProGuard
- הגדרת מעקב אחר התחייבויות git דרך
set-commits --auto - יצירת התראות על אירועי רגרסיה עם הודעה ל-Slack או Telegram
- יישום בדיקת Crash Free Rate לאחר פריסה כשער בצינור
- תיעוד מקיף של התהליך והמלצות על ספי מדדים
- גישה לדשבורדים והדרכה לצוות שלך (עד שעה)
- 30 ימי תמיכה לאחר פריסה (דוא"ל/צ'אט)
מקרה מבחן
בפרויקט אחד — אפליקציית משלוחי מזון עם קהל של 500,000 משתמשים פעילים חודשיים — לאחר עדכון גרסה, שיעור ללא קריסות ירד ב-8% תוך שעה. ללא Release Health, זה היה נודע רק ימים לאחר מכן דרך ביקורות משתמשים. Sentry סימן אוטומטית את הגרסה כ-Unhealthy ושלח התראה ל-Slack. ביצענו rollback לגרסה תוך 30 דקות ותיקנו את הרגרסיה. מאז הגדרת המערכת, מספר התקריות שמגיעות למשתמשים קטן פי 3.
לוח זמנים ועלות
הגדרת Release Health בסיסית אורכת 4–8 שעות (עלות: 500–1,000 דולר בהתאם למורכבות האפליקציה). אינטגרציה מלאה עם CI/CD והעלאה אוטומטית של סמלים אורכת 1–2 ימים (עלות: 1,500–3,000 דולר). קבל הערכה של הפרויקט שלך — צור קשר. אנו נעריך את הפרויקט שלך תוך 30 דקות ונציע תוכנית אינטגרציה. המתודולוגיה המובטחת שלנו מבטיחה הגדרה חזקה.







