Bỏ qua tới nội dung
Mục lục

Event, issue và cách xử lý

Lỗi được gom thành issue thế nào, các trạng thái, tìm kiếm, lọc, gán người và lưu trữ.

Bản Markdown
Trong bài này

Một event là một lần báo lỗi từ ứng dụng. Một issue là mọi event có cùng nguyên nhân, được gom lại — một bug xảy ra 3.000 lần là một issue với 3.000 event. Bạn xử lý issue, không xử lý từng event.

Lỗi được gom nhóm thế nào#

Node tính một fingerprint cho mỗi event:

  • Có stack trace: loại exception cộng tối đa 30 frame trong app mới nhất — mỗi frame lấy tên module hoặc file và tên hàm. Không dùng số dòng và cột, nên issue không bị tách khi code thay đổi nhỏ.

  • Không có stack trace: loại exception và message của nó, hoặc chỉ message.

  • Trước khi so sánh, các phần hay thay đổi được chuẩn hoá: UUID, email, địa chỉ IP, số và chuỗi hex dài, đường dẫn tạm và query string trong URL. User 123 not found và User 456 not found thành một issue.

Phiên bản thuật toán gom nhóm (hiện là belvador:2026-10) được lưu trên mỗi issue. Phiên bản sau chỉ áp dụng cho event mới; issue đã có không bao giờ bị gom lại.

Tự đặt cách gom nhóm#

Đặt fingerprint khi cách gom mặc định gộp quá nhiều hoặc tách quá nhỏ:

TypeScript
import { captureException, withScope } from "@belvador/browser";withScope((scope) => {  // Mọi lỗi của một cổng thanh toán thành một issue.  scope.setFingerprint(["payment-provider-down", provider]);  captureException(error);});

Thêm "{{ default }}" vào danh sách để tinh chỉnh cách gom mặc định thay vì thay thế nó.

Trạng thái#

Trạng tháiÝ nghĩa
Chưa xử lýCần xem. Trạng thái con: Mới, Đang diễn ra, Đang tăng, Tái phát
Đã xử lýĐã sửa. Event mới hơn sẽ đưa issue trở lại với trạng thái Tái phát
Lưu trữChủ động ẩn đi, tới khi đạt điều kiện bạn chọn — hoặc vĩnh viễn

Issue Đang tăng khi có ít nhất 10 event trong 60 phút qua và ít nhất gấp năm lần trung bình mỗi giờ của 7 ngày trước đó. Event được đếm khi tới, nên một job báo mọi lần thử lại sẽ chạm ngưỡng này sớm hơn job chỉ báo lần hỏng cuối (thử lại).

Issue cũng có Ưu tiên: Cao, Vừa hoặc Thấp.

Thao tác#

Mở menu thao tác trên một issue, hoặc chọn nhiều issue trong danh sách (tối đa 100 cùng lúc):

Thao tácTác dụng
Xử lý xong ngayĐánh dấu đã sửa. Event sau đó sẽ mở lại issue với trạng thái Tái phát.
Xong ở release tiếp theoChỉ mở lại khi lỗi xuất hiện ở release mới hơn release lúc bạn đánh dấu — dùng khi bản sửa sẽ triển khai sau. Cần đặt release trong SDK.
Mở lạiTrở về Chưa xử lý.
Lưu trữTới khi tăng mạnh, Tới khi có thêm 100 event, Tới khi thêm 10 người bị ảnh hưởng, Trong 24 giờ, Trong 7 ngày hoặc Vĩnh viễn. Khi đạt điều kiện, issue quay lại.
Gán cho tôi / gán cho thành viên / Bỏ gánAi đang xem issue này. Không gán được cho viewer.
Ưu tiênCao, Vừa hoặc Thấp.

Member, admin và owner đổi được issue; viewer chỉ xem.

Tìm issue#

Ô tìm kiếm (bấm / để chuyển tới) tìm chữ trong tiêu đề, culprit, message, giá trị exception và stack trace, không phân biệt hoa thường. Mã ngắn của issue — ví dụ WEB-1Z — mở thẳng issue đó.

Không có ngôn ngữ truy vấn: những từ như is:unresolved hay tag:browser được tìm như chữ thường. Hãy dùng bộ lọc:

Bộ lọcGiá trị
ProjectMột, nhiều hoặc mọi project
Trạng tháiChưa xử lý (mặc định), Đã xử lý, Lưu trữ
Mức độNghiêm trọng, Lỗi, Cảnh báo, Thông tin, Gỡ lỗi
Ưu tiênCao, Vừa, Thấp
Môi trườngMọi môi trường node đã thấy
Người xử lýBất kỳ ai, Tôi, Chưa gán, một thành viên
Khoảng thời gian1 giờ, 24 giờ (mặc định), 7, 14 hoặc 30 ngày
Sắp xếpGần đây nhất (mặc định), Xuất hiện đầu, Số event, Số người, Ưu tiên

Bộ lọc nằm trong địa chỉ trang, nên bạn đánh dấu hoặc chia sẻ được một góc nhìn. Với khoảng thời gian dài, việc tìm trong nội dung event có thể dừng sớm để giữ tốc độ; tiêu đề luôn được tìm đầy đủ, và trang sẽ báo khi điều đó xảy ra.

Chi tiết issue#

  • Stack trace — chọn Trong app, Mọi khung hoặc Thô. Frame từ code đã thu nhỏ có nhãn Bản thu nhỏ cho tới khi source map khôi phục được.

  • Breadcrumb — các bước trước khi lỗi xảy ra, nếu SDK có ghi.

  • Tag và Ngữ cảnh — những gì ứng dụng và SDK gắn vào, sau khi đã lọc.

  • Tệp đính kèm — luôn tải về được. Tệp PNG, JPEG, GIF và WebP, nhận diện theo nội dung byte, còn xem trước được; SVG và mọi loại khác chỉ tải về, không bao giờ mở trong trang.

Mọi thứ trong event đều do một ứng dụng gửi lên và được hiển thị dạng chữ thuần — liên kết từ dữ liệu event mở qua một trang cảnh báo.

Bài viết về chủ đề này

Tất cả bài viết

Thấy chỗ sai hoặc thiếu? Gửi cho chúng tôi: hello@belvador.dev