Bugsnag, istehsal mühitində səhvləri tam diaqnostik kontekstlə avtomatik aşkarlayan, qruplaşdıran və prioritetləşdirən tətbiq səhvləri və stabilik monitorinq platformasıdır. Bugsnag Documentation, 2025-ə görə, Bugsnag aylıq 6 milyard hadisəni emal edir, o cümlədən Airbnb, Lyft, Slack və PagerDuty daxil olmaqla 7 000-dən çox müştəriyə xidmət göstərir.
Əsas məqamlar
Bugsnag — 2013-cü ildə əsası qoyulmuş və 2019-cu ildə SmartBear tərəfindən satın alınmış tətbiq stabilik monitorinq platforması. Bugsnag-ın rəqiblərdən əsas fərqi — sadəcə səhvlərin sayına deyil, məhsulun əsas metrikası kimi stabilikə diqqət yetirməsidir. Platforma iOS, Android, React Native, Flutter, veb və backend xidmətləri üçün vahid panel təqdim edir.
Bugsnag-də hər bir səhv kontekst əsasında severity (critical, warning, info) avtomatik qiymətləndirməsi alır: tətbiq kraşı baş veribmi, ödəniş funksiyası təsirlənibmi, səhv bir çox istifadəçi üçün təkrarlanırmı. Komanda sadəcə bugların siyahısını deyil, biznesə təsir göstəricisi ilə prioritetləşdirilmiş backlog görür.
SmartBear (2024) məlumatına görə, Bugsnag istifadə edən komandalar dublikatların avtomatik qruplaşdırılması və hər bir hadisənin tam konteksti sayəsində insidentin həll müddətini orta hesabla 40% qısaldır. Platforma səhvlər üzrə avtomatik tapşırıq yaratmaq üçün Slack, PagerDuty, Jira, GitHub və GitLab ilə inteqrasiya olunur.
Stability Score — səhvsiz başa çatan sessiyaların faizini göstərən Bugsnag-ın əsas metrikası. Dəyər dövr ərzində kraşsız sessiyaların sayının ümumi sessiyaların sayına nisbəti kimi hesablanır. 99.9% bal o deməkdir ki, hər 1000 sessiyadan 1-də səhv var.
Stability Score həddləri CI/CD ilə inteqrasiya olunub: yeni versiya yerləşdirildikdən sonra bal müəyyən edilmiş həddən aşağı düşərsə (məsələn, 99.5%), Bugsnag avtomatik olaraq buraxılışı bloklayır və ya Slack-ə kritik alert göndərir. Release health dashboard hər bir tətbiq versiyası üzrə bal dinamikasını göstərir, konkret dəyişikliyin stabilikə təsirini izləməyə imkan verir.
Bugsnag səhvlərin üç severity səviyyəsi üzrə avtomatik təsnifat alqoritmindən istifadə edir. Critical — tətbiq kraşları, ödəniş ssenarilərində səhvlər, istifadəçilərin 5%-dən çoxuna təsir edən. Warning — ölümcül olmayan səhvlər (handled exceptions), ayrı-ayrı funksiyalara təsir edən. Info — loglar, aşağı prioritetli xəbərdarlıqlar. Bu yanaşma, yüzlərlə bildirişin həqiqətən kritik problemlərə diqqət yetirməyə mane olduğu "alert yorğunluğunun" qarşısını alır.
| Severity | Nümunə | Fəaliyyət |
|---|---|---|
| Critical | Tətbiqə daxil olarkən kraş | Dərhal xəbərdarlıq |
| Warning | Avatar yükləmə xətası | Növbəti sprint üçün Jira tapşırığı |
| Info | QR skan edərkən time-out | Bildirişsiz loglama |
Bugsnag SDK-nın quraşdırılması 5 dəqiqə çəkir: asılılığın əlavə edilməsi və layihənin API açarı ilə inisializasiya. Bugsnag Android SDK Kotlin və Java-nı dəstəkləyir, Java istisnalarını, ANR və Native (C/C++) səhvlərini siqnallar vasitəsilə avtomatik tutur.
SDK Gradle vasitəsilə qoşulur və Application.onCreate-də inisializasiya olunur. Bugsnag avtomatik olaraq cihaz haqqında məlumat toplayır: model, OS versiyası, boş yaddaş, batareya doldurma səviyyəsi. Auto-notify defolt olaraq aktivdir və bütün işlənməmiş istisnaları Bugsnag serverinə göndərir.
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)
}
}
Kod Bugsnag SDK-nı avtomatik sessiya izləmə və maksimum 5 saniyə başlanma vaxtı ilə inisializasiya edir. Tətbiq bu müddətdə başlamazsa, Bugsnag "slow launch" hadisəsini xəbərdarlıq kimi qeyd edəcək.
Bugsnag iOS SDK Swift və Objective-C-ni dəstəkləyir, NSException, Mach istisnalarını (SIGABRT, SIGSEGV) və əməliyyat sistemi siqnallarını tutur. SDK iOS 11+ və SwiftUI ilə uyğundur, bütün UI hadisələri üçün avtomatik breadcrumbs yaradır: kliklər, keçidlər, jestlər.
import Bugsnag
class AppDelegate: UIResponder, UIApplicationDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
Bugsnag.start(withApiKey: "YOUR_API_KEY")
// əlavə konfiqurasiya
return true
}
}
Swift-də kod Bugsnag-ı minimum konfiqurasiya ilə işə salır. Bütün işlənməmiş istisnalar və kraşlar avtomatik olaraq cihazın tam konteksti və çağırış yığını ilə Bugsnag panelinə göndərilir.
Breadcrumbs Bugsnag-də səhvdən əvvəlki hadisələrin strukturlaşdırılmış jurnalıdır. Hər bir breadcrumb vaxt damğası, tip (navigation, request, state, error, manual) və ixtiyari metadata ehtiva edir. Bugsnag iOS və Android-də UI hadisələri, tətbiq vəziyyətinin dəyişmələri (background, foreground) və şəbəkə sorğuları üçün avtomatik breadcrumbs qeyd edir.
Developer biznes məntiqi üçün fərdi breadcrumbs əlavə edə bilər: "istifadəçi məhsulu səbətə əlavə etdi", "sifariş yaratma sorğusu göndərildi". Səhv baş verdikdə son 30 saniyədəki bütün breadcrumbs hadisəyə əlavə olunur. Bugsnag həmçinin "state" — sessiyanın bütün səhvləri ilə ötürülən ixtiyari məlumat lüğətini dəstəkləyir.
Bugsnag.leaveBreadcrumb(
message = "Order created",
metadata = mapOf(
"order_id" to "ORD-12345",
"total" to "49.99"
),
type = BreadcrumbType.STATE
)
Bugsnag.setExtraData(
"user_tier", "premium"
)
Kod sifarişin yaradılması haqqında breadcrumb buraxır və istifadəçinin tarifi haqqında əlavə məlumat təyin edir. Bu sessiyada səhv baş verərsə, Bugsnag ona sifariş nömrəsi və istifadəçi tipi ilə kontekst əlavə edəcək.
Bugsnag avtomatik olaraq sessiyaların sayını hesablayır — hər bir tətbiq işə salınması yeni sessiya sayılır. Səhvləri olan sessiyaların ümumi sessiyalara nisbəti Stability Score-u təşkil edir. Session tracking tarifləşdirmədə nəzərə alınır: Bugsnag səhvlərin həcminə görə deyil, izlənilən sessiyaların sayına görə lisenziyalaşdırılır, bu da onu Sentry və rəqiblərin hadisə başına ödəniş modellərindən fərqləndirir.
Release tracking — hər bir səhvi tətbiqin konkret versiyası və depodakı commit ilə əlaqələndirmə mexanizmi. Bugsnag versiyanı Info.plist (iOS) və ya build.gradle (Android) faylından avtomatik müəyyənləşdirir və paneldə versiyalar üzrə səhvlərin sayını göstərir. Bu, problemin son buraxılışda gətirilib-gətirilmədiyini dərhal görməyə imkan verir.
Əgər 2.4.1 versiyası yerləşdirildikdən sonra kritik səhvlərin sayı 2.4.0 ilə müqayisədə 3 dəfə artarsa, Bugsnag bu versiyanı "qeyri-sabit" olaraq qeyd edir və alert göndərir. CI/CD inteqrasiyası Stability Score həddən aşağı düşərsə, kompilyasiyanın staging və ya production-a promosyonunu bloklamağa imkan verir. Jenkins, GitHub Actions və GitLab CI üçün plaginlər stabilik metrikalarını pipeline-a ötürür.
Bugsnag Stability Benchmark (2024) məlumatına görə, mobil tətbiqlərdə səhvlərin 68%-i yeni versiyalarla daxil edilir, uzun müddətdir mövcud olan buglar deyil. Release tracking reqressiyanın aşkarlanma müddətini yerləşdirmədən sonra saatlardan bir neçə dəqiqəyə qədər qısaldır.
Error monitoring bazarında üç əsas oyunçu var: Bugsnag, Sentry və Firebase Crashlytics. Bugsnag sessiyalara əsaslanan qiymət modeli (hadisələrə deyil), Stability Score-a diqqət və avtomatik severity prioritetləşdirməsi ilə seçilir. Sentry distributed tracing ilə daha dərin performance monitoring və açıq mənbə kodu təklif edir. Crashlytics — Firebase ekosisteminə inteqrasiya olunmuş əsas funksiyalarla pulsuz həll.
| Xüsusiyyət | Bugsnag | Sentry | Crashlytics |
|---|---|---|---|
| Qiymət (başlanğıc) | 5 000 sessiyaya qədər pulsuz | 5 000 hadisəyə qədər pulsuz | Pulsuz |
| Performance monitoring | Məhdud | Distributed tracing ilə tam | Yox |
| Flutter üçün SDK | Bəli | Bəli | Məhdud |
| Self-hosted | Xeyr | Bəli (open source) | Xeyr |
| Stability Score | Bəli (əsas metrika) | Xeyr | Xeyr |
Alətlər arasında seçim prioritetlərdən asılıdır: əsas göstərici istehsalda tətbiq stabilidirsə, Bugsnag ən aydın metrikanı verir. Distributed tracing ilə dərin performans analizi lazımdırsa — Sentry. Google ekosistemi ilə pulsuz əsas monitorinq üçün — Crashlytics.
Tez-tez verilən suallar
Alqoritm üç amili nəzərə alır: istisna tipi (kraş və ya handled), təsirlənmiş istifadəçilərin sayı və ssenari konteksti. Critical severity səhv əsas ekranda və ya ödəniş axınında baş verərsə və istifadəçilərin 1%-dən çoxuna təsir edərsə təyin edilir. Developer severity-ni API və ya SDK konfiqurasiyası vasitəsilə əl ilə dəyişə bilər.
Bəli, Bugsnag React Native (new architecture dəstəyi ilə) və Flutter (Dart 3.x ilə uyğunluq) üçün SDK təqdim edir. Hər iki SDK naviqasiya, şəbəkə sorğuları və tətbiq vəziyyəti üçün avtomatik breadcrumbs toplanmasını, həmçinin biznes məntiqi üçün fərdi instrumentasiyanı dəstəkləyir.
Bəli, Bugsnag Jira ilə ikitərəfli inteqrasiya təmin edir: yeni səhv avtomatik olaraq Jira-da tapşırıq yarada bilər, Jira-da tapşırığın bağlanması isə səhvin statusunu Bugsnag-də "resolved" olaraq dəyişir. Jira Cloud və Jira Server (Jira Connect vasitəsilə) dəstəklənir.
Bugsnag SDK release quruluşunda APK/IPA ölçüsünə təxminən 1.5 MB əlavə edir. Bu, Sentry-dən (təxminən 2 MB) az, lakin Firebase Crashlytics-dən (təxminən 0.8 MB) çoxdur. Kompilyasiyanı sürətləndirmək üçün SDK-nı debug quruluşlarından silmək, yalnız test və release konfiqurasiyaları üçün saxlamaq tövsiyə olunur.
Bəli, Bugsnag backend dillərini dəstəkləyir: Ruby, Python, Node.js, Java, .NET, Go, PHP. Backend səhvləri mobil səhvlərlə eyni paneldə xidmətlər üzrə qruplaşdırılaraq göstərilir. Bu, kompleks stabilik izləməyə imkan verir: API düşərsə, developer problemin müştəri və ya serverlə əlaqəli olduğunu görür.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun