# Giám sát

> Đọc bảng điều khiển suy luận — phân tích độ trễ, thông lượng (throughput), tỷ lệ lỗi, và các điều khiển thời gian window/bucket.

Bảng điều khiển **Inference Stats** cho thấy runtime của bạn đang hoạt động như thế nào theo thời gian thực:
độ trễ, thông lượng (throughput), tỷ lệ lỗi, và thời gian được tiêu tốn ở đâu trong pipeline. Nó cập nhật
liên tục khi một datasource đang truyền dữ liệu luồng.

<AppFrame name="InferenceStats" alt="Bảng điều khiển Inference Stats hiển thị phân vị độ trễ, thông lượng, tỷ lệ lỗi và execution provider" caption="Inference Stats — phân vị độ trễ, thông lượng, tỷ lệ lỗi, và execution provider." />

## Các chỉ số chính

- **Phân vị độ trễ** — p50 / p95 / p99 của thời gian suy luận đầu-cuối.
- **Thông lượng (throughput)** — số dự đoán mỗi giây.
- **Tỷ lệ lỗi** — phần các lần suy luận bị thất bại.
- **Execution provider** — suy luận đang chạy trên TensorRT, CUDA, hay CPU.
  Một box GPU bị rớt về CPU sẽ hiển thị ở đây.

## Phân tích độ trễ

Mỗi lần suy luận được phân rã để bạn có thể thấy thời gian đi về đâu:

- **Chờ hàng đợi** — thời gian chờ trong hàng đợi yêu cầu
- **Tiền xử lý** — chuẩn hóa đầu vào
- **Thực thi mô hình** — thời gian suy luận thuần
- **Hậu xử lý** — giải mã đầu ra

Nếu độ trễ tăng, phần phân tích này cho bạn biết liệu bản thân mô hình chậm lại hay
box bị bão hòa ở phía trên (upstream).

<AppFrame name="RealtimeMonitor" alt="Khung nhìn Real-time Monitor truyền các giá trị suy luận và dự đoán trực tiếp theo thời gian" caption="Real-time Monitor — các giá trị suy luận trực tiếp khi một datasource đưa dữ liệu vào mô hình." />

## Điều khiển window và bucket

Hai điều khiển định hình khung nhìn thời gian:

- **Window** — bạn nhìn ngược lại bao xa (ví dụ `5m`, `1h`, `24h`).
- **Bucket** — mỗi điểm trên biểu đồ rộng bao nhiêu (ví dụ `10s`, `1m`).

Số điểm là `window ÷ bucket`. Bảng điều khiển tự động khớp (snap) bucket khi
bạn thay đổi window để biểu đồ luôn dễ đọc — window rộng hơn dùng bucket rộng hơn.

**Cách biểu đồ giữ ổn định**

Điểm mới nhất được canh theo ranh giới bucket, nên bucket hiện tại không bao giờ hiển thị
số đếm thấp một cách giả tạo. Các bucket rỗng được điền số không, nên đường biểu đồ luôn
liên tục ngay cả khi lưu lượng thưa thớt.

**Lưu giữ dữ liệu**

Số liệu trực tiếp được lưu giữ trong **3 ngày**. Window dài hơn khoảng đó sẽ không trả về dữ liệu. Một
bản cài đặt hoàn toàn mới cần một khoảng khởi động ngắn trước khi biểu đồ hiển thị lưu lượng.

## Đọc một bản cài đặt mới

Nếu biểu đồ báo "no data", các lý do phổ biến nhất là:

- Chưa có datasource nào đang **truyền dữ liệu luồng** — bật và **Start** một nguồn.
- Bản cài đặt vẫn đang khởi động — chờ đến window mẫu đầu tiên.

## Dừng ngoài ý muốn và phục hồi sau khởi động lại

- **Suy luận đã dừng mà không ai bấm Stop?** Hãy kiểm tra [Thông báo](/vi/operate/notifications/) —
  một lần dừng bạn không yêu cầu (một datasource khác giành lấy slot đang hoạt động duy
  nhất, hoặc datasource đang hoạt động bị xóa, gắn thẻ lại, hoặc chỉnh sửa trong khi đang
  chạy) sẽ dấy lên một cảnh báo mức Warning ở đó thay vì lỗi âm thầm.
- **Sau khi backend khởi động lại**, một đầu vào đã được bật trước đó tự khôi phục lại pill
  **Ready** và điều khiển **Start** của nó. *(v1.28.2)* Một reconciler khởi động chờ cho
  đến khi engine suy luận báo cáo khỏe mạnh, rồi khôi phục lifecycle về Ready cho datasource
  đã bật bằng đúng mô hình đã ghép cặp của nó — nếu không, lifecycle trong bộ nhớ sẽ reset về
  Idle mỗi khi tiến trình khởi động lại trong khi cờ Enabled của datasource vẫn được lưu giữ.
  Việc khôi phục này không phá hủy: một lỗi kết nối tạm thời lúc khởi động để nguyên Enabled
  và lifecycle ở Idle, nên bạn chỉ cần bật lại Enable để thử lại — nó không bao giờ âm thầm
  tắt một datasource đã được cấu hình đúng.

## Nếu có gì đó trục trặc

- Biểu đồ rỗng, rớt về CPU ngoài dự kiến, hoặc tỷ lệ lỗi tăng — xem runbook
  [Khắc phục sự cố](/vi/troubleshooting/).

## Tiếp theo

  - [Kiểm tra phiên bản](/vi/operate/versioning/) — Xác nhận phiên bản frontend và backend khớp nhau.
  - [Kết nối một datasource](/vi/configure/input-datasources/) — Bắt đầu truyền dữ liệu luồng để điền vào bảng điều khiển.
  - [Xem trước pipeline](/vi/operate/preview-flow/) — Xem luồng Input → Model → Output dưới dạng đồ thị trực tiếp.
