Sentry — این چیست، اصول و جمع‌آوری خطاها

نویسنده: IT Sectr منتشر شده: 2026-05-29 زمان مطالعه: 8 دقیقه

Sentry — بستری برای ردیابی خطاها و نظارت بر عملکرد برنامه‌ها در زمان واقعی است که به توسعه‌دهندگان زمینه کامل هر خرابی را ارائه می‌دهد. به گفته Sentry Documentation, 2025، Sentry روزانه بیش از 10 میلیارد رویداد را پردازش می‌کند و با 90+ زبان و فریمورک برای iOS، Android، وب و بک‌اند یکپارچه می‌شود.

نکات اصلی

  • Sentry — بستر ردیابی خطا و نظارت بر عملکرد با کد متن‌باز که از 90+ زبان و پلتفرم پشتیبانی می‌کند.
  • Error events — جمع‌آوری خودکار استثناها با stacktrace کامل، مقادیر متغیرها و وضعیت دستگاه.
  • Breadcrumbs — توالی اقدامات کاربر و رویدادهای سیستمی که قبل از خطا رخ می‌دهند.
  • Source maps — بازگردانی کد مینیفای شده برای بازیابی stack فراخوانی خوانا در محیط تولید.
  • Performance Tracing — نظارت بر زمان اجرای تراکنش‌ها با ردیابی توزیع‌شده در تمام سرویس‌ها.

Sentry در توسعه چیست

Sentry — بستری متن‌باز برای گزارش خرابی و نظارت بر عملکرد است که در سال 2012 تأسیس شد. این بستر به توسعه‌دهندگان امکان می‌دهد اعلان‌های خطا را در زمان واقعی با زمینه کامل تشخیصی دریافت کنند: stack فراخوانی، مقادیر متغیرها در لحظه خرابی، توالی اقدامات کاربر قبل از خطا و وضعیت محیط.

برخلاف سرویس‌های تجمیعی گزارش خرابی (Google Play Console، App Store Connect) که فقط آمار و نمودارهای پایه ارائه می‌دهند، Sentry هر رویداد را جداگانه با امکان گروه‌بندی بر اساس نوع خطا و فیلتر بر اساس نسخه برنامه نمایش می‌دهد. Issue در Sentry — گروهی از رویدادها با stacktrace یکسان است که امکان غرق نشدن در هزاران کرش یکسان را فراهم می‌کند و به رفع علت ریشه‌ای با زمینه کامل تمرکز می‌کند.

به گفته Sentry (2025)، میانگین زمان تشخیص خطا پس از پیاده‌سازی Sentry SDK از 30 دقیقه به 30 ثانیه کاهش می‌یابد و زمان تشخیص به لطف breadcrumbs خودکار و زمینه محیط 60% کاهش می‌یابد. این بستر توسط بیش از 100,000 سازمان در سراسر جهان از جمله Airbnb، Microsoft، Instagram و PayPal استفاده می‌شود و روزانه میلیاردها رویداد را پردازش می‌کند.

معماری Sentry: SDK، Relay و پردازش رویدادها

سیستم Sentry از سه مؤلفه اصلی تشکیل شده است: SDK در سمت برنامه، Relay (سرور پروکسی) و بک‌اند پردازش رویدادها. Sentry SDK — کتابخانه‌ای است که در برنامه وارد می‌شود، استثناها را می‌گیرد، زمینه را جمع‌آوری می‌کند و رویدادها را از طریق پروتکل JSON/HTTPS به Relay ارسال می‌کند.

Sentry Relay

Relay — سرور میانی است که می‌تواند در زیرساخت شرکت مستقر شود. رویدادها را از SDK دریافت می‌کند، طبق قوانین فیلتر می‌کند (داده‌های PII، رویدادهای اضافی)، بافر می‌کند و به Sentry SaaS یا نمونه شخصی ارسال می‌کند. Relay تأخیر ارسال پایین را تضمین می‌کند — زمان معمول دریافت رویداد 500–1500 میلی‌ثانیه است.

Inbound Data Filter

Sentry فیلترهای داخلی برای رد رویدادهای ناخواسته بدون ارسال به سرور ارائه می‌دهد: خطاهای محیط‌های آزمایشی، خطاهای نسخه‌های قدیمی برنامه، رویدادهای تکراری با fingerprint یکسان. Filtering تا 70% از حجم داده را در یک پروژه تولیدی معمولی ذخیره می‌کند و هزینه مصرف و بار کانال ارتباطی دستگاه را کاهش می‌دهد.

پیکربندی Sentry SDK برای iOS و Android

نصب Sentry SDK برای پلتفرم‌های موبایل 5–10 دقیقه طول می‌کشد و نیاز به افزودن وابستگی و مقداردهی اولیه با کلید DSN دارد. DSN (Data Source Name) — شناسه منحصر به فرد پروژه در Sentry است که مشخص می‌کند رویدادها به کجا ارسال شوند.

پیکربندی در Android

Sentry برای Android ابزار دقیق خودکار را از طریق پلاگین Gradle فراهم می‌کند. پلاگین بایت‌کد را در مرحله کامپایل تغییر می‌دهد و برای همه Activity، Fragment و فراخوانی‌های شبکه wrapper اضافه می‌کند. 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
        }
    }
}

کد SDK Sentry را در برنامه 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 SDK Sentry را با جمع‌آوری خودکار معیارهای عملکرد فعال می‌کند. enableAutoPerformanceTracing نظارت بر زمان بارگذاری صفحه و درخواست‌های HTTP را بدون کد اضافی فعال می‌کند.

Breadcrumbs — توالی زمانی رویدادهایی است که قبل از خطا رخ می‌دهند. Sentry به طور خودکار breadcrumbs را برای کلیک دکمه‌ها، انتقال بین صفحات، درخواست‌های HTTP و اعلان‌های سیستمی ثبت می‌کند. توسعه‌دهنده می‌تواند breadcrumbs سفارشی برای منطق کسب‌وکار اضافه کند.

هر breadcrumb شامل یک برچسب زمانی، نوع رویداد (navigation, http, ui, error)، دسته‌بندی و داده‌های دلخواه است. هنگام وقوع خطا، تمام breadcrumbs 2–5 دقیقه آخر (قابل تنظیم) به رویداد پیوست می‌شوند. این زمینه اغلب از خود stacktrace مهم‌تر است: توسعه‌دهنده می‌بیند که کاربر پس از انتخاب محصول روی دکمه «پرداخت» کلیک کرده و سپس کرش رخ داده است. حداکثر تعداد 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 خواهد دید که کاربر روی دکمه «Pay» با مبلغ 19.99 USD کلیک کرده است که امکان بومی‌سازی سریع مشکل در جریان پرداخت را فراهم می‌کند.

User context

Sentry به رویدادها اطلاعات مربوط به کاربر را اضافه می‌کند: ID، نام کاربری، ایمیل. User context به طور خودکار با تمام رویدادهای یک نشست منتقل می‌شود و امکان گروه‌بندی خطاها بر اساس کاربران و تعیین تعداد کاربران تحت تأثیر یک باگ خاص را فراهم می‌کند. رعایت سیاست حریم خصوصی و عدم ارسال داده‌های شخصی در صورت عدم مجوز توسط سیاست برنامه مهم است.

Source maps و نمادهای اشکال‌زدایی

در نسخه‌های تولیدی iOS و Android کد معمولاً مینیفای یا مبهم‌سازی می‌شود. بدون پردازش، stack خطا شامل نام‌های نامفهومی مانند «a.b()» به جای «UserViewModel.fetchData()» خواهد بود. Source maps (JavaScript) و debug symbols (dSYM برای iOS، ProGuard mapping برای Android) stack قابل خواندن را بازیابی می‌کنند.

برای Android، Sentry به طور خودکار فایل‌های ProGuard mapping را از طریق پلاگین Gradle هنگام ساخت نسخه release بارگذاری می‌کند. برای iOS نیاز به بارگذاری فایل‌های dSYM است — Sentry یک اسکریپت برای بارگذاری خودکار در مرحله بایگانی ارائه می‌دهد. بدون نمادهای اشکال‌زدایی، stack خطا در Sentry برای توسعه‌دهنده بی‌فایده خواهد بود، بنابراین فرآیند بارگذاری آن‌ها باید یک مرحله اجباری در خط لوله CI/CD باشد.

نظارت بر عملکرد از طریق Sentry

از نسخه 2020، Sentry شامل نظارت بر عملکرد — جمع‌آوری معیارهای زمان اجرای تراکنش‌ها با ردیابی توزیع‌شده است. Transaction در Sentry — واحد کار قابل اندازه‌گیری است: بارگذاری صفحه، اجرای درخواست API، پردازش وظیفه پس‌زمینه. هر تراکنش شامل spanهای فرزندی است که نشان می‌دهند کدام مراحل بیشترین زمان را گرفته‌اند.

نظارت بر عملکرد در Sentry با ردیابی خطا یکپارچه شده است: اگر تراکنش با خطا به پایان برسد، span مربوطه با وضعیت «error» علامت‌گذاری می‌شود و توسعه‌دهنده می‌تواند از معیار عملکرد به جزئیات استثنا برود. Trace ID تمام رویدادها (خطاها، تراکنش‌ها، breadcrumbs) را در یک نشست واحد برای تحلیل سرتاسر پیوند می‌دهد و انتقال یکپارچه بین برگه‌های Issues و Performance در داشبورد واحد پلتفرم Sentry را فراهم می‌کند.

به گفته Sentry Performance Benchmark (2024)، برنامه با نظارت بر عملکرد فعال (نرخ نمونه‌برداری 10%) 2–5% ترافیک بیشتر و 1–2% منابع CPU بیشتر در دستگاه مصرف می‌کند. این بار با کاهش 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 و بک‌اند پردازش رویداد با پشتیبانی از استقرار self-hosted و SaaS است.
  • Breadcrumbs تاریخچه اقدامات کاربر قبل از خطا را فراهم می‌کند که برای تشخیص باگ‌های پیچیده حیاتی است.
  • Source maps و dSYM stack فراخوانی خوانا را از کد تولید مبهم‌سازی شده بازیابی می‌کنند.
  • Performance Tracing با ردیابی خطا یکپارچه شده است و امکان عبور از معیارهای زمان به جزئیات خطا از طریق یک trace ID واحد را فراهم می‌کند.
  • Auto-instrumentation Activity، ViewController، درخواست‌های HTTP و چرخه حیات برنامه را بدون کد دستی پوشش می‌دهد.
  • پیاده‌سازی Sentry برای هر برنامه تولیدی توصیه می‌شود: طرح رایگان 5,000 رویداد در ماه را پوشش می‌دهد که برای پروژه‌های کوچک و متوسط کافی است.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید