Sentry — bu real vaqt rejimida ilovalardagi xatolarni kuzatish va ishlash samaradorligini monitoring qilish platformasi bo'lib, dasturchilarga har bir nosozlikning to'liq kontekstini taqdim etadi. Sentry Documentation, 2025 ma'lumotlariga ko'ra, Sentry kuniga 10 milliarddan ortiq hodisalarni qayta ishlaydi, iOS, Android, veb va backend uchun 90+ til va freymvorklar bilan integratsiyani ta'minlaydi.
Asosiy ma'lumotlar
Sentry — 2012-yilda asos solingan, ochiq kodli crash-reporting va samaradorlik monitoring platformasi. Dasturchilarga real vaqtda xatolar haqida to'liq diagnostik kontekst bilan bildirishnomalar olish imkonini beradi: chaqiruvlar steki, nosozlik paytida o'zgaruvchilar qiymatlari, xatodan oldingi foydalanuvchi harakatlari ketma-ketligi va muhit holati.
Faqat statistika va asosiy grafiklarni taqdim etuvchi agregatsiyalashgan crash-reporting xizmatlaridan (Google Play Console, App Store Connect) farqli o'laroq, Sentry har bir hodisani alohida ko'rsatadi, xato turi bo'yicha guruhlash va ilova versiyasi bo'yicha filtrlash imkonini beradi. Sentry-da Issue — bir xil stacktrace-ga ega hodisalar guruhi bo'lib, minglab bir xil krashlarda cho'kib qolmaslikka, to'liq kontekst bilan asosiy sababni bartaraf etishga e'tibor qaratishga imkon beradi.
Sentry (2025) ma'lumotlariga ko'ra, Sentry SDK joriy etilgandan so'ng xatoni aniqlashning o'rtacha vaqti 30 daqiqadan 30 soniyagacha qisqaradi, tashxis vaqti esa avtomatik breadcrumbs va muhit konteksti tufayli 60% ga kamayadi. Platforma butun dunyo bo'ylab 100.000 dan ortiq tashkilotlar, jumladan Airbnb, Microsoft, Instagram va PayPal tomonidan qo'llaniladi va kuniga milliardlab hodisalarni qayta ishlaydi.
Sentry tizimi uchta asosiy komponentdan iborat: ilova tomonidagi SDK, Relay (proksi-server) va hodisalarni qayta ishlash backend-i. Sentry SDK — ilovaga o'rnatilgan, istisnolarni tutuvchi, kontekst yig'uvchi va hodisalarni JSON/HTTPS protokoli orqali Relay-ga yuboruvchi kutubxona.
Relay — kompaniya infratuzilmasida joylashtirilishi mumkin bo'lgan oraliq server. SDK-dan hodisalarni qabul qiladi, qoidalar bo'yicha filtrlaydi (PII ma'lumotlari, keraksiz hodisalar), buferlaydi va Sentry SaaS yoki o'z instansiyasiga uzatadi. Relay past jo'natish kechikishini ta'minlaydi — hodisani qabul qilishning odatiy vaqti 500–1500 ms.
Sentry serverga yubormasdan istalmagan hodisalarni rad etish uchun o'rnatilgan filtrlarni taqdim etadi: test muhitlaridagi xatolar, ilovaning eski versiyalaridagi xatolar, bir xil fingerprint-ga ega takrorlanuvchi hodisalar. Filtering odatdagi ishlab chiqarish loyihasida ma'lumotlar hajmining 70% gacha tejaydi, iste'mol narxini va qurilmaning aloqa kanali yukini kamaytiradi.
Mobil platformalar uchun Sentry SDK o'rnatish 5–10 daqiqa davom etadi va bog'liqlikni qo'shish hamda DSN kaliti bilan ishga tushirishni talab qiladi. DSN (Data Source Name) — Sentry-dagi loyihaning noyob identifikatori bo'lib, hodisalarni qaerga yuborishni ko'rsatadi.
Android uchun Sentry Gradle plagini orqali avtomatik instrumentatsiyani ta'minlaydi. Plagin kompilyatsiya bosqichida bayt-kodni o'zgartirib, barcha Activity, Fragment va tarmoq chaqiruvlari uchun o'ramlar qo'shadi. Auto-instrumentation build.gradle da bitta variant bilan yoqiladi va kodni o'zgartirmasdan ilova hayotiy siklidan breadcrumbs olish imkonini beradi.
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
}
}
}
Kod Android ilovasida Sentry SDK-ni ishga tushiradi. tracesSampleRate = 0.2 parametri sessiyalarning 20% i uchun performance tracing-ni yoqadi, enableAutoSessionTracking ilovaning har bir ishga tushirilishi uchun avtomatik sessiyalar yaratadi.
iOS SDK CocoaPods, Swift Package Manager va Carthage-ni qo'llab-quvvatlaydi. O'rnatilgandan so'ng SDK avtomatik ravishda NSException, signallarni (SIGABRT, SIGSEGV) va Swift xatolarini tutadi. Sentry Cocoa SDK iOS 12+ va macOS 10.13+ bilan mos keladi, Swift Concurrency (async/await) va URLSession avtomatik instrumentatsiyasini qo'llab-quvvatlaydi.
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-dagi kod avtomatik samaradorlik ko'rsatkichlarini yig'ish bilan Sentry SDK-ni faollashtiradi. enableAutoPerformanceTracing qo'shimcha kodlarsiz ekranlarning yuklanish vaqti va HTTP so'rovlari monitoringini yoqadi.
Breadcrumbs — xatodan oldingi hodisalarning xronologik ketma-ketligi. Sentry avtomatik ravishda tugmalarni bosish, ekranlar orasidagi o'tishlar, HTTP so'rovlari va tizim bildirishnomalari uchun breadcrumbs yozadi. Dasturchi biznes mantig'i uchun maxsus breadcrumbs qo'shishi mumkin.
Har bir breadcrumb vaqt tamg'asi, hodisa turi (navigation, http, ui, error), kategoriya va ixtiyoriy ma'lumotlarni o'z ichiga oladi. Xato yuz berganda, oxirgi 2–5 daqiqadagi (sozlanishi) barcha breadcrumbs hodisaga biriktiriladi. Bu kontekst ko'pincha stacktrace-ning o'zidan muhimroq: dasturchi foydalanuvchi mahsulotni tanlagandan so'ng “To'lash” tugmasini bosganini va shundan keyin krash sodir bo'lganini ko'radi. Standart bo'yicha maksimal breadcrumbs soni 200 ta, undan keyin eng eski yozuvlar avtomatik o'chiriladi.
Sentry.addBreadcrumb(
Breadcrumb().apply {
category = "payment"
message = "User tapped Pay button"
type = "user"
level = BreadcrumbLevel.INFO
data["amount"] = "19.99"
data["currency"] = "USD"
}
)
Kod to'lov stsenariysida foydalanuvchi harakati uchun maxsus breadcrumb qo'shadi. Agar bu harakatdan keyin xato yuz bersa, dasturchi Sentry-da foydalanuvchi 19.99 USD summa bilan “Pay” tugmasini bosganini ko'radi, bu to'lov oqimida muammoni tez lokalizatsiya qilish imkonini beradi.
Sentry hodisalarga foydalanuvchi haqida ma'lumot biriktirish imkonini beradi: ID, foydalanuvchi nomi, email. User context bir sessiyaning barcha hodisalari bilan avtomatik uzatiladi, xatolarni foydalanuvchilar bo'yicha guruhlash va ma'lum bir bag qancha foydalanuvchiga ta'sir qilganini aniqlash imkonini beradi. Maxfiylik siyosatiga rioya qilish va ilova siyosati ruxsat bermasa, shaxsiy ma'lumotlarni uzatmaslik muhim.
iOS va Android ning ishlab chiqarish versiyalarida kod odatda minimallashtirilgan yoki xiralashtirilgan. Qayta ishlanmasa, xato steki “a.b()” o'rniga “UserViewModel.fetchData()” kabi tushunarsiz nomlarni o'z ichiga oladi. Source maps (JavaScript) va debug symbols (iOS uchun dSYM, Android uchun ProGuard mapping) o'qiladigan stekni tiklaydi.
Android uchun Sentry release versiyasini qurishda Gradle plagini orqali ProGuard mapping fayllarini avtomatik yuklaydi. iOS uchun dSYM fayllarini yuklash talab qilinadi — Sentry arxivlash bosqichida avtomatik yuklash uchun skriptni taqdim etadi. Nosozliklarni tuzatish belgilari bo'lmasa, Sentry-dagi xato steki dasturchi uchun foydasiz bo'ladi, shuning uchun ularni yuklash jarayoni CI/CD pipeline-ning majburiy bosqichi bo'lishi kerak.
2020 versiyasidan boshlab, Sentry samaradorlik monitoringini — distributed tracing bilan tranzaksiyalarning bajarilish vaqti ko'rsatkichlarini yig'ishni o'z ichiga oladi. Sentry-da Transaction — o'lchanadigan ish birligi: ekranni yuklash, API so'rovini bajarish, fon vazifasini qayta ishlash. Har bir tranzaksiya eng ko'p vaqt olgan qadamlarni ko'rsatuvchi bola spannlarni o'z ichiga oladi.
Sentry-da samaradorlik monitoringi error tracking bilan integratsiyalashgan: agar tranzaksiya xato bilan yakunlansa, tegishli span “error” statusi bilan belgilanadi va dasturchi samaradorlik ko'rsatkichidan istisno tafsilotlariga o'tishi mumkin. Trace ID barcha hodisalarni (xatolar, tranzaksiyalar, breadcrumbs) yagona sessiyada bog'laydi, Sentry platformasining yagona dashboardida Issues va Performance yorliqlari o'rtasida uzluksiz o'tishni ta'minlaydi.
Sentry Performance Benchmark (2024) ma'lumotlariga ko'ra, samaradorlik monitoringi yoqilgan ilova (tanlab olish chastotasi 10%) qurilmada 2–5% ko'proq trafik va 1–2% ko'proq CPU resurslarini sarflaydi. Bu yuk qo'lda profillash bilan solishtirganda samaradorlik diagnostikasi vaqtini 70% qisqartirish bilan kompensatsiya qilinadi.
Tez-tez beriladigan savollar
Sentry ko'proq kontekstni taqdim etadi: breadcrumbs, maxsus ma'lumotlar, xatolarning samaradorlik bilan bog'liqligi. Firebase Crashlytics — asosiy crash-reporting bilan bepul vosita, lekin distributed tracing va breadcrumbs maxsus instrumentatsiyasi imkoniyatisiz. Sentry chuqur diagnostika talab qiladigan loyihalar uchun mos keladi.
Sentry oyiga 5 000 ta hodisa (xatolar + tranzaksiyalar) uchun bepul tarifni taklif qiladi. Team pullik tarifi foydalanuvchi boshiga oyiga 26 dollar turadi va 100 000 ta hodisani o'z ichiga oladi. Katta loyihalar uchun cheksiz hajm va individual narx bilan Business tarifi mavjud.
Sentry o'rnatilgan Data Scrubbing mexanizmini taqdim etadi: email, IP manzillar, kredit kartalari va boshqa PII ma'lumotlarini hodisalardan saqlashdan oldin avtomatik olib tashlash. Skrubing qoidalari veb-interfeysda yoki Relay konfiguratsiyasida muntazam ifodalar yordami bilan sozlanadi. Maxfiy ma'lumotlar foydalanuvchi qurilmasini tark etmasligi uchun skrubingni SDK darajasida yoqish tavsiya etiladi.
Ha, Sentry to'liq ochiq kodli self-hosted versiyaga ega. Self-hosted Sentry Docker Compose orqali joylashtiriladi va SaaS versiyasining barcha funksiyalarini o'z ichiga oladi. Minimal server konfiguratsiyasi talab qilinadi: 4 vCPU, 16 GB RAM, hodisalarni saqlash uchun 100 GB disk maydoni.
Ha, Sentry SDK SwiftUI (iOS 13+) va Jetpack Compose (Android) ni to'liq qo'llab-quvvatlaydi. SwiftUI uchun SDK render vaqtini o'lchash bilan NavigationView va List uchun avtomatik tranzaksiyalar yaratadi. Jetpack Compose uchun Composables-ga Sentry kontekstini uzatish uchun CompositionLocalProvider orqali maxsus integratsiya talab qilinadi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.