Sản phẩm
Theo dõi cron job, kể cả lần chạy không hề xảy ra
Theo dõi lỗi chỉ báo khi code ném lỗi. Nó không báo được rằng job xuất hoá đơn đêm qua không hề chạy. Monitor của Belvador chờ check-in theo lịch và mở sự cố khi một lần chạy lỗi, quá lâu hoặc không tới.
Trả lời nhanh#
Monitor chờ từng lần chạy của job và mở sự cố khi lần chạy lỗi, quá lâu hoặc không tới.
Báo lần chạy bằng một ping URL bí mật (không cần SDK) hoặc bằng check-in của Sentry SDK.
Monitor ping URL vẫn cảnh báo cả khi node của bạn đang tắt.
Cảnh báo đi tới Telegram, Slack, email hoặc webhook của bạn: một tin khi hỏng, một tin khi hồi phục.
Tối đa 100 monitor mỗi project trong beta, không tính giá theo monitor.
Hai cách báo một lần chạy#
| Ping URL | Monitor check-in | |
|---|---|---|
| Job báo bằng cách nào | Một request HTTP tới URL bí mật, từ curl, script hoặc CI | Sentry SDK (withMonitor, captureCheckIn) hoặc các gói @belvador/* |
| Sửa code | Chỉ thêm request | Bọc job trong một hàm |
| Ai quyết định là trễ | Dịch vụ monitor của Belvador | Node của bạn |
| Khi node tắt | Vẫn cảnh báo | Hiện Không quan sát được; lần lỡ thật sẽ được báo muộn |
Chọn ping URL cho cron trên shell, lịch chạy CI và những chỗ không cài SDK được. Chọn check-in khi job đã chạy với Sentry SDK và bạn muốn lỗi của nó gắn với lần chạy.
Ping URL trong một dòng#
# Alive / finished OKcurl -fsS -m 10 --retry 5 -o /dev/null https://ping.belvador.dev/p/bvp_<your-ping-token> || true# Started (optional: arms the max-runtime check)curl -fsS -m 10 --retry 5 -o /dev/null https://ping.belvador.dev/p/bvp_<your-ping-token>/start || true# Failed — alerts at oncecurl -fsS -m 10 --retry 5 -o /dev/null https://ping.belvador.dev/p/bvp_<your-ping-token>/fail || true# Or send the job's exit status right after it: 0 = success, 1–255 = failure./nightly-job.sh; curl -fsS -m 10 --retry 5 -o /dev/null https://ping.belvador.dev/p/bvp_<your-ping-token>/$? || trueURL là bí mật: ai có nó đều báo được lần chạy. Bạn đổi URL được trên trang monitor. Có thể gửi kèm mã thoát và output ngắn; xem monitor ping URL.
Check-in từ Node.js#
import * as Sentry from "@sentry/node";await Sentry.withMonitor("nightly-invoices", async () => { // Your job.}, { schedule: { type: "crontab", value: "0 2 * * *" }, timezone: "UTC" });Cách làm tương tự có cho Python, TanStack Start, Cloudflare Workers và curl (cài monitor).
Lịch chạy và kết quả#
Lịch cron —
0 2 * * *theo múi giờ bạn chọn. Đổi giờ mùa hè được xử lý: 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. Công cụ giải thích biểu thức cron hiện các lần chạy kế tiếp của bất kỳ biểu thức nào.Mỗi N phút hoặc giờ — cho worker và heartbeat.
Khi có sự kiện — không bao giờ trễ; chỉ tính lỗi và quá thời gian.
Một lần chạy kết thúc là OK, Bỏ qua, Lỗi, Quá thời gian, Lỡ hoặc Chưa rõ kết quả. Trạng thái cuối dành cho job không biết việc của mình có thành công không, ví dụ gọi cổng thanh toán bị timeout sau khi đã gửi; nó yêu cầu xem lại thay vì đoán (cách monitor hoạt động).
Cảnh báo#
Quy tắc mặc định Monitor problems gửi một tin khi monitor bắt đầu lỗi và một tin Đã hồi phục khi ổn lại, qua bot Telegram, Slack webhook, tài khoản email hoặc webhook có chữ ký của bạn. Chuyển từ kiểu lỗi này sang kiểu lỗi khác không gửi tin thứ hai (cảnh báo).
Giới hạn#
Tối đa 100 monitor mỗi project trong beta.
Check-in gửi từ server, worker, CI hoặc shell. Trình duyệt không gửi được.
Belvador không đọc crontab hay bộ lập lịch của bạn. Bạn tự chọn job cần theo dõi; không có gì được tự phát hiện.
Không có lịch trực hay gọi điện thoại. Cảnh báo đi tới các kênh bạn thêm.
Câu hỏi thường gặp#
Code cron monitoring của Sentry có chạy được không?#
Được. Sentry.withMonitor() và Sentry.captureCheckIn() gửi check-in mà Belvador hiểu; chỉ DSN thay đổi (monitor với Sentry SDK).
Monitor dùng làm nguồn cho SLO được không?#
Được. Monitor hoặc ping URL có thể là nguồn của SLO, đếm số lần chạy OK so với số lần lỗi và lỡ (SLO).
Bài viết về chủ đề này
Tất cả bài viết- Job thử lại, lỗi bị báo trùng: mỗi lần thử gửi gì cho công cụ theo dõi lỗiMột background job được thử lại gửi bao nhiêu event lỗi, chúng gom vào issue thế nào, vì sao Dedupe không lọc được lần thử, và cách chỉ báo lần hỏng cuối.
- Giám sát AI agent chạy trên serverless functionAgent trên serverless là chuỗi function ngắn có giới hạn thời gian cứng. Cần theo dõi gì ở từng bước, kèm ba thí nghiệm và bảng giới hạn trong tài liệu.
- Cron job chạy mãi không xong: heartbeat thật ra nhìn thấy gì?Thí nghiệm dừng cron job bằng SIGTERM và SIGKILL, mỗi kiểu ba lần. Gửi heartbeat từ đâu quyết định bạn nhận báo lỗi, báo OK giả hay im lặng.
- Giám sát ứng dụng vibe coding: thứ gì hỏng sau khi publishApp vibe coding hỏng gì sau khi publish, vì sao uptime check vẫn thấy 200 OK, và ba lớp kiểm tra bắt được lỗi. Thử thật trên năm bản build hỏng.
Thử trên project Hetzner của bạn
Miễn phí trong giai đoạn beta. Hetzner tính tiền máy; Belvador không bao giờ tính tiền theo event.