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

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ố.

Bản Markdown
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-inPing URLKiểm tra uptime
Ai gửiJob của bạn, qua SDK hoặc HTTPJob của bạn, bằng một lệnh gọi HTTPMáy kiểm của Belvador gọi URL của bạn
Bắt đượcLượt bị lỡ, lượt lỗi, lượt chạy quá lâuLượt bị lỡ, lượt lỗi, lượt chạy quá lâuTrang 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ạnDịch vụ giám sát của BelvadorDịch vụ giám sát của Belvador, từ ba vùng
Khi node của bạn sậpGhi Không quan sát được; lượt lỡ thật được báo trễVẫn báoVẫ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ểuDùng choKhi nào tính là trễ
Theo lịch cronJob theo giờ cố định: 0 2 * * * = mỗi ngày lúc 02:00, theo múi giờ bạn chọnTớ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 đặnQuá N kể từ check-in gần nhất, cộng biên độ
Theo sự kiệnViệ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ĩaTính là
Thành côngJob làm xong việcKhoẻ
Bỏ quaJob có chạy nhưng không có việc gì (code của bạn báo vậy)Khoẻ
LỗiJob báo lỗi hoặc ném exceptionHỏng
Quá giờĐã bắt đầu nhưng không xong trong thời gian chạy tối đaHỏng
Bị lỡKhông có check-in đúng hạnHỏ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ầuCầ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ậpMặc địnhKhoảng
Biên độ — check-in được phép trễ bao lâu5 phút1–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út1–10080 phút (7 ngày)
Số lần hỏng trước khi mở sự cố11–720
Số lần ổn trước khi đóng sự cố11–720
Môi trường cần theo dõiproductiontố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#

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