Monitor bằng SDK Sentry chính thức
Python, Node.js và các SDK Sentry khác gửi check-in tới Belvador bằng API crons của chính chúng; cái nào đã kiểm, cái nào chưa.
Các SDK Sentry chính thức có API crons gửi đúng loại check-in mà Belvador hiểu. Trỏ SDK vào DSN Belvador và dùng API đó như tài liệu của Sentry; không cần gói Belvador nào.
SDK nào đã được kiểm#
| SDK | Trạng thái |
|---|---|
Python sentry-sdk | Đã kiểm: một test trong repo chạy nó với edge và node Belvador cục bộ |
Node.js @sentry/node | Đã kiểm theo cùng cách |
| Go, PHP, Ruby, Java, .NET | Cùng giao thức, chưa được Belvador kiểm. Lẽ ra chạy được; nếu không, báo chúng tôi qua hello@belvador.dev |
Bảng đầy đủ, sinh từ cùng nguồn với các test, nằm ở Bảng năng lực theo runtime.
Python#
Cài SDK như ở Python, rồi gắn decorator cho job:
from sentry_sdk.crons import monitor@monitor(monitor_slug="nightly-invoices", monitor_config={"schedule": {"type": "crontab", "value": "0 2 * * *"}, "timezone": "UTC"})def nightly_invoices(): ... # your jobmonitor_config tạo monitor từ code ở check-in đầu tiên (xem tạo từ code). Bỏ nó đi nếu dùng monitor tạo trong Belvador. Task Celery beat có thể dùng tích hợp Celery của Sentry với monitor_beat_tasks=True; check-in vẫn như vậy.
Node.js#
Cài SDK như ở Node.js, rồi bọc job:
import * as Sentry from "@sentry/node";await Sentry.withMonitor("nightly-invoices", async () => { // Your job.}, { schedule: { type: "crontab", value: "0 2 * * *" }, timezone: "UTC" });Ngôn ngữ khác#
Dùng hàm "crons" hoặc "check-in" của SDK với slug của monitor. Hai quy tắc để chạy đúng với Belvador:
Gửi
in_progresslúc bắt đầu vàokhoặcerrorvới cùng check-in id lúc kết thúc. Mộtokkhông có lúc bắt đầu hoạt động như heartbeat.Giữ
monitor_configtrong giới hạn của Belvador: lịchcrontab(5 trường) hoặcinterval,checkin_margin1–1440,max_runtime1–10080, ngưỡng 1–720.max_runtimequá 7 ngày bị cắt về 7 ngày như Sentry; giá trị khác nằm ngoài các khoảng này khiến Belvador bỏ quamonitor_configđó — bản thân check-in vẫn được ghi.
Không có SDK nào thì dùng check-in qua HTTP.
Tính năng Sentry không áp dụng#
Belvador chỉ nhận lỗi và check-in. Trace hiệu năng, profile, replay và log mà SDK Sentry có thể gửi đều không được lưu: node của bạn đếm chúng là không hỗ trợ và bỏ đi. Hãy tắt trong SDK để đỡ tốn băng thông (traces_sample_rate=0 ở Python, tracesSampleRate: 0 ở Node.js).
Bài viết về chủ đề này
Tất cả bài viết- Chuyển SDK Sentry: checklist thử từng giả địnhRời Sentry sang backend tương thích? Checklist từ một lần chạy thật: SDK Node.js gửi những item nào, item nào bị bỏ, và cần kiểm tra gì ở từng bước.
- 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.
Thấy chỗ sai hoặc thiếu? Gửi cho chúng tôi: hello@belvador.dev