Sentry — ما هو، مبادئه وجمع الأخطاء

المؤلف: IT Sectr نُشر: 2026-05-29 وقت القراءة: 8 دق

Sentry هي منصة لتتبع الأخطاء ومراقبة أداء التطبيقات في الوقت الفعلي، توفر للمطورين السياق الكامل لكل عطل. وفقًا لـ Sentry Documentation, 2025، يعالج Sentry أكثر من 10 مليار حدث يوميًا، مع توفير التكامل مع أكثر من 90 لغة وإطار عمل لأنظمة iOS و Android والويب والخلفية.

الملخص

  • Sentry هي منصة مفتوحة المصدر لتتبع الأخطاء ومراقبة الأداء تدعم أكثر من 90 لغة ومنصة.
  • Error events — جمع تلقائي للاستثناءات مع تتبع كامل للمكدس وقيم المتغيرات وحالة الجهاز.
  • Breadcrumbs — تسلسل إجراءات المستخدم والأحداث النظامية التي تسبق الخطأ.
  • Source maps — إزالة التعتيم عن الكود المصغر لاستعادة مكدس استدعاءات قابل للقراءة في الإنتاج.
  • Performance Tracing — مراقبة زمن تنفيذ المعاملات مع التتبع الموزع عبر جميع الخدمات.

ما هو Sentry في التطوير

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 (خادم وكيل)، وخلفية معالجة الأحداث. Sentry SDK هي مكتبة تُدمج في التطبيق وتقوم باعتراض الاستثناءات وجمع السياق وإرسال الأحداث إلى Relay عبر بروتوكول JSON/HTTPS.

Sentry Relay

Relay هو خادم وسيط يمكن نشره في البنية التحتية للشركة. يستقبل الأحداث من SDK، ويصفيتها وفقًا للقواعد (بيانات PII، الأحداث غير الضرورية)، ويخزنها مؤقتًا ويعيد توجيهها إلى Sentry SaaS أو مثيل خاص. يضمن Relay زمن وصول منخفض — وقت استقبال الحدث النموذجي هو 500–1500 مللي ثانية.

مرشح البيانات الواردة

يوفر Sentry مرشحات مدمجة لتجاهل الأحداث غير المرغوب فيها قبل إرسالها إلى الخادم: الأخطاء من بيئات الاختبار، الأخطاء من الإصدارات القديمة للتطبيق، الأحداث المكررة بنفس البصمة. Filtering يوفر ما يصل إلى 70% من حجم البيانات في مشروع إنتاج نموذجي، مما يقلل تكاليف الاستهلاك وعبء قناة اتصال الجهاز.

إعداد Sentry SDK لنظامي iOS و Android

يستغرق تثبيت Sentry SDK للمنصات المحمولة من 5 إلى 10 دقائق ويتطلب إضافة تبعية وتهيئة بمفتاح DSN. DSN (Data Source Name) هو معرف فريد للمشروع في Sentry يحدد إلى أين يتم إرسال الأحداث.

الإعداد على Android

بالنسبة لـ Android، يوفر Sentry أتمتة الأدوات من خلال إضافة Gradle. تقوم الإضافة بتعديل bytecode في مرحلة التجميع، مضيفة أغلفة لجميع Activities و Fragments واستدعاءات الشبكة. Auto-instrumentation يتم تفعيلها بخيار واحد في build.gradle وتتيح الحصول على breadcrumbs من دورة حياة التطبيق دون تغيير الكود.

kotlin
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 ينشئ جلسات تلقائيًا لكل تشغيل للتطبيق.

الإعداد على iOS

يدعم 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.

swift
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، وبعدها يتم حذف أقدم السجلات تلقائيًا.

kotlin
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 يتم إرساله تلقائيًا مع جميع الأحداث من نفس الجلسة، مما يسمح بتجميع الأخطاء حسب المستخدمين وتحديد عدد المستخدمين المتأثرين بخطأ معين. من المهم اتباع سياسة الخصوصية وعدم إرسال البيانات الشخصية إذا كانت سياسة التطبيق لا تسمح بذلك.

Source maps ورموز التصحيح

في إصدارات الإنتاج لنظامي 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.

مراقبة الأداء عبر Sentry

منذ الإصدار 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 و Firebase Crashlytics؟

Sentry يوفر سياقًا أكثر: breadcrumbs وبيانات مخصصة وربط الأخطاء بالأداء. Firebase Crashlytics هي أداة مجانية مع إبلاغ أساسي عن الأعطال ولكن بدون تتبع موزع وبدون إمكانية أتمتة breadcrumbs مخصصة. Sentry مناسب للمشاريع التي تحتاج إلى تشخيص عميق.

كم تكلفة Sentry لتطبيق جوال؟

يقدم Sentry خطة مجانية بسعة 5,000 حدث شهريًا (أخطاء + معاملات). الخطة المدفوعة Team تكلف 26 دولارًا لكل مستخدم شهريًا وتتضمن 100,000 حدث. للمشاريع الكبيرة، تتوفر خطة Business بحجم غير محدود وسعر مخصص.

كيف يتعامل Sentry مع البيانات الشخصية في الأخطاء؟

يوفر Sentry آلية مدمجة لـ Data Scrubbing: إزالة تلقائية للبريد الإلكتروني وعناوين IP وبطاقات الائتمان وبيانات PII الأخرى من الأحداث قبل تخزينها. يتم تكوين قواعد التنظيف في الواجهة الإلكترونية أو في إعدادات Relay مع دعم التعبيرات العادية. يُوصى بتفعيل التنظيف على مستوى SDK لضمان عدم مغادرة البيانات السرية لجهاز المستخدم.

هل يمكن تشغيل Sentry على خوادم خاصة؟

نعم، لدى Sentry إصدار مستضاف ذاتيًا مفتوح المصدر بالكامل. Self-hosted Sentry يتم نشره عبر Docker Compose ويشمل جميع ميزات إصدار SaaS. الحد الأدنى لتكوين الخادم: 4 vCPU و 16 GB RAM و 100 GB مساحة تخزين للأحداث.

هل يدعم Sentry SwiftUI و Jetpack Compose؟

نعم، يدعم Sentry SDK بشكل كامل SwiftUI (iOS 13+) و Jetpack Compose (Android). بالنسبة لـ SwiftUI، ينشئ SDK تلقائيًا معاملات لـ NavigationView و List مع قياس وقت العرض. بالنسبة لـ Jetpack Compose، يلزم تكامل مخصص عبر CompositionLocalProvider لنقل سياق Sentry إلى Composables.

الخلاصة

  • Sentry هي منصة مفتوحة المصدر لتتبع الأخطاء ومراقبة الأداء، تستخدمها أكثر من 100,000 مؤسسة.
  • الهندسة تشمل SDK على الجهاز وخادم Relay الوسيط وخلفية معالجة الأحداث مع دعم النشر المستضاف ذاتيًا و SaaS.
  • Breadcrumbs توفر تسلسلًا زمنيًا لإجراءات المستخدم قبل الخطأ، وهو أمر بالغ الأهمية لتشخيص الأخطاء المعقدة.
  • Source maps و dSYM تستعيد مكدسات استدعاءات قابلة للقراءة من كود الإنتاج المشوش.
  • Performance Tracing متكامل مع تتبع الأخطاء، مما يسمح بالانتقال من مقاييس الوقت إلى تفاصيل الخطأ عبر معرف تتبع واحد.
  • Auto-instrumentation تغطي Activity و ViewController وطلبات HTTP ودورة حياة التطبيق دون كود يدوي.
  • يوصى بتطبيق Sentry لأي تطبيق إنتاج: الخطة المجانية تغطي 5,000 حدث شهريًا، وهو ما يكفي للمشاريع الصغيرة والمتوسطة.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا