Sentry เป็นแพลตฟอร์มติดตามข้อผิดพลาดและตรวจสอบประสิทธิภาพของแอปพลิเคชันแบบเรียลไทม์ที่ให้บริบทที่สมบูรณ์ของแต่ละความผิดพลาดแก่นักพัฒนา ตามข้อมูลจาก Sentry Documentation, 2025 Sentry ประมวลผลมากกว่า 10 พันล้านเหตุการณ์ต่อวัน โดยให้การผสานรวมกับภาษาและเฟรมเวิร์กกว่า 90 รายการสำหรับ iOS, Android, เว็บและแบ็กเอนด์
ประเด็นสำคัญ
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 ผ่านโปรโตคอล JSON/HTTPS
Relay คือเซิร์ฟเวอร์ตัวกลางที่สามารถปรับใช้ในโครงสร้างพื้นฐานของบริษัท โดยรับเหตุการณ์จาก SDK กรองตามกฎ (ข้อมูล PII เหตุการณ์ที่ไม่จำเป็น) จัดเก็บในบัฟเฟอร์และส่งต่อไปยัง Sentry SaaS หรืออินสแตนซ์ที่โฮสต์เอง Relay รับประกันความหน่วงต่ำ — เวลาในการรับเหตุการณ์ทั่วไปคือ 500–1500 มิลลิวินาที
Sentry มีตัวกรองในตัวสำหรับทิ้งเหตุการณ์ที่ไม่ต้องการก่อนส่งไปยังเซิร์ฟเวอร์: ข้อผิดพลาดจากสภาพแวดล้อมทดสอบ ข้อผิดพลาดจากแอปเวอร์ชันเก่า เหตุการณ์ซ้ำที่มีลายนิ้วมือเดียวกัน Filtering ช่วยประหยัดปริมาณข้อมูลได้ถึง 70% ในโปรเจกต์ production ทั่วไป ช่วยลดต้นทุนการบริโภคและโหลดของช่องทางการสื่อสารของอุปกรณ์
การติดตั้ง Sentry SDK สำหรับแพลตฟอร์มมือถือใช้เวลา 5–10 นาทีและต้องเพิ่ม dependencies และเริ่มต้นด้วยคีย์ DSN DSN (Data Source Name) คือตัวระบุโปรเจกต์ที่ไม่ซ้ำกันใน Sentry ซึ่งระบุตำแหน่งที่จะส่งเหตุการณ์
สำหรับ Android Sentry ให้การวัดเครื่องมืออัตโนมัติผ่านปลั๊กอิน Gradle ปลั๊กอินจะปรับเปลี่ยนไบต์โค้ดในขั้นตอนการคอมไพล์ โดยเพิ่ม wrapper สำหรับ Activity, Fragment และการเรียกเครือข่ายทั้งหมด Auto-instrumentation เปิดใช้งานด้วยตัวเลือกเดียวใน build.gradle และช่วยให้รับ breadcrumbs จากวงจรชีวิตของแอปพลิเคชันได้โดยไม่ต้องเปลี่ยนโค้ด
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 สร้างเซสชันโดยอัตโนมัติสำหรับแต่ละการเริ่มแอป
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
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 รายการ หลังจากนั้นบันทึกที่เก่าที่สุดจะถูกลบออกโดยอัตโนมัติ
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 อนุญาตให้แนบข้อมูลผู้ใช้กับเหตุการณ์: ID ชื่อผู้ใช้ อีเมล User context จะถูกส่งโดยอัตโนมัติพร้อมกับเหตุการณ์ทั้งหมดจากเซสชันเดียวกัน ช่วยให้จัดกลุ่มข้อผิดพลาดตามผู้ใช้และระบุจำนวนผู้ใช้ที่ได้รับผลกระทบจากบั๊กเฉพาะ การปฏิบัติตามนโยบายความเป็นส่วนตัวเป็นสิ่งสำคัญและไม่ส่งข้อมูลส่วนบุคคลหากนโยบายของแอปพลิเคชันไม่อนุญาต
ในบิลด์ production ของ iOS และ Android โค้ดมักจะถูกบีบอัดหรือทำให้สับสน หากไม่มีการประมวลผล สแต็กข้อผิดพลาดจะประกอบด้วยชื่อที่ไม่เข้าใจเช่น “a.b()” แทน “UserViewModel.fetchData()” Source maps (JavaScript) และ debug symbols (dSYM สำหรับ iOS, ProGuard mapping สำหรับ Android) จะเรียกคืนสแต็กที่อ่านได้
สำหรับ Android Sentry จะอัปโหลดไฟล์ ProGuard mapping โดยอัตโนมัติผ่านปลั๊กอิน Gradle ในระหว่างการสร้างเวอร์ชัน release สำหรับ iOS จำเป็นต้องอัปโหลดไฟล์ dSYM — Sentry มีสคริปต์สำหรับการอัปโหลดอัตโนมัติในระหว่างการเก็บถาวร หากไม่มีสัญลักษณ์การดีบัก สแต็กข้อผิดพลาดใน Sentry จะไร้ประโยชน์สำหรับนักพัฒนา ดังนั้นกระบวนการอัปโหลดจึงควรเป็นขั้นตอนบังคับในไปป์ไลน์ CI/CD
ตั้งแต่เวอร์ชัน 2020 Sentry รวมการตรวจสอบประสิทธิภาพ — การรวบรวมเมตริกเวลาดำเนินการของธุรกรรมด้วย distributed tracing Transaction ใน Sentry คือหน่วยของงานที่วัดได้: การโหลดหน้าจอ การดำเนินการขอ API การประมวลผลงานเบื้องหลัง แต่ละธุรกรรมประกอบด้วย child spans ที่แสดงว่าขั้นตอนใดใช้เวลามากที่สุด
การตรวจสอบประสิทธิภาพใน Sentry ถูกรวมเข้ากับการติดตามข้อผิดพลาด: หากธุรกรรมสิ้นสุดด้วยข้อผิดพลาด span ที่เกี่ยวข้องจะถูกทำเครื่องหมายด้วยสถานะ “error” และนักพัฒนาสามารถนำทางจากเมตริกประสิทธิภาพไปยังรายละเอียดของข้อยกเว้น Trace ID เชื่อมโยงเหตุการณ์ทั้งหมด (ข้อผิดพลาด ธุรกรรม breadcrumbs) เป็นเซสชันเดียวสำหรับการวิเคราะห์แบบ end-to-end ทำให้การเปลี่ยนแท็บระหว่าง Issues และ Performance ในแดชบอร์ด Sentry เดียวเป็นไปอย่างราบรื่น
ตามข้อมูลของ Sentry Performance Benchmark (2024) แอปพลิเคชันที่เปิดการตรวจสอบประสิทธิภาพ (อัตราการสุ่ม 10%) ใช้ปริมาณการใช้งานเพิ่มขึ้น 2–5% และทรัพยากร CPU เพิ่มขึ้น 1–2% บนอุปกรณ์ ภาระนี้ชดเชยด้วยการลดเวลาในการวินิจฉัยประสิทธิภาพลง 70% เมื่อเทียบกับการสร้างโปรไฟล์ด้วยตนเอง
คำถามที่พบบ่อย
Sentry ให้บริบทมากกว่า: breadcrumbs ข้อมูลที่กำหนดเอง การเชื่อมโยงข้อผิดพลาดกับประสิทธิภาพ Firebase Crashlytics เป็นเครื่องมือฟรีที่มีการรายงานความผิดพลาดพื้นฐาน แต่ไม่มี distributed tracing และไม่มีความสามารถในการวัดเครื่องมือ breadcrumbs ที่กำหนดเอง Sentry เหมาะสำหรับโปรเจกต์ที่ต้องการการวินิจฉัยเชิงลึก
Sentry เสนอแผนฟรีพร้อม 5,000 เหตุการณ์ต่อเดือน (ข้อผิดพลาด + ธุรกรรม) แผน Team แบบชำระเงินราคา 26 ดอลลาร์ต่อผู้ใช้ต่อเดือนและรวม 100,000 เหตุการณ์ สำหรับโปรเจกต์ขนาดใหญ่ มีแผน Business ที่มีปริมาณไม่จำกัดและราคาที่กำหนดเอง
Sentry มีกลไก Data Scrubbing ในตัว: การลบอีเมล ที่อยู่ IP บัตรเครดิตและข้อมูล PII อื่น ๆ โดยอัตโนมัติจากเหตุการณ์ก่อนการจัดเก็บ กฎการล้างข้อมูลถูกกำหนดค่าในอินเทอร์เฟซเว็บหรือในการกำหนดค่า Relay ด้วยการสนับสนุนนิพจน์ทั่วไป ขอแนะนำให้เปิดใช้งานการล้างข้อมูลที่ระดับ SDK เพื่อให้ข้อมูลที่เป็นความลับไม่ออกจากอุปกรณ์ของผู้ใช้
ได้ Sentry มีเวอร์ชันโฮสต์เองแบบโอเพนซอร์สเต็มรูปแบบ Self-hosted Sentry ถูกปรับใช้ผ่าน Docker Compose และรวมคุณสมบัติทั้งหมดของเวอร์ชัน SaaS การกำหนดค่าเซิร์ฟเวอร์ขั้นต่ำที่ต้องการ: 4 vCPU, 16 GB RAM, พื้นที่ดิสก์ 100 GB สำหรับจัดเก็บเหตุการณ์
ได้ Sentry SDK รองรับ SwiftUI (iOS 13+) และ Jetpack Compose (Android) อย่างสมบูรณ์ สำหรับ SwiftUI SDK จะสร้างธุรกรรมโดยอัตโนมัติสำหรับ NavigationView และ List พร้อมการวัดเวลาเรนเดอร์ สำหรับ Jetpack Compose จำเป็นต้องมีการผสานรวมแบบกำหนดเองผ่าน CompositionLocalProvider เพื่อส่งบริบท Sentry ไปยัง Composables
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม