Sentry — คืออะไร หลักการ และการรวบรวมข้อผิดพลาด

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-05-29 เวลาอ่าน: 8 นาที

Sentry เป็นแพลตฟอร์มติดตามข้อผิดพลาดและตรวจสอบประสิทธิภาพของแอปพลิเคชันแบบเรียลไทม์ที่ให้บริบทที่สมบูรณ์ของแต่ละความผิดพลาดแก่นักพัฒนา ตามข้อมูลจาก Sentry Documentation, 2025 Sentry ประมวลผลมากกว่า 10 พันล้านเหตุการณ์ต่อวัน โดยให้การผสานรวมกับภาษาและเฟรมเวิร์กกว่า 90 รายการสำหรับ iOS, Android, เว็บและแบ็กเอนด์

ประเด็นสำคัญ

  • Sentry เป็นแพลตฟอร์มติดตามข้อผิดพลาดและตรวจสอบประสิทธิภาพแบบโอเพนซอร์สที่รองรับกว่า 90 ภาษาและแพลตฟอร์ม
  • Error events — การรวบรวมข้อยกเว้นอัตโนมัติพร้อมสแต็กเทรซ ค่าตัวแปร และสถานะอุปกรณ์อย่างสมบูรณ์
  • Breadcrumbs — ลำดับการกระทำของผู้ใช้และเหตุการณ์ของระบบก่อนเกิดข้อผิดพลาด
  • Source maps — การถอดรหัสโค้ดที่ถูกบีบอัดเพื่อเรียกคืนสแต็กการเรียกที่อ่านได้ในระบบ production
  • Performance Tracing — การตรวจสอบเวลาดำเนินการของธุรกรรมด้วย distributed tracing ผ่านบริการทั้งหมด

Sentry คืออะไรในการพัฒนา

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 (เซิร์ฟเวอร์พร็อกซี) และแบ็กเอนด์ประมวลผลเหตุการณ์ Sentry SDK คือไลบรารีที่ฝังอยู่ในแอปพลิเคชัน ซึ่งสกัดกั้นข้อยกเว้น รวบรวมบริบท และส่งเหตุการณ์ไปยัง Relay ผ่านโปรโตคอล JSON/HTTPS

Sentry Relay

Relay คือเซิร์ฟเวอร์ตัวกลางที่สามารถปรับใช้ในโครงสร้างพื้นฐานของบริษัท โดยรับเหตุการณ์จาก SDK กรองตามกฎ (ข้อมูล PII เหตุการณ์ที่ไม่จำเป็น) จัดเก็บในบัฟเฟอร์และส่งต่อไปยัง Sentry SaaS หรืออินสแตนซ์ที่โฮสต์เอง Relay รับประกันความหน่วงต่ำ — เวลาในการรับเหตุการณ์ทั่วไปคือ 500–1500 มิลลิวินาที

ตัวกรองข้อมูลขาเข้า

Sentry มีตัวกรองในตัวสำหรับทิ้งเหตุการณ์ที่ไม่ต้องการก่อนส่งไปยังเซิร์ฟเวอร์: ข้อผิดพลาดจากสภาพแวดล้อมทดสอบ ข้อผิดพลาดจากแอปเวอร์ชันเก่า เหตุการณ์ซ้ำที่มีลายนิ้วมือเดียวกัน Filtering ช่วยประหยัดปริมาณข้อมูลได้ถึง 70% ในโปรเจกต์ production ทั่วไป ช่วยลดต้นทุนการบริโภคและโหลดของช่องทางการสื่อสารของอุปกรณ์

การตั้งค่า Sentry SDK สำหรับ iOS และ Android

การติดตั้ง Sentry SDK สำหรับแพลตฟอร์มมือถือใช้เวลา 5–10 นาทีและต้องเพิ่ม dependencies และเริ่มต้นด้วยคีย์ DSN DSN (Data Source Name) คือตัวระบุโปรเจกต์ที่ไม่ซ้ำกันใน Sentry ซึ่งระบุตำแหน่งที่จะส่งเหตุการณ์

การตั้งค่าบน Android

สำหรับ Android Sentry ให้การวัดเครื่องมืออัตโนมัติผ่านปลั๊กอิน Gradle ปลั๊กอินจะปรับเปลี่ยนไบต์โค้ดในขั้นตอนการคอมไพล์ โดยเพิ่ม wrapper สำหรับ Activity, Fragment และการเรียกเครือข่ายทั้งหมด 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
        }
    }
}

