# Xuất traces và logs có sẵn của Cloudflare Workers tới Belvador

> Hai đích OTLP trong dashboard Cloudflare, khối observability trong wrangler.jsonc, những gì bạn nhận được và giới hạn hiện tại.

Cloudflare Workers tự xuất được traces và logs của chính nó tới bất kỳ endpoint OTLP nào — không cần SDK trong code. Cloudflare gắn instrumentation cho từng request, lệnh `fetch` và lệnh gọi binding, rồi gửi kết quả từ máy chủ của Cloudflare. Bạn cần quyền vào tài khoản Cloudflare của Worker; app do nền tảng khác giữ tài khoản (như Lovable) không cài được cách này — xem [TanStack Start](https://belvador.dev/vi/docs/otel/tanstack-start).

> **Chưa kiểm:** cách cài này theo tài liệu của nhà cung cấp; Belvador chưa chạy trọn đường gửi.

## 1. Tạo hai đích

Trong dashboard Cloudflare, mở **Observability → Destinations → Add destination** hai lần, mỗi lần cho một loại. Dùng một [khoá ingest](https://belvador.dev/vi/docs/otel/quickstart#1-tao-khoa-ingest) có **Traces** và **Logs** và không giới hạn môi trường (Cloudflare không gửi môi trường):

| Trường | Đích traces | Đích logs |
|---|---|---|
| Destination name | `belvador-traces` | `belvador-logs` |
| Destination type | Traces | Logs |
| OTLP endpoint | `https://ingest.belvador.dev/otlp/<project-id>/v1/traces` | `https://ingest.belvador.dev/otlp/<project-id>/v1/logs` |
| Custom header | `Authorization: Bearer <khoá ingest>` | `Authorization: Bearer <khoá ingest>` |

Cloudflare cần URL đầy đủ của từng loại, không phải endpoint gốc.

## 2. Trỏ Worker tới hai đích đó

```jsonc
// wrangler.jsonc
{
  "observability": {
    "traces": {
      "enabled": true,
      "destinations": ["belvador-traces"],
      "head_sampling_rate": 0.1
    },
    "logs": {
      "enabled": true,
      "destinations": ["belvador-logs"],
      "head_sampling_rate": 1
    }
  }
}
```

Deploy lại. `head_sampling_rate` giữ tỉ lệ request đó (`0.1` = một trên mười). Dữ liệu có thể mất vài phút mới tới. Đầu ra `console.log` của bạn được xuất thành bản ghi log.

## Bạn nhận được gì

- **Tên dịch vụ** là tên Worker; Cloudflare thêm `cloud.provider`, `cloud.platform` và các ID riêng.
- **Không có môi trường**: bản ghi được lưu với môi trường trống. Lọc theo dịch vụ, hoặc đặt mỗi môi trường một tên Worker.
- **Lỗi** vẫn đến từ [SDK Workers của Belvador](https://belvador.dev/vi/docs/sdk/cloudflare). Belvador chưa kiểm trace ID của Cloudflare có khớp với ID mà SDK gắn vào lỗi hay không, nên hiện hãy coi hai bên là tách biệt.

## Trạng thái

Cloudflare gọi tracing của Workers là open beta: tên span và thuộc tính có thể đổi. Belvador nhận cả hai kiểu mã hoá OTLP mà Cloudflare có thể gửi, nhưng chưa chạy trọn cách xuất này, nên được ghi là chưa kiểm. Sau khi cài, chạy [phép kiểm kết nối](https://belvador.dev/vi/docs/otel/verify) và tìm Worker của bạn trong **Dịch vụ đã thấy**.
