# 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](https://belvador.dev/vi/docs/reference/capabilities).

## Python

Cài SDK như ở [Python](https://belvador.dev/vi/docs/sdk/python), rồi gắn decorator cho job:

```python
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 job
```

`monitor_config` tạo monitor từ code ở check-in đầu tiên (xem [tạo từ code](https://belvador.dev/vi/docs/monitors/setup)). 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](https://belvador.dev/vi/docs/sdk/node), rồi bọc job:

```js
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_progress` lúc bắt đầu và `ok` hoặc `error` với **cùng check-in id** lúc kết thúc. Một `ok` không có lúc bắt đầu hoạt động như heartbeat.
- Giữ `monitor_config` trong giới hạn của Belvador: lịch `crontab` (5 trường) hoặc `interval`, `checkin_margin` 1–1440, `max_runtime` 1–10080, ngưỡng 1–720. `max_runtime` quá 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ỏ qua `monitor_config` đó — bản thân check-in vẫn được ghi.

Không có SDK nào thì dùng [check-in qua HTTP](https://belvador.dev/vi/docs/monitors/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).
