Bugsnag: چیست، ردیابی خطا و جمع‌آوری داده‌ها

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

Bugsnag یک پلتفرم مانیتورینگ خطا و پایداری برنامه است که به طور خودکار باگ‌ها را در محیط تولید با زمینه تشخیصی کامل شناسایی، گروه‌بندی و اولویت‌بندی می‌کند. طبق Bugsnag Documentation, 2025، Bugsnag ماهانه 6 میلیارد رویداد را برای بیش از 7 000 مشتری پردازش می‌کند، از جمله Airbnb، Lyft، Slack و PagerDuty.

نکات اصلی

  • Bugsnag — پلتفرم error monitoring با گروه‌بندی خودکار خطاها، اولویت‌بندی بر اساس severity و یکپارچگی با CI/CD.
  • Stability Score — معیار نسبت جلسات بدون خطا که پایداری کلی برنامه را به درصد نشان می‌دهد.
  • Severity-based triage — تقسیم خودکار خطاها به critical، warning و info برای تمرکز تیم روی موارد مهم.
  • Breadcrumbs — ثبت توالی رویدادهای قبل از خطا با پشتیبانی از ویژگی‌های سفارشی توسط توسعه‌دهنده.
  • Release tracking — ارتباط خطاها با نسخه خاص برنامه و اعلان خودکار هنگام افزایش تعداد کرش‌ها پس از انتشار.

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

Bugsnag یک پلتفرم مانیتورینگ پایداری برنامه است که در سال 2013 تأسیس شد و در سال 2019 توسط SmartBear خریداری شد. تفاوت اصلی Bugsnag با رقبا تمرکز بر پایداری به عنوان معیار کلیدی محصول است، نه صرفاً تعداد خطاها. این پلتفرم یک داشبورد واحد برای iOS، Android، React Native، Flutter، وب و سرویس‌های بک‌اند فراهم می‌کند.

هر خطا در Bugsnag بر اساس زمینه ارزیابی خودکار severity (critical, warning, info) دریافت می‌کند: آیا کرش برنامه رخ داده، آیا عملکرد پرداخت تحت تأثیر قرار گرفته، آیا خطا برای بسیاری از کاربران تکرار می‌شود. تیم نه فقط لیست باگ‌ها، بلکه یک بک‌لاگ اولویت‌بندی شده با نشان‌دهنده تأثیر بر کسب‌وکار را می‌بیند.

به گفته SmartBear (2024)، تیم‌هایی که از Bugsnag استفاده می‌کنند، میانگین زمان حل حادثه را به لطف گروه‌بندی خودکار تکراری‌ها و زمینه کامل هر رویداد 40% کاهش می‌دهند. این پلتفرم با Slack، PagerDuty، Jira، GitHub و GitLab برای ایجاد خودکار وظایف مربوط به خطاها یکپارچه می‌شود.

Stability Score و اولویت‌بندی خودکار

Stability Score — معیار کلیدی Bugsnag که درصد جلسات تکمیل‌شده بدون خطا را نشان می‌دهد. مقدار به عنوان نسبت تعداد جلسات بدون کرش به تعداد کل جلسات در یک دوره محاسبه می‌شود. نمره 99.9% به این معنی است که 1 از 1000 جلسه حاوی خطا است.

آستانه‌های Stability Score با CI/CD یکپارچه شده‌اند: اگر پس از استقرار نسخه جدید، نمره زیر آستانه تعیین‌شده (مثلاً 99.5%) کاهش یابد، Bugsnag به طور خودکار انتشار را مسدود می‌کند یا یک هشدار بحرانی به Slack ارسال می‌کند. Release health dashboard پویایی نمره را برای هر نسخه برنامه نشان می‌دهد و امکان ردیابی تأثیر تغییر خاص بر پایداری را فراهم می‌کند.

Severity-based triage