โค้ดเริ่มต้น Sentry SDK ในแอปพลิเคชัน 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 เปิดใช้งาน Sentry SDK พร้อมการรวบรวมเมตริกประสิทธิภาพอัตโนมัติ enableAutoPerformanceTracing เปิดใช้งานการตรวจสอบเวลาโหลดหน้าจอและคำขอ HTTP โดยไม่ต้องใช้โค้ดเพิ่มเติม

Breadcrumbs คือลำดับเหตุการณ์ตามลำดับเวลาที่เกิดขึ้นก่อนข้อผิดพลาด Sentry จะบันทึก breadcrumbs โดยอัตโนมัติสำหรับการกดปุ่ม การเปลี่ยนหน้าจอ คำขอ HTTP และการแจ้งเตือนของระบบ นักพัฒนาสามารถเพิ่ม breadcrumbs ที่กำหนดเองสำหรับตรรกะทางธุรกิจ

แต่ละ breadcrumb ประกอบด้วยการประทับเวลา ประเภทเหตุการณ์ (navigation, http, ui, error) หมวดหมู่และข้อมูลที่กำหนดเอง เมื่อเกิดข้อผิดพลาด breadcrumbs ทั้งหมดในช่วง 2–5 นาทีที่ผ่านมา (ปรับแต่งได้) จะถูกแนบไปกับเหตุการณ์ บริบทนี้มักจะสำคัญกว่าสแต็กเทรซเอง: นักพัฒนาจะเห็นว่าผู้ใช้คลิก “ชำระเงิน” หลังจากเลือกสินค้า และจากนั้นจึงเกิดความผิดพลาด จำนวน 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 ว่าผู้ใช้คลิก “ชำระเงิน” ด้วยจำนวนเงิน 19.99 USD ซึ่งช่วยระบุปัญหาอย่างรวดเร็วในขั้นตอนการชำระเงิน

บริบทของผู้ใช้

Sentry อนุญาตให้แนบข้อมูลผู้ใช้กับเหตุการณ์: ID ชื่อผู้ใช้ อีเมล User context จะถูกส่งโดยอัตโนมัติพร้อมกับเหตุการณ์ทั้งหมดจากเซสชันเดียวกัน ช่วยให้จัดกลุ่มข้อผิดพลาดตามผู้ใช้และระบุจำนวนผู้ใช้ที่ได้รับผลกระทบจากบั๊กเฉพาะ การปฏิบัติตามนโยบายความเป็นส่วนตัวเป็นสิ่งสำคัญและไม่ส่งข้อมูลส่วนบุคคลหากนโยบายของแอปพลิเคชันไม่อนุญาต

Source maps และสัญลักษณ์การดีบัก

ในบิลด์ 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

การตรวจสอบประสิทธิภาพผ่าน Sentry

ตั้งแต่เวอร์ชัน 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 แตกต่างจาก Firebase Crashlytics อย่างไร

Sentry ให้บริบทมากกว่า: breadcrumbs ข้อมูลที่กำหนดเอง การเชื่อมโยงข้อผิดพลาดกับประสิทธิภาพ Firebase Crashlytics เป็นเครื่องมือฟรีที่มีการรายงานความผิดพลาดพื้นฐาน แต่ไม่มี distributed tracing และไม่มีความสามารถในการวัดเครื่องมือ 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 และแบ็กเอนด์ประมวลผลเหตุการณ์ที่รองรับการปรับใช้แบบโฮสต์เองและ SaaS
  • Breadcrumbs ให้ลำดับเวลาของการกระทำของผู้ใช้ก่อนเกิดข้อผิดพลาด ซึ่งสำคัญอย่างยิ่งสำหรับการวินิจฉัยบั๊กที่ซับซ้อน
  • Source maps และ dSYM เรียกคืนสแต็กการเรียกที่อ่านได้จากโค้ด production ที่ถูกทำให้สับสน
  • Performance Tracing ถูกรวมเข้ากับการติดตามข้อผิดพลาด ช่วยให้นำทางจากเมตริกเวลาไปยังรายละเอียดข้อผิดพลาดผ่าน trace ID เดียว
  • Auto-instrumentation ครอบคลุม Activity, ViewController, คำขอ HTTP และวงจรชีวิตของแอปพลิเคชันโดยไม่ต้องใช้โค้ดด้วยตนเอง
  • แนะนำให้นำ Sentry ไปใช้กับแอปพลิเคชัน production ใด ๆ: แผนฟรีครอบคลุม 5,000 เหตุการณ์ต่อเดือน เพียงพอสำหรับโปรเจกต์ขนาดเล็กและขนาดกลาง

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม