Mục lục

Monitoring & Logging: Sentry Integration

Làm sao biết code lỗi trên máy user? Hướng dẫn tích hợp Sentry vào Next.js. Source Maps là gì? Breadcrumbs giúp debug như thế nào?

Trên localhost, bạn thấy lỗi đỏ lòm trong Terminal. Trên Production, user thấy màn hình trắng và bỏ đi. Bạn không biết gì cả. Bạn cần Sentry.

1. Tại sao cần Sentry?

  • Real-time Alert: Nhận email ngay khi có lỗi mới.
  • Context: Biết lỗi xảy ra trên trình duyệt nào, OS nào, User ID nào.
  • Breadcrumbs: Hành trình của user trước khi lỗi (Click nút A -> Nhập form B -> LỖI).
  • Source Maps: Dịch code minify loằng ngoằng (at a.b (xc.js:1:2)) về đúng dòng code gốc (App.tsx:25).

2. Setup Sentry cho Next.js

bash:
npx @sentry/wizard@latest -i nextjs

Lệnh này tự động cấu hình next.config.js và tạo các file khởi tạo sentry.client.config.ts, sentry.server.config.ts.

3. Capture Error thủ công

Đôi khi Sentry không tự bắt được (ví dụ lỗi trong try/catch mà bạn lỡ nuốt mất). Hãy báo cáo thủ công:

ts:
import * as Sentry from "@sentry/nextjs";

try {
  await paymentProcess();
} catch (error) {
  // Capture lỗi kèm thêm thông tin
  Sentry.captureException(error, {
    extra: {
      cartId: '123',
      amount: 50000
    },
    user: {
      email: user.email
    }
  });

  // Sau đó hiện UI lỗi cho user
  showErrorToast();
}

4. Performance Monitoring

Sentry cũng đo được Core Web VitalsBackend Transaction Time. Bạn sẽ biết API /api/users chậm là do SQL Query lâu hay do Next.js render lâu.

Kết luận

"Không có log = Không có lỗi" là tư duy sai lầm. "Có log = Có cơ hội sửa trước khi khách hàng phàn nàn" mới là tư duy chuyên nghiệp.

Quảng cáo
mdhorizontal