Bugsnag از الگوریتم طبقه‌بندی خودکار خطاها در سه سطح severity استفاده می‌کند. Critical — کرش‌های برنامه، خطاهای سناریوهای پرداخت که بیش از 5% کاربران را تحت تأثیر قرار می‌دهند. Warning — خطاهای غیرمرگبار (handled exceptions) که بر عملکردهای جداگانه تأثیر می‌گذارند. Info — لاگ‌ها، هشدارهای کم‌اولویت. این رویکرد از "خستگی از هشدار" جلوگیری می‌کند، زمانی که صدها اعلان تمرکز روی مشکلات واقعاً بحرانی را غیرممکن می‌کند.

Severityمثالاقدام
Criticalکرش هنگام ورود به برنامهاعلان فوری
Warningخطای بارگذاری آواتاروظیفه در Jira برای اسپرینت بعدی
Infoتایم‌اوت هنگام اسکن QRثبت لاگ بدون اعلان

اتصال Bugsnag SDK برای پلتفرم‌های موبایل

نصب Bugsnag SDK 5 دقیقه طول می‌کشد: افزودن وابستگی و مقداردهی اولیه با کلید API پروژه. Bugsnag Android SDK از Kotlin و Java پشتیبانی می‌کند، به طور خودکار استثناهای Java، ANR و خطاهای Native (C/C++) را از طریق سیگنال‌ها می‌گیرد.

پیکربندی در Android

SDK از طریق Gradle متصل می‌شود و در Application.onCreate مقداردهی اولیه می‌شود. Bugsnag به طور خودکار اطلاعات دستگاه را جمع‌آوری می‌کند: مدل، نسخه سیستم‌عامل، حافظه آزاد، سطح شارژ باتری. Auto-notify به طور پیش‌فرض فعال است و تمام استثناهای مدیریت‌نشده را به سرور Bugsnag ارسال می‌کند.

kotlin
import com.bugsnag.android.Bugsnag
import com.bugsnag.android.Configuration

class App : Application() {
    override fun onCreate() {
        super.onCreate()
        val config = Configuration("YOUR_API_KEY")
        config.autoTrackSessions = true
        config.launchDurationMillis = 5_000
        Bugsnag.start(this, config)
    }
}

کد SDK Bugsnag را با ردیابی خودکار جلسات و حداکثر زمان راه‌اندازی 5 ثانیه مقداردهی اولیه می‌کند. اگر برنامه در این مدت راه‌اندازی نشود، Bugsnag رویداد "slow launch" را به عنوان هشدار ثبت می‌کند.

پیکربندی در iOS

Bugsnag iOS SDK از Swift و Objective-C پشتیبانی می‌کند، NSException، استثناهای Mach (SIGABRT، SIGSEGV) و سیگنال‌های سیستم‌عامل را می‌گیرد. SDK با iOS 11+ و SwiftUI سازگار است، به طور خودکار برای همه رویدادهای UI breadcrumbs ایجاد می‌کند: کلیک‌ها، انتقال‌ها، ژست‌ها.

swift
import Bugsnag

class AppDelegate: UIResponder, UIApplicationDelegate {
    override func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        Bugsnag.start(withApiKey: "YOUR_API_KEY")
        // پیکربندی اضافی
        return true
    }
}

کد Swift Bugsnag را با حداقل پیکربندی راه‌اندازی می‌کند. همه استثناهای مدیریت‌نشده و کرش‌ها به طور خودکار با زمینه کامل دستگاه و پشته فراخوانی به داشبورد Bugsnag ارسال می‌شوند.

Breadcrumbs در Bugsnag یک لاگ ساختاریافته از رویدادهای قبل از خطا است. هر breadcrumb شامل یک برچسب زمانی، نوع (navigation, request, state, error, manual) و ابرداده دلخواه است. Bugsnag به طور خودکار breadcrumbs را برای رویدادهای UI در iOS و Android، تغییرات وضعیت برنامه (background, foreground) و درخواست‌های شبکه ثبت می‌کند.

توسعه‌دهنده می‌تواند breadcrumbs سفارشی برای منطق کسب‌وکار اضافه کند: "کاربر محصول را به سبد خرید اضافه کرد"، "درخواست ایجاد سفارش ارسال شد". هنگام بروز خطا تمام breadcrumbs 30 ثانیه آخر به رویداد پیوست می‌شوند. Bugsnag همچنین "state" را پشتیبانی می‌کند — یک دیکشنری داده دلخواه که با تمام خطاهای جلسه منتقل می‌شود.

kotlin
Bugsnag.leaveBreadcrumb(
    message = "Order created",
    metadata = mapOf(
        "order_id" to "ORD-12345",
        "total" to "49.99"
    ),
    type = BreadcrumbType.STATE
)

Bugsnag.setExtraData(
    "user_tier", "premium"
)

کد یک breadcrumb درباره ایجاد سفارش باقی می‌گذارد و اطلاعات اضافی درباره تعرفه کاربر تنظیم می‌کند. در صورت بروز خطا در این جلسه، Bugsnag زمینه‌ای با شماره سفارش و نوع کاربر به آن ضمیمه می‌کند.

Session tracking

Bugsnag به طور خودکار تعداد جلسات را شمارش می‌کند — هر بار راه‌اندازی برنامه یک جلسه جدید محسوب می‌شود. نسبت جلسات با خطا به تعداد کل جلسات Stability Score را تشکیل می‌دهد. Session tracking در قیمت‌گذاری در نظر گرفته می‌شود: Bugsnag بر اساس تعداد جلسات ردیابی‌شده مجوزدهی می‌شود، نه حجم خطاها، که آن را از مدل‌های پرداخت به ازای رویداد در Sentry و رقبا متمایز می‌کند.

Release tracking و یکپارچگی با CI/CD

Release tracking — مکانیزم ارتباط هر خطا با نسخه خاص برنامه و commit در مخزن. Bugsnag به طور خودکار نسخه را از Info.plist (iOS) یا build.gradle (Android) تعیین می‌کند و در داشبورد تعداد خطاها را بر اساس نسخه نمایش می‌دهد. این امکان را فراهم می‌کند که بلافاصله ببینیم آیا مشکل با آخرین انتشار ایجاد شده است یا خیر.

اگر پس از استقرار نسخه 2.4.1 تعداد خطاهای بحرانی نسبت به 2.4.0 سه برابر افزایش یابد، Bugsnag این نسخه را به عنوان "ناپایدار" علامت‌گذاری می‌کند و هشدار ارسال می‌کند. یکپارچگی CI/CD امکان مسدود کردن ارتقای بیلد به staging یا production را در صورت کاهش Stability Score زیر آستانه فراهم می‌کند. افزونه‌های Jenkins، GitHub Actions و GitLab CI معیارهای پایداری را به pipeline منتقل می‌کنند.

طبق Bugsnag Stability Benchmark (2024)، 68% خطاها در برنامه‌های موبایل توسط نسخه‌های جدید وارد می‌شوند و باگ‌های قدیمی نیستند. Release tracking زمان تشخیص پسرفت را از ساعت‌ها به چند دقیقه پس از استقرار کاهش می‌دهد.

مقایسه Bugsnag با Sentry و Crashlytics

در بازار error monitoring سه بازیگر اصلی وجود دارد: Bugsnag، Sentry و Firebase Crashlytics. Bugsnag با مدل قیمت‌گذاری مبتنی بر جلسات (نه رویدادها)، تمرکز بر Stability Score و اولویت‌بندی خودکار severity متمایز می‌شود. Sentry performance monitoring عمیق‌تری با distributed tracing و کد منبع باز ارائه می‌دهد. Crashlytics — راه‌حل رایگان با عملکردهای پایه، یکپارچه با اکوسیستم Firebase.

ویژگیBugsnagSentryCrashlytics
قیمت (شروع)رایگان تا 5 000 جلسهرایگان تا 5 000 رویدادرایگان
Performance monitoringمحدودکامل با distributed tracingخیر
SDK برای Flutterبلهبلهمحدود
Self-hostedخیربله (open source)خیر
Stability Scoreبله (معیار کلیدی)خیرخیر

انتخاب بین ابزارها به اولویت‌ها بستگی دارد: اگر شاخص کلیدی پایداری برنامه در تولید است، Bugsnag واضح‌ترین معیار را ارائه می‌دهد. اگر تحلیل عمیق عملکرد با distributed tracing نیاز است — Sentry. برای مانیتورینگ پایه رایگان با یکپارچگی با اکوسیستم Google — Crashlytics.

سوالات متداول

Bugsnag چگونه severity خطا را تعیین می‌کند؟

الگوریتم سه عامل را در نظر می‌گیرد: نوع استثنا (کرش یا handled)، تعداد کاربران تحت تأثیر و زمینه سناریو. Critical severity اگر خطا در صفحه اصلی یا جریان پرداخت رخ داده و بیش از 1% کاربران را تحت تأثیر قرار داده باشد، اختصاص می‌یابد. توسعه‌دهنده می‌تواند severity را به صورت دستی از طریق API یا پیکربندی SDK تغییر دهد.

آیا Bugsnag از React Native و Flutter پشتیبانی می‌کند؟

بله، Bugsnag SDK برای React Native (با پشتیبانی از new architecture) و Flutter (سازگاری با Dart 3.x) ارائه می‌دهد. هر دو SDK از جمع‌آوری خودکار breadcrumbs برای ناوبری، درخواست‌های شبکه و وضعیت برنامه و همچنین ابزار دقیق سفارشی برای منطق کسب‌وکار پشتیبانی می‌کنند.

آیا می‌توان Bugsnag را با Jira یکپارچه کرد؟

بله، Bugsnag یکپارچگی دوطرفه با Jira فراهم می‌کند: یک خطای جدید می‌تواند به طور خودکار یک وظیفه در Jira ایجاد کند، و بسته شدن یک وظیفه در Jira وضعیت خطا را به "resolved" در Bugsnag تغییر می‌دهد. Jira Cloud و Jira Server (از طریق Jira Connect) پشتیبانی می‌شوند.

Bugsnag چگونه بر اندازه برنامه تأثیر می‌گذارد؟

SDK Bugsnag تقریباً 1.5 MB به اندازه APK/IPA در بیلد release اضافه می‌کند. این کمتر از Sentry (حدود 2 MB) اما بیشتر از Firebase Crashlytics (حدود 0.8 MB) است. توصیه می‌شود SDK را از بیلدهای debug برای سرعت بخشیدن به کامپایل حذف کنید و فقط برای پیکربندی‌های تست و release نگه دارید.

آیا می‌توان از Bugsnag برای برنامه‌های بک‌اند استفاده کرد؟

بله، Bugsnag از زبان‌های بک‌اند پشتیبانی می‌کند: Ruby, Python, Node.js, Java, .NET, Go, PHP. خطاهای بک‌اند در همان داشبورد خطاهای موبایل با گروه‌بندی بر اساس سرویس‌ها نمایش داده می‌شوند. این امکان ردیابی سرتاسری پایداری را فراهم می‌کند: اگر API از کار بیفتد، توسعه‌دهنده می‌بیند که آیا مشکل مربوط به کلاینت است یا سرور.

خلاصه

  • Bugsnag — پلتفرم error monitoring با تأکید بر معیار پایداری و اولویت‌بندی خودکار خطاها بر اساس severity.
  • Stability Score — درصد جلسات بدون خطا، معیار کلیدی برای ارزیابی کیفیت انتشار و دروازه‌بانی CI/CD.
  • Severity-based triage به طور خودکار خطاها را به critical، warning و info تقسیم می‌کند و از خستگی هشدار جلوگیری می‌کند.
  • Release tracking هر خطا را با نسخه برنامه و commit برای تشخیص سریع پسرفت‌ها مرتبط می‌کند.
  • SDK از iOS، Android، React Native، Flutter و همچنین 9 زبان بک‌اند در یک داشبورد واحد پشتیبانی می‌کند.
  • مدل قیمت‌گذاری مبتنی بر جلسات، Bugsnag را از رقبا متمایز می‌کند و آن را از نظر بودجه قابل پیش‌بینی می‌سازد.
  • Bugsnag برای تیم‌های محصولی که پایداری برنامه شاخص کلیدی کسب‌وکار است و نیاز به اولویت‌بندی خودکار خطاها دارند، توصیه می‌شود.

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

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

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

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