Sentry — nó là gì, nguyên lý và thu thập lỗi

Tác giả: IT Sectr Đã đăng: 2026-05-29 Thời gian đọc: 8 phút

Sentry là nền tảng theo dõi lỗi và giám sát hiệu suất ứng dụng theo thời gian thực, cung cấp cho nhà phát triển bối cảnh đầy đủ của mỗi sự cố. Theo Sentry Documentation, 2025, Sentry xử lý hơn 10 tỷ sự kiện mỗi ngày, cung cấp tích hợp với hơn 90 ngôn ngữ và framework cho iOS, Android, web và backend.

Những điểm chính

  • Sentry là nền tảng theo dõi lỗi và giám sát hiệu suất mã nguồn mở, hỗ trợ hơn 90 ngôn ngữ và nền tảng.
  • Error events — tự động thu thập ngoại lệ với stack trace đầy đủ, giá trị biến và trạng thái thiết bị.
  • Breadcrumbs — chuỗi hành động của người dùng và sự kiện hệ thống trước khi xảy ra lỗi.
  • Source maps — giải mã mã đã được nén để khôi phục stack gọi có thể đọc được trong môi trường production.
  • Performance Tracing — giám sát thời gian thực thi giao dịch với distributed tracing qua tất cả dịch vụ.

Sentry là gì trong phát triển

Sentry là nền tảng mã nguồn mở để báo cáo sự cố và giám sát hiệu suất, được thành lập vào năm 2012. Nó cho phép nhà phát triển nhận thông báo lỗi theo thời gian thực với bối cảnh chẩn đoán đầy đủ: stack gọi, giá trị biến tại thời điểm sự cố, chuỗi hành động của người dùng trước khi xảy ra lỗi và trạng thái môi trường.

Không giống như các dịch vụ báo cáo sự cố tổng hợp (Google Play Console, App Store Connect), chỉ cung cấp thống kê và biểu đồ cơ bản, Sentry hiển thị từng sự kiện riêng lẻ với khả năng nhóm theo loại lỗi và lọc theo phiên bản ứng dụng. Issue trong Sentry là một nhóm sự kiện có cùng stack trace, cho phép bạn không bị chìm đắm trong hàng nghìn sự cố giống hệt nhau mà tập trung vào việc sửa nguyên nhân gốc với bối cảnh đầy đủ.

Theo Sentry (2025), thời gian phát hiện lỗi trung bình giảm từ 30 phút xuống 30 giây sau khi triển khai Sentry SDK và thời gian chẩn đoán giảm 60% nhờ breadcrumbs tự động và bối cảnh môi trường. Nền tảng này được hơn 100.000 tổ chức trên toàn thế giới sử dụng, bao gồm Airbnb, Microsoft, Instagram và PayPal, xử lý hàng tỷ sự kiện mỗi ngày.

Kiến trúc Sentry: SDK, Relay và xử lý sự kiện

Hệ thống Sentry bao gồm ba thành phần chính: SDK ở phía ứng dụng, Relay (máy chủ proxy) và backend xử lý sự kiện. Sentry SDK là thư viện được nhúng vào ứng dụng, có nhiệm vụ chặn các ngoại lệ, thu thập bối cảnh và gửi sự kiện đến Relay qua giao thức JSON/HTTPS.

Sentry Relay

Relay là máy chủ trung gian có thể được triển khai trong cơ sở hạ tầng của công ty. Nó nhận sự kiện từ SDK, lọc theo quy tắc (dữ liệu PII, sự kiện không cần thiết), đệm và chuyển tiếp đến Sentry SaaS hoặc phiên bản tự lưu trữ. Relay đảm bảo độ trễ thấp — thời gian nhận sự kiện điển hình là 500–1500 ms.

Bộ lọc dữ liệu đến

Sentry cung cấp bộ lọc tích hợp để loại bỏ các sự kiện không mong muốn trước khi gửi đến máy chủ: lỗi từ môi trường thử nghiệm, lỗi từ phiên bản ứng dụng cũ, sự kiện trùng lặp có cùng dấu vân tay. Filtering tiết kiệm đến 70% khối lượng dữ liệu trong một dự án production điển hình, giảm chi phí tiêu thụ và tải kênh liên lạc của thiết bị.

Thiết lập Sentry SDK cho iOS và Android

Cài đặt Sentry SDK cho nền tảng di động mất 5–10 phút và yêu cầu thêm phụ thuộc và khởi tạo với khóa DSN. DSN (Data Source Name) là định danh dự án duy nhất trong Sentry, cho biết nơi gửi sự kiện.

Thiết lập trên Android

Đối với Android, Sentry cung cấp công cụ tự động thông qua plugin Gradle. Plugin này sửa đổi mã byte ở giai đoạn biên dịch, thêm wrapper cho tất cả Activity, Fragment và lệnh gọi mạng. Auto-instrumentation được bật bằng một tùy chọn trong build.gradle và cho phép nhận breadcrumbs từ vòng đời ứng dụng mà không cần thay đổi mã.

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
        }
    }
}

Mã khởi tạo Sentry SDK trong ứng dụng Android. Tham số tracesSampleRate = 0.2 bật tính năng theo dõi hiệu suất cho 20% phiên, enableAutoSessionTracking tự động tạo phiên cho mỗi lần khởi chạy ứng dụng.

Thiết lập trên iOS

SDK cho iOS hỗ trợ CocoaPods, Swift Package Manager và Carthage. Sau khi cài đặt, SDK tự động chặn NSException, tín hiệu (SIGABRT, SIGSEGV) và lỗi Swift. Sentry Cocoa SDK tương thích với iOS 12+ và macOS 10.13+, hỗ trợ Swift Concurrency (async/await) và công cụ tự động của 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
    }
}

Mã Swift kích hoạt Sentry SDK với tính năng tự động thu thập số liệu hiệu suất. enableAutoPerformanceTracing bật giám sát thời gian tải màn hình và yêu cầu HTTP mà không cần mã bổ sung.

Breadcrumbs là chuỗi thời gian của các sự kiện xảy ra trước lỗi. Sentry tự động ghi lại breadcrumbs cho các lần nhấn nút, chuyển đổi màn hình, yêu cầu HTTP và thông báo hệ thống. Nhà phát triển có thể thêm breadcrumbs tùy chỉnh cho logic nghiệp vụ.

Mỗi breadcrumb chứa dấu thời gian, loại sự kiện (navigation, http, ui, error), danh mục và dữ liệu tùy ý. Khi lỗi xảy ra, tất cả breadcrumbs trong 2–5 phút qua (có thể cấu hình) sẽ được đính kèm vào sự kiện. Bối cảnh này thường quan trọng hơn chính stack trace: nhà phát triển thấy rằng người dùng đã nhấp vào “Thanh toán” sau khi chọn sản phẩm và chỉ sau đó sự cố mới xảy ra. Số lượng breadcrumbs tối đa mặc định là 200, sau đó các bản ghi cũ nhất sẽ tự động bị xóa.

kotlin
Sentry.addBreadcrumb(
    Breadcrumb().apply {
        category = "payment"
        message = "User tapped Pay button"
        type = "user"
        level = BreadcrumbLevel.INFO
        data["amount"] = "19.99"
        data["currency"] = "USD"
    }
)

Mã thêm breadcrumb tùy chỉnh cho hành động của người dùng trong kịch bản thanh toán. Nếu lỗi xảy ra sau hành động này, nhà phát triển sẽ thấy trong Sentry rằng người dùng đã nhấp vào “Thanh toán” với số tiền 19,99 USD, cho phép xác định nhanh vấn đề trong luồng thanh toán.

Bối cảnh người dùng

Sentry cho phép đính kèm thông tin người dùng vào sự kiện: ID, tên người dùng, email. User context được tự động gửi cùng với tất cả sự kiện từ cùng một phiên, cho phép nhóm lỗi theo người dùng và xác định số lượng người dùng bị ảnh hưởng bởi một lỗi cụ thể. Điều quan trọng là phải tuân thủ chính sách bảo mật và không gửi dữ liệu cá nhân nếu chính sách ứng dụng không cho phép.

Source maps và ký hiệu gỡ lỗi

Trong các bản build production của iOS và Android, mã thường được nén hoặc làm rối. Nếu không xử lý, stack lỗi sẽ chứa các tên khó hiểu như “a.b()” thay vì “UserViewModel.fetchData()”. Source maps (JavaScript) và debug symbols (dSYM cho iOS, ProGuard mapping cho Android) khôi phục stack có thể đọc được.

Đối với Android, Sentry tự động tải lên tệp ProGuard mapping qua plugin Gradle trong quá trình xây dựng bản phát hành. Đối với iOS, cần tải lên tệp dSYM — Sentry cung cấp tập lệnh để tải lên tự động trong quá trình lưu trữ. Nếu không có ký hiệu gỡ lỗi, stack lỗi trong Sentry sẽ vô dụng đối với nhà phát triển, vì vậy quá trình tải chúng lên phải là bước bắt buộc trong quy trình CI/CD.

Giám sát hiệu suất qua Sentry

Kể từ phiên bản 2020, Sentry bao gồm giám sát hiệu suất — thu thập số liệu thời gian thực thi giao dịch với distributed tracing. Transaction trong Sentry là một đơn vị công việc có thể đo lường: tải màn hình, thực thi yêu cầu API, xử lý tác vụ nền. Mỗi giao dịch chứa các span con cho thấy bước cụ thể nào mất nhiều thời gian nhất.

Giám sát hiệu suất trong Sentry được tích hợp với theo dõi lỗi: nếu một giao dịch kết thúc bằng lỗi, span tương ứng được đánh dấu trạng thái “error” và nhà phát triển có thể điều hướng từ số liệu hiệu suất đến chi tiết ngoại lệ. Trace ID liên kết tất cả sự kiện (lỗi, giao dịch, breadcrumbs) thành một phiên duy nhất để phân tích đầu cuối, cung cấp chuyển đổi liền mạch giữa các tab Issues và Performance trong một bảng điều khiển Sentry duy nhất.

Theo Sentry Performance Benchmark (2024), ứng dụng bật giám sát hiệu suất (tỷ lệ lấy mẫu 10%) tiêu thụ nhiều hơn 2–5% lưu lượng và 1–2% tài nguyên CPU trên thiết bị. Chi phí này được bù đắp bằng việc giảm 70% thời gian chẩn đoán hiệu suất so với phân tích thủ công.

Câu hỏi thường gặp

Sentry khác gì so với Firebase Crashlytics?

Sentry cung cấp nhiều bối cảnh hơn: breadcrumbs, dữ liệu tùy chỉnh, liên kết lỗi với hiệu suất. Firebase Crashlytics là công cụ miễn phí với báo cáo sự cố cơ bản nhưng không có distributed tracing và không có khả năng công cụ breadcrumbs tùy chỉnh. Sentry phù hợp cho các dự án cần chẩn đoán sâu.

Sentry có giá bao nhiêu cho ứng dụng di động?

Sentry cung cấp gói miễn phí với 5.000 sự kiện mỗi tháng (lỗi + giao dịch). Gói Team trả phí có giá 26 đô la mỗi người dùng mỗi tháng và bao gồm 100.000 sự kiện. Đối với các dự án lớn, gói Business với khối lượng không giới hạn và giá tùy chỉnh có sẵn.

Sentry xử lý dữ liệu cá nhân trong lỗi như thế nào?

Sentry cung cấp cơ chế Data Scrubbing tích hợp: tự động xóa email, địa chỉ IP, thẻ tín dụng và dữ liệu PII khác khỏi sự kiện trước khi lưu trữ. Các quy tắc làm sạch được cấu hình trong giao diện web hoặc trong cấu hình Relay với hỗ trợ biểu thức chính quy. Nên bật tính năng làm sạch ở cấp SDK để dữ liệu bảo mật không rời khỏi thiết bị của người dùng.

Có thể chạy Sentry trên máy chủ riêng không?

Có, Sentry có phiên bản tự lưu trữ hoàn toàn mã nguồn mở. Self-hosted Sentry được triển khai qua Docker Compose và bao gồm tất cả tính năng của phiên bản SaaS. Cấu hình máy chủ tối thiểu yêu cầu: 4 vCPU, 16 GB RAM, 100 GB dung lượng đĩa để lưu trữ sự kiện.

Sentry có hỗ trợ SwiftUI và Jetpack Compose không?

Có, Sentry SDK hỗ trợ đầy đủ SwiftUI (iOS 13+) và Jetpack Compose (Android). Đối với SwiftUI, SDK tự động tạo giao dịch cho NavigationView và List với đo thời gian kết xuất. Đối với Jetpack Compose, cần tích hợp tùy chỉnh qua CompositionLocalProvider để truyền bối cảnh Sentry vào Composables.

Tóm tắt

  • Sentry là nền tảng mã nguồn mở theo dõi lỗi và giám sát hiệu suất được hơn 100.000 tổ chức sử dụng.
  • Kiến trúc bao gồm SDK thiết bị, proxy Relay và backend xử lý sự kiện với hỗ trợ triển khai tự lưu trữ và SaaS.
  • Breadcrumbs cung cấp trình tự thời gian hành động của người dùng trước lỗi, rất quan trọng để chẩn đoán lỗi phức tạp.
  • Source maps và dSYM khôi phục stack gọi có thể đọc được từ mã production đã làm rối.
  • Performance Tracing được tích hợp với theo dõi lỗi, cho phép điều hướng từ số liệu thời gian đến chi tiết lỗi qua một trace ID duy nhất.
  • Auto-instrumentation bao phủ Activity, ViewController, yêu cầu HTTP và vòng đời ứng dụng mà không cần mã thủ công.
  • Khuyến nghị triển khai Sentry cho bất kỳ ứng dụng production nào: gói miễn phí bao gồm 5.000 sự kiện mỗi tháng, đủ cho các dự án nhỏ và vừa.

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm