> ## Documentation Index
> Fetch the complete documentation index at: https://docs.befailproof.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Giám sát Sức khỏe

> Tài liệu Giám sát Sức khỏe AgentEye.

Biết khi nào một triển khai AgentEye **chính nó** bị sự cố hoặc hoạt động kém, không chỉ khi agents của bạn hoạt động không đúng. Phát hiện **tương thích Kubernetes** và quan trọng nhất là **độc lập với AgentEye**: nó đọc trạng thái pod từ mặt phẳng điều khiển Kubernetes và kiểm tra các phụ thuộc cứng của AgentEye, vì vậy nó vẫn hoạt động ngay cả khi máy chủ, ClickHouse hoặc Postgres bị sự cố.

Có hai lớp. Lớp thứ nhất được tích hợp sẵn; lớp thứ hai là tùy chọn.

## 1. Sự sẵn sàng nhận thức phụ thuộc (tích hợp sẵn)

Máy chủ hiển thị hai điểm cuối probe có công việc khác nhau một cách cố ý:

| Điểm cuối     | Probe     | Kiểm tra                                                          | Xác thực |
| ------------- | --------- | ----------------------------------------------------------------- | -------- |
| `GET /health` | liveness  | quá trình đang hoạt động (luôn là `{"status":"ok"}`)              | không    |
| `GET /ready`  | readiness | có thể thực sự phục vụ: **Postgres + ClickHouse** có thể tiếp cận | không    |

`/ready` trả về `200` với `"status":"ready"` và mọi check `"ok"` khi cả hai phụ thuộc cứng có thể tiếp cận, và `503` với `"status":"not_ready"` khi một trong hai không thể tiếp cận. Cả hai phản hồi đều có phần nội dung nhỏ:

```json theme={null}
{ "status": "not_ready",
  "checks": { "postgres": "ok", "clickhouse": "down", "redis": "not_configured" } }
```

Redis là một bộ đệm tùy chọn mà máy chủ có thể hoạt động vượt qua, vì vậy nó được báo cáo thông tin nhưng **không bao giờ** làm hỏng sự sẵn sàng. Nó hiển thị `"ok"` khi một bộ đệm được cấu hình và `"not_configured"` nếu ngược lại; nó không bao giờ là `"down"`.

Trên các manifest Kubernetes được đóng gói, probe **readiness** trỏ tới `/ready` và **liveness** ở lại `/health`. Hiệu quả: một máy chủ *đang chạy nhưng không thể tiếp cận cơ sở dữ liệu* của nó bị loại khỏi Service và hiển thị dưới dạng `NotReady`, một trạng thái mà giám sát cụm của bạn (bên dưới) có thể cảnh báo, trong khi liveness vẫn rẻ nên một sự cố phụ thuộc thoáng qua không bao giờ kích hoạt khởi động lại pod. Probe sử dụng ngưỡng lỗi rộng rãi nên một sự cố thoáng qua không bao giờ làm dao động các bản sao ra khỏi rotation.

## 2. Cảnh báo lỗi Pod với Robusta (tùy chọn)

[Robusta](https://github.com/robusta-dev/robusta) là một monitor tương thích Kubernetes theo dõi máy chủ API và gửi các lỗi pod (`CrashLoopBackOff`, `OOMKilled`, `ImagePullBackOff`, `Pending`/`NotReady`, `Failed`, evictions) tới Slack. Vì nó quan sát mặt phẳng điều khiển thay vì hỏi AgentEye, nó cảnh báo ngay cả khi AgentEye không thể phục vụ hoàn toàn.

Robusta được vận chuyển dưới dạng một add-on tùy chọn trong gói phát hành. Bật nó bằng biểu đồ Helm Robusta tiêu chuẩn và tệp giá trị nhỏ được hiển thị bên dưới:

1. Thêm kho biểu đồ và nhận **bot token** của Slack (`xoxb-…`) cho kênh:

   ```bash theme={null}
   helm repo add robusta https://robusta-charts.storage.googleapis.com
   helm repo update
   ```

   Vì cấu hình bên dưới giữ mọi thứ trong cụm (`disableCloudRouting: true`), token đến từ một ứng dụng Slack được lưu trữ tự:
   tạo một ứng dụng tại `https://api.slack.com/apps`, thêm phạm vi bot `chat:write`, cài đặt nó vào không gian làm việc của bạn, sao chép **Bot User OAuth Token** (`xoxb-…`), và mời bot tới kênh (`/invite @your-app`).

2. Tạo `values.yaml` với nhãn cho mỗi triển khai (`clusterName`) và kênh Slack của bạn, được phạm vi vào không gian tên `agenteye`:

   ```yaml theme={null}
   clusterName: "acme-prod"            # nhãn cho mỗi triển khai; xuất hiện trên mỗi cảnh báo
   enablePrometheusStack: false        # cảnh báo crash pod chỉ; không có ngăn xếp số liệu
   disableCloudRouting: true           # gửi đến Slack trực tiếp, trong cụm
   sinksConfig:
     - slack_sink:
         name: vendor_slack
         slack_channel: "agenteye-fleet-health"
         api_key: "REPLACE_WITH_SLACK_BOT_TOKEN"   # xoxb-… (ưu tiên --set hoặc secret)
         scope:
           include:
             - namespace: [agenteye]   # chỉ cảnh báo không gian tên AgentEye; loại bỏ để mở rộng
   ```

3. Cài đặt, ghim `--version` vào một bản phát hành biểu đồ Robusta đã được kiểm tra
   ([releases](https://github.com/robusta-dev/robusta/releases)) để bạn không bao giờ
   cài đặt một biểu đồ chưa được kiểm tra:

   ```bash theme={null}
   helm install robusta robusta/robusta \
     --namespace robusta --create-namespace \
     --version <pin-a-known-good-version> \
     -f values.yaml \
     --set sinksConfig[0].slack_sink.api_key=$ROBUSTA_SLACK_TOKEN
   ```

### Những gì nó báo cáo

* **Trạng thái pod** Kubernetes (pod AgentEye nào bị lỗi và tại sao) và **tag hình ảnh** của mỗi pod, tức là **phiên bản** thành phần đang chạy.
* **Không có dữ liệu sự kiện AgentEye và không có dữ liệu khách hàng** bao giờ rời khỏi cụm.
* Các giá trị được đóng gói hạn chế cảnh báo vào **không gian tên `agenteye`**, vì vậy khối lượng công việc không liên quan trong cụm tương tự không được báo cáo.

### Một nơi cho mỗi triển khai

Trỏ Robusta của mỗi triển khai tới **một kênh Slack được chia sẻ duy nhất**, mỗi kênh có `clusterName` riêng của nó. Mỗi cảnh báo được gắn thẻ với nhãn đó, vì vậy một kênh duy nhất hiển thị sức khỏe của toàn bộ đội hình của bạn, và bạn có thể biết triển khai nào bị ảnh hưởng trong nháy mắt.

### Các sự cố cụm toàn bộ

Một người theo dõi trong cụm không thể báo cáo một **sự cố cụm toàn bộ hoặc mạng** (nó bị sự cố cùng với cụm). Nếu bạn cần điều đó, bật **Robusta UI sink** tùy chọn: đặt `disableCloudRouting: false` và thêm một `robusta_sink` (với mã token từ `robusta gen-config`) vào `sinksConfig`. Nó thêm một bảng điều khiển đa cụm tổng hợp và đánh dấu bất kỳ cụm nào ngừng kiểm tra.

## Khắc phục sự cố

Xem phần **Giám sát Sức khỏe** của
[enterprise-docs/troubleshooting.md](/vi/agenteye/troubleshooting) để xem "không có cảnh báo nào đến" và "máy chủ tiếp tục flap `NotReady`".
