# Kiểm kết nối OTLP: chứng minh traces và logs tới đúng project

> Tab Kết nối cho biết gì, cách chạy phép kiểm bằng curl hoặc từ SDK của bạn, kiểm đạt chứng minh điều gì và làm gì khi một bước đứng lại.

"Có dữ liệu trong Traces" cho biết có thứ đang tới; nó không cho biết dữ liệu đi qua khoá, project và môi trường *nào*. Phép kiểm kết nối OTLP chứng minh trọn một đường đi và để lại biên nhận trên node của bạn.

## Tab Kết nối cho biết gì

Mở project, vào **Kết nối**. Chọn môi trường ở trên cùng; mọi thứ bên dưới chỉ được đánh giá cho môi trường đó.

**Bằng chứng theo tín hiệu** có một dòng cho mỗi loại: lỗi, check-in, traces và logs. Mỗi loại chỉ được đánh giá bằng bằng chứng của chính nó — traces đã xác minh không bao giờ làm lỗi thành "đã kết nối".

| Trạng thái | Nghĩa là |
|---|---|
| Đã xác minh | Một lần kiểm kết nối cho loại này và môi trường này đã tới node |
| Đang nhận | Bản ghi đang tới từ môi trường này, nhưng chưa chạy lần kiểm nào |
| Im lặng hơn 24 giờ | Trước có bản ghi, một ngày qua thì không |
| Chưa từng nhận | Chưa có gì từ môi trường này |
| Chưa xác định được | Lúc này không đọc được node |

**Dịch vụ đã thấy** liệt kê từng dịch vụ đã gửi traces hay logs, kèm ngôn ngữ và SDK. Các thông tin đó lấy từ thuộc tính resource do chính dịch vụ gửi (`service.name`, `telemetry.sdk.*`): tự khai, không phải chứng nhận.

## Chạy phép kiểm

1. Ở **Kết nối**, chọn môi trường rồi bấm **Kiểm kết nối OTLP**.
2. Belvador hiện một lệnh `curl` có mã đánh dấu mới (`bv1_` và 32 ký tự hex). Lệnh gửi một span và một log, cả hai mang thuộc tính `belvador.verification_id` và môi trường đã chọn.
3. Thay chỗ giữ khoá bằng một khoá ingest có **Traces** và **Logs** và cho phép môi trường đó, rồi chạy lệnh từ một máy ra được internet — tốt nhất là chính máy dịch vụ chạy, để phép kiểm chứng minh luôn đường mạng của nó.
4. Để trang mở. Các bước lần lượt chuyển sang xong: **Đã gửi từ máy của bạn → Edge của Belvador đã nhận → Node của bạn đã lưu biên nhận → Đọc lại được từ node**, riêng cho traces và cho logs.

Phép kiểm chờ 10 phút. Nếu không có gì tới, bảng sẽ báo; bấm lại để có mã đánh dấu mới.

## Chạy từ SDK của bạn

Thay vì `curl`, gắn mã đánh dấu vào một span hoặc một bản ghi log từ dịch vụ của bạn. Thuộc tính phải nằm trên chính span hoặc bản ghi log, không phải trên resource:

```js
import { trace } from "@opentelemetry/api";
trace.getActiveSpan()?.setAttribute("belvador.verification_id", "bv1_…");
```

```python
from opentelemetry import trace
trace.get_current_span().set_attribute("belvador.verification_id", "bv1_…")
```

Cách này chứng minh nhiều hơn `curl`: chính exporter, cấu hình và mạng của dịch vụ đã tới node. Gỡ dòng đó sau khi kiểm.

## Kiểm đạt chứng minh điều gì

Rằng khoá này, cho project và môi trường này, đã tới node vào lúc đó, và node đọc lại được. Nó không chứng nhận runtime, không chứng minh mọi dịch vụ đã gắn instrumentation, và không tiếp tục chứng minh gì về sau — khoá bị thu hồi hay bản triển khai thay đổi chỉ lộ ra khi bản ghi ngừng tới. Trạng thái giữ **Đã xác minh** sau một lần kiểm; **Im lặng hơn 24 giờ** mới là dấu hiệu bản ghi đã ngừng.

## Khi một bước đứng ở "đang chờ"

| Đứng ở | Nguyên nhân thường gặp |
|---|---|
| Đã gửi từ máy của bạn | Lệnh lỗi: đọc đầu ra của nó — `401` sai khoá, `403` khoá không có **Traces**/**Logs** hoặc là khoá của project khác, lỗi mạng nghĩa là máy không tới được `ingest.belvador.dev` |
| Edge của Belvador đã nhận | Request bị từ chối trước khi lưu — xem [các mã phản hồi](https://belvador.dev/vi/docs/reference/otlp#phan-hoi) |
| Node của bạn đã lưu biên nhận | Node đang tắt (bản ghi chờ ở edge tối đa 15 phút), hoặc khoá không cho phép môi trường này |
| Đọc lại được từ node | Trình duyệt chưa đọc lại được bản ghi qua `edge.belvador.dev` — thường do VPN hoặc bộ lọc mạng chặn địa chỉ đó; tải lại trang |

Các triệu chứng khác: [Sửa lỗi kết nối](https://belvador.dev/vi/docs/otel/troubleshooting).
