Sentry هي منصة لتتبع الأخطاء ومراقبة أداء التطبيقات في الوقت الفعلي، توفر للمطورين السياق الكامل لكل عطل. وفقًا لـ Sentry Documentation, 2025، يعالج Sentry أكثر من 10 مليار حدث يوميًا، مع توفير التكامل مع أكثر من 90 لغة وإطار عمل لأنظمة iOS و Android والويب والخلفية.
الملخص
Sentry هي منصة مفتوحة المصدر للإبلاغ عن الأعطال ومراقبة الأداء، تأسست في عام 2012. تتيح للمطورين تلقي إخطارات بالأخطاء في الوقت الفعلي مع سياق تشخيصي كامل: مكدس الاستدعاءات، قيم المتغيرات عند لحظة العطل، تسلسل إجراءات المستخدم قبل الخطأ وحالة البيئة.
على عكس خدمات الإبلاغ عن الأعطال المجمعة (Google Play Console, App Store Connect)، التي توفر فقط إحصائيات ورسوم بيانية أساسية، يعرض Sentry كل حدث على حدة مع إمكانية التجميع حسب نوع الخطأ والتصفية حسب إصدار التطبيق. Issue في Sentry هي مجموعة من الأحداث بنفس مكدس الاستدعاءات، مما يسمح بعدم الغرق في آلاف الأعطال المتطابقة بل التركيز على إصلاح السبب الجذري مع السياق الكامل.
وفقًا لـ Sentry (2025)، ينخفض متوسط وقت اكتشاف الخطأ من 30 دقيقة إلى 30 ثانية بعد تطبيق Sentry SDK، وينخفض وقت التشخيص بنسبة 60% بفضل breadcrumbs التلقائية وسياق البيئة. تستخدم المنصة أكثر من 100,000 مؤسسة حول العالم، بما في ذلك Airbnb و Microsoft و Instagram و PayPal، وتعالج مليارات الأحداث يوميًا.
يتكون نظام Sentry من ثلاثة مكونات رئيسية: SDK في جانب التطبيق، و Relay (خادم وكيل)، وخلفية معالجة الأحداث. Sentry SDK هي مكتبة تُدمج في التطبيق وتقوم باعتراض الاستثناءات وجمع السياق وإرسال الأحداث إلى Relay عبر بروتوكول JSON/HTTPS.
Relay هو خادم وسيط يمكن نشره في البنية التحتية للشركة. يستقبل الأحداث من SDK، ويصفيتها وفقًا للقواعد (بيانات PII، الأحداث غير الضرورية)، ويخزنها مؤقتًا ويعيد توجيهها إلى Sentry SaaS أو مثيل خاص. يضمن Relay زمن وصول منخفض — وقت استقبال الحدث النموذجي هو 500–1500 مللي ثانية.
يوفر Sentry مرشحات مدمجة لتجاهل الأحداث غير المرغوب فيها قبل إرسالها إلى الخادم: الأخطاء من بيئات الاختبار، الأخطاء من الإصدارات القديمة للتطبيق، الأحداث المكررة بنفس البصمة. Filtering يوفر ما يصل إلى 70% من حجم البيانات في مشروع إنتاج نموذجي، مما يقلل تكاليف الاستهلاك وعبء قناة اتصال الجهاز.
يستغرق تثبيت Sentry SDK للمنصات المحمولة من 5 إلى 10 دقائق ويتطلب إضافة تبعية وتهيئة بمفتاح DSN. DSN (Data Source Name) هو معرف فريد للمشروع في Sentry يحدد إلى أين يتم إرسال الأحداث.
بالنسبة لـ Android، يوفر Sentry أتمتة الأدوات من خلال إضافة Gradle. تقوم الإضافة بتعديل bytecode في مرحلة التجميع، مضيفة أغلفة لجميع Activities و Fragments واستدعاءات الشبكة. 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 يفعل تتبع الأداء لـ 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 أن المستخدم نقر على “دفع” بمبلغ 19.99 USD، مما يسمح بتحديد موقع المشكلة بسرعة في تدفق الدفع.
يسمح Sentry بإرفاق معلومات المستخدم بالأحداث: المعرف واسم المستخدم والبريد الإلكتروني. User context يتم إرساله تلقائيًا مع جميع الأحداث من نفس الجلسة، مما يسمح بتجميع الأخطاء حسب المستخدمين وتحديد عدد المستخدمين المتأثرين بخطأ معين. من المهم اتباع سياسة الخصوصية وعدم إرسال البيانات الشخصية إذا كانت سياسة التطبيق لا تسمح بذلك.
في إصدارات الإنتاج لنظامي 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 مراقبة الأداء — جمع مقاييس زمن تنفيذ المعاملات مع التتبع الموزع. Transaction في Sentry هي وحدة عمل قابلة للقياس: تحميل شاشة، تنفيذ طلب API، معالجة مهمة خلفية. تحتوي كل معاملة على spans فرعية توضح أي الخطوات المحددة استغرقت أطول وقت.
مراقبة الأداء في Sentry متكاملة مع تتبع الأخطاء: إذا انتهت المعاملة بخطأ، يتم وضع علامة على الـ span المقابل بحالة “error”، ويمكن للمطور الانتقال من مقاييس الأداء إلى تفاصيل الاستثناء. Trace ID يربط جميع الأحداث (الأخطاء، المعاملات، breadcrumbs) في جلسة واحدة للتحليل الشامل، مما يوفر انتقالًا سلسًا بين علامتي التبويب Issues و Performance في لوحة تحكم واحدة لـ Sentry.
وفقًا لـ Sentry Performance Benchmark (2024)، يستهلك التطبيق الذي يعمل بمراقبة الأداء (بنسبة عينات 10%) ما بين 2–5% أكثر من حركة المرور و1–2% أكثر من موارد وحدة المعالجة المركزية على الجهاز. يتم تعويض هذا العبء بتقليل وقت تشخيص الأداء بنسبة 70% مقارنة بالتنميط اليدوي.
الأسئلة الشائعة
Sentry يوفر سياقًا أكثر: breadcrumbs وبيانات مخصصة وربط الأخطاء بالأداء. Firebase Crashlytics هي أداة مجانية مع إبلاغ أساسي عن الأعطال ولكن بدون تتبع موزع وبدون إمكانية أتمتة breadcrumbs مخصصة. Sentry مناسب للمشاريع التي تحتاج إلى تشخيص عميق.
يقدم Sentry خطة مجانية بسعة 5,000 حدث شهريًا (أخطاء + معاملات). الخطة المدفوعة Team تكلف 26 دولارًا لكل مستخدم شهريًا وتتضمن 100,000 حدث. للمشاريع الكبيرة، تتوفر خطة Business بحجم غير محدود وسعر مخصص.
يوفر Sentry آلية مدمجة لـ Data Scrubbing: إزالة تلقائية للبريد الإلكتروني وعناوين IP وبطاقات الائتمان وبيانات PII الأخرى من الأحداث قبل تخزينها. يتم تكوين قواعد التنظيف في الواجهة الإلكترونية أو في إعدادات Relay مع دعم التعبيرات العادية. يُوصى بتفعيل التنظيف على مستوى SDK لضمان عدم مغادرة البيانات السرية لجهاز المستخدم.
نعم، لدى Sentry إصدار مستضاف ذاتيًا مفتوح المصدر بالكامل. 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. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا