Monitor: biết khi việc chạy ngầm hỏng hoặc không chạy
Monitor theo dõi cron job, hàng đợi và worker: lượt chạy lỗi, quá giờ, chưa rõ kết quả hoặc không chạy đúng hạn đều mở sự cố.
Trong bài này
Lỗi cho bạn biết khi code ném exception. Lỗi không cho biết một job đêm qua đã không chạy, một worker hàng đợi đã chết, hay một lần nhập dữ liệu kết thúc mà không ai biết đã xong hay chưa. Monitor theo dõi một việc chạy ngầm và mở sự cố khi một lượt chạy có vấn đề — kể cả lượt không hề diễn ra.
Không muốn dùng SDK? Monitor ping URL canh mọi cron job hay bộ hẹn giờ chỉ bằng một URL bí mật, và vẫn báo động khi app hoặc node của bạn đã sập.
| Monitor check-in | Ping URL | Kiểm tra uptime | |
|---|---|---|---|
| Ai gửi | Job của bạn, qua SDK hoặc HTTP | Job của bạn, bằng một lệnh gọi HTTP | Máy kiểm của Belvador gọi URL của bạn |
| Bắt được | Lượt bị lỡ, lượt lỗi, lượt chạy quá lâu | Lượt bị lỡ, lượt lỗi, lượt chạy quá lâu | Trang hay cổng bị sập, chậm, trả sai hoặc chứng chỉ sắp hết hạn |
| Ai đánh giá | Node của bạn | Dịch vụ giám sát của Belvador | Dịch vụ giám sát của Belvador, từ ba vùng |
| Khi node của bạn sập | Ghi Không quan sát được; lượt lỡ thật được báo trễ | Vẫn báo | Vẫn báo |
Monitor hoạt động thế nào#
Job của bạn gửi một check-in ngắn tới Belvador khi bắt đầu và khi kết thúc. Node của bạn so các check-in đó với điều monitor chờ đợi và cứ 15 giây lại quyết định từng lượt chạy có ổn không.
Check-in không phải event lỗi và không bao giờ tạo issue. Lỗi job ném ra vẫn thành issue như thường, có liên kết với lượt chạy nơi nó xảy ra.
Monitor thuộc từng project. Slug (ví dụ
nightly-invoices) là tên code dùng để gọi monitor; không đổi được về sau.Check-in đến từ máy chủ, worker, CI hoặc shell. Trình duyệt không gửi được.
Ba kiểu lịch#
| Kiểu | Dùng cho | Khi nào tính là trễ |
|---|---|---|
| Theo lịch cron | Job theo giờ cố định: 0 2 * * * = mỗi ngày lúc 02:00, theo múi giờ bạn chọn | Tới giờ hẹn cộng biên độ mà chưa có check-in |
| Theo chu kỳ | Worker và heartbeat cần báo đều đặn | Quá N kể từ check-in gần nhất, cộng biên độ |
| Theo sự kiện | Việc do sự kiện khởi động (webhook, một nút bấm) | Không bao giờ trễ — chỉ tính lỗi và quá giờ |
Lịch cron đi theo việc đổi giờ của múi giờ: job 02:30 vào đêm đồng hồ nhảy qua 02:30 sẽ đến hạn muộn một giờ, lúc 03:30, còn giờ bị lặp chỉ chạy một lần. Form tạo monitor hiện 5 hạn kế tiếp để bạn kiểm tra.
Một lượt chạy có thể kết thúc thế nào#
| Kết quả | Ý nghĩa | Tính là |
|---|---|---|
| Thành công | Job làm xong việc | Khoẻ |
| Bỏ qua | Job có chạy nhưng không có việc gì (code của bạn báo vậy) | Khoẻ |
| Lỗi | Job báo lỗi hoặc ném exception | Hỏng |
| Quá giờ | Đã bắt đầu nhưng không xong trong thời gian chạy tối đa | Hỏng |
| Bị lỡ | Không có check-in đúng hạn | Hỏng |
| Chưa rõ kết quả | Job kết thúc nhưng không biết việc đã có hiệu lực chưa — ví dụ nhà cung cấp thanh toán hết thời gian chờ sau khi đã gửi yêu cầu | Cần xem lại |
Lần thử lại thuộc cùng một lượt chạy: ba lần thử mà lần cuối thành công là một lượt khoẻ với ba lần thử, không phải hai lần hỏng.
Giới hạn của mỗi monitor#
| Thiết lập | Mặc định | Khoảng |
|---|---|---|
| Biên độ — check-in được phép trễ bao lâu | 5 phút | 1–1440 phút |
| Thời gian chạy tối đa — quá mức này lượt đã bắt đầu tính là quá giờ | 30 phút | 1–10080 phút (7 ngày) |
| Số lần hỏng trước khi mở sự cố | 1 | 1–720 |
| Số lần ổn trước khi đóng sự cố | 1 | 1–720 |
| Môi trường cần theo dõi | production | tối đa 10 |
Môi trường#
Monitor theo dõi các môi trường bạn liệt kê (mặc định production). Check-in từ môi trường khác — staging, development — vẫn được ghi và hiện ở tab riêng, nhưng lượt lỡ ở đó không bao giờ mở sự cố. Vì vậy máy tính tắt qua đêm không đánh thức ai cả.
Sự cố và cảnh báo#
Một sự cố mở khi monitor bắt đầu hỏng và đóng khi ổn lại. Quy tắc cảnh báo mặc định Sự cố monitor gửi đúng một tin khi mở và một tin khi đóng, tới mọi đích đang hoạt động của workspace — xem Cảnh báo. Bạn có thể tắt tiếng riêng một monitor: sự cố vẫn mở trên trang nhưng không gửi tin.
Cần xem lại có màu hổ phách, không phải đỏ: cần một người kiểm xem việc đã diễn ra chưa. Mở lượt chạy, kiểm hệ thống của bạn, rồi bấm Đánh dấu đã xem.
Khi Belvador không nhìn thấy#
Nếu node mất kết nối, đang bắt kịp sau khi kết nối lại, hoặc check-in bị giới hạn tốc độ, monitor ghi Không quan sát được thay vì Bị lỡ. Belvador không bao giờ coi một lượt là bị lỡ trong khoảng thời gian nó không thể theo dõi. Khi node trở lại, nó chờ tối đa 10 phút để nhận các check-in đang đợi ở edge rồi mới đánh giá, nên lượt chạy diễn ra lúc node vắng hiện đúng giờ; lượt thật sự không chạy sẽ được báo kèm "phát hiện trễ".
App của bạn không bị chậm vì việc này: check-in gửi nền với hàng đợi nhỏ, và khi Belvador gặp sự cố thì check-in chỉ bị bỏ và được đếm lại.
Bước tiếp theo#
Gắn monitor bằng SDK Belvador (TanStack Start, Cloudflare Workers)
Check-in qua HTTP cho shell, CI và mọi ngôn ngữ
SDK Sentry khác (Python, Node.js, …)
Thấy chỗ sai hoặc thiếu? Gửi cho chúng tôi: hello@belvador.dev