Bỏ qua tới nội dung

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 URLMonitor check-in
Job báo bằng cách nàoMột request HTTP tới URL bí mật, từ curl, script hoặc CISentry SDK (withMonitor, captureCheckIn) hoặc các gói @belvador/*
Sửa codeChỉ thêm requestBọc job trong một hàm
Ai quyết định là trễDịch vụ monitor của BelvadorNode của bạn
Khi node tắtVẫn cảnh báoHiệ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#

Terminal
# 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>/$? || true

URL 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#

JavaScript
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).

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.