title: “Cảnh báo” description: “Tài liệu về Cảnh báo AgentEye.”
Cảnh báo đánh giá một quy tắc theo lịch trình và thông báo cho bạn khi có điều gì vượt quá ngưỡng. Chúng biến AgentEye từ một bảng điều khiển thụ động thành một bề mặt báo cáo cho những điều quan trọng: tăng đột ngột tỷ lệ lỗi, hồi quy độ trễ, giảm điểm đánh giá, hoặc bất kỳ sự kiện tùy chỉnh nào mà bạn có thể biểu diễn dưới dạng truy vấn ClickHouse. Hướng dẫn này bao gồm cảnh báo là gì, năm loại kích hoạt, bốn kênh thông báo, vòng đời sự cố, và các điều khiển vận hành.
Khái niệm
- Cảnh báo — quy tắc. Nó nói cái gì để kiểm tra (kích hoạt), tần suất (khoảng đánh giá), khi nào coi là bị hỏng (logic phức hợp), mức độ khẩn cấp (mức độ nghiêm trọng), và ai/nơi để thông báo (kênh).
- Sự cố — những gì xảy ra khi cảnh báo phát động. Một cảnh báo có tối đa một sự cố mở tại một thời điểm. Những lần vi phạm lặp lại cập nhật bằng chứng của cùng một sự cố. Sự cố được giải quyết bởi một điều hành viên; giải quyết tự động khi quy tắc dừng phát động được lên kế hoạch nhưng hiện không được bật.
- Kênh — nơi thông báo đi: email, Slack, webhook chung, hoặc trong bảng điều khiển. Mỗi cảnh báo có thể đính kèm bất kỳ sự kết hợp nào.
default org được xây dựng sẵn). Sự cố có thể được gán cho một điều hành viên cá nhân để phân loại.
Các loại kích hoạt
Năm loại, mỗi loại có thông số kỹ thuật JSON riêng. Chọn loại phù hợp với cách bạn muốn mô tả “bị hỏng”. Biểu mẫu cảnh báo mới trên bảng điều khiển xây dựng cùng một thông số kỹ thuật cho bạn, chuyển đổi trình chỉnh sửa điều kiện để phù hợp với loại kích hoạt bạn chọn:
1. metric_threshold
Đơn giản nhất. Chọn một metric từ danh sách đóng, một toán tử, một ngưỡng, và một cửa sổ thời gian.
| Metric | Nó đếm gì |
|---|---|
event_count | Tổng số sự kiện trong cửa sổ |
error_count | event_type = 'error' HOẶC bất kỳ sự kiện nào với error_type IS NOT NULL |
error_rate | error_count / event_count (0..1) |
p95_latency_ms | quantile(0.95)(duration_ms) trên tất cả các sự kiện với duration_ms |
p99_latency_ms | quantile(0.99)(duration_ms) |
token_sum | SUM(input_tokens + output_tokens) |
>, >=, <, <=, == (cũng được chấp nhận dưới dạng gt, gte, lt, lte, eq).
Bộ lọc tùy chọn: environment, event_type.
Ví dụ thông số kỹ thuật:
2. custom_sql
Cho bất kỳ điều gì mà các metric được đặt sẵn không bao gồm. SQL được cung cấp bởi toán tử đi qua cùng một bảo vệ /queries/run (chỉ SELECT/WITH, một câu lệnh, giới hạn 10.000 hàng) trước khi dispatcher chạy nó. Hai chế độ:
- chế độ hàng (không có
op/value): cảnh báo phát động ngay khi truy vấn trả về ít nhất một hàng. - chế độ giá trị: truy vấn phải có bí danh một cột là
metric_value; dispatcher so sánhmetric_valuecủa hàng đầu tiên vớivaluesử dụngop.
3. evaluation_score
Đọc từ agenteye.evaluations và so sánh trung bình của một điểm được đặt tên trên một cửa sổ.
min_count bảo vệ chống lại các ngoại lệ đơn mẫu; dispatcher sẽ không phát động cho đến khi có ít nhất N đánh giá tồn tại trong cửa sổ.
4. eval_compound
Bắt một hồi quy chất lượng chỉ hiện ra trên nhiều điểm đánh giá cùng một lúc. Khi evaluation_score theo dõi một điểm được đặt tên, eval_compound soạn thảo nhiều điều kiện điểm đánh giá thành một cảnh báo và kết hợp kết quả của chúng với một logic được chọn; vì vậy một quy tắc có thể biểu diễn “phát động nếu tính hữu ích giảm hoặc ảo tưởng tăng”, “chỉ phát động nếu tính hữu ích và hiệu quả công cụ cùng giảm”, hoặc “phát động nếu ít nhất 2 trên ba kiểm tra này vi phạm”.
Mỗi điều kiện đọc trung bình của một điểm được đặt tên từ agenteye.evaluations trong cửa sổ chia sẻ và kiểm tra nó với toán tử và ngưỡng riêng của nó. Kết quả boolean sau đó được kết hợp bởi combinator:
| Combinator | Logic | Phát động khi |
|---|---|---|
"any" | OR | ít nhất một điều kiện vi phạm |
"all" | AND | mọi điều kiện vi phạm |
{ "at_least": N } | M-of-N | ít nhất N điều kiện vi phạm |
combinator:"any","all", hoặc{ "at_least": N }.conditions[]: mỗi{ score_key, op, value }, sử dụng cùng các toán tử như các kích hoạt khác (>,>=,<,<=,==).window_secs: lookback được chia sẻ áp dụng cho mọi điều kiện (mặc định3600).min_count: số lượng đánh giá tối thiểu trên mỗi điều kiện trước khi điều kiện đó có thể vi phạm; một điều kiện có quá ít mẫu trong cửa sổ được tính là “không vi phạm” (mặc định1).environment: tùy chọn; hạn chế mọi điều kiện chỉ trong một môi trường.
5. per_event
Cho các cảnh báo “bất kỳ sự kiện nào khớp X đã đến”. Không có tổng hợp; dispatcher phát động ngay khi nó thấy kết quả khớp trong cửa sổ lookback.
| Trường | Mục đích |
|---|---|
agent_id | Hạn chế lỗi từ một tác nhân cụ thể (cái được hiển thị trên hàng /errors). |
error_type | Hạn chế cho một lớp lỗi cụ thể (ví dụ: TimeoutError) thay vì mọi lỗi. |
message_contains | Khớp chuỗi con không phân biệt chữ hoa chữ thường với payload.message. Hữu ích cho việc bắt một chế độ lỗi cụ thể (ví dụ: prompt is too long) mà không cảnh báo trên mọi lỗi từ cùng một tác nhân. Giới hạn 200 ký tự; khớp dưới dạng chuỗi cơ bản, không phải mẫu. |
lookback_secs để phù hợp với eval_interval_secs của cảnh báo để bạn không thông báo lại trên cùng một sự kiện.
Phím tắt từ /errors: mỗi hàng đại diện nhóm lỗi trên chế độ xem lỗi (và bảng chi tiết sự kiện phiên cho một sự kiện lỗi) có nút + alert mở /alerts/new được điền trước với kích hoạt per_event khóa trên event_type + môi trường của hàng đó, bao gồm tên được gieo từ error_type của payload khi có. Bạn vẫn chọn kênh và xác nhận lookback, nhưng bộ so khớp được điền cho bạn. Các điều hành viên cần alerts:write để nút xuất hiện.
Logic phức hợp (M of N)
Mỗi cảnh báo có hai nút số nguyên bên cạnh kích hoạt:eval_window: có bao nhiêu đánh giá gần đây để xem (mặc định 1)min_breaches: có bao nhiêu trong số đó phải vi phạm trước khi cảnh báo phát động (mặc định 1)
1 of 1 (mặc định) là “phát động khi lần vi phạm đầu tiên”. 3 of 5 nghĩa là “phát động khi quy tắc đã vi phạm 3 trên 5 đánh giá gần đây”, hữu ích cho các tín hiệu không ổn định nơi một phép đo xấu là nhiễu. Dispatcher duy trì một bộ đệm vòng cho mỗi cảnh báo; bạn không phải quản lý trạng thái.
Khoảng đánh giá
eval_interval_secs kiểm soát tần suất dispatcher chạy quy tắc của bạn. Được giới hạn trong [30, 86400]. Các cài đặt trước trên bảng điều khiển: 1m / 5m / 15m / 1h. Chọn một khoảng phù hợp với tốc độ di chuyển của tín hiệu cơ bản: một cảnh báo tỷ lệ lỗi 5 phút được đánh giá mỗi 15 giây lãng phí CPU; một cảnh báo cho mỗi sự kiện cần một lookback ngắn hoặc nó sẽ im lặng bỏ qua các sự kiện giữa các tick.
Kênh
Mỗi cảnh báo có thể đính kèm bất kỳ sự kết hợp nào của bốn kênh này. Thông tin đăng nhập theo kênh (URL webhook Slack, URL webhook chung + bí mật ký, các người nhận email mặc định) được cấu hình một lần trong/settings và được tham chiếu bằng khóa từ mỗi cảnh báo. Bằng cách này, một kênh Slack có thể phục vụ nhiều cảnh báo mà không cần mỗi cảnh báo lưu trữ bản sao riêng của URL webhook.
Ba loại kênh bên ngoài (email, Slack, webhook) cũng được gated bởi một công tắc tắt toàn org, alerts.enabled_channels. Khi một cảnh báo phát động đính kèm một loại kênh không nằm trong bộ này, dispatcher bỏ qua nó và ghi một hàng alert_notifications với trạng thái skipped_disabled và mục tiêu <channel_disabled> (cho phép bạn tạm dừng toàn cầu, ví dụ, tất cả gửi Slack mà không chỉnh sửa từng quy tắc). Kênh trong bảng điều khiển luôn được cho phép. Xem Cấu hình.
- Ghi đè
recipients[]theo kênh (khi không trống). - Cài đặt
alerts.email_default_recipients(một mảng các chuỗi email).
alert_notifications với mục tiêu <smtp_unconfigured> nên audit trail làm cho cấu hình sai được hiển thị.
Slack
Gửi một thông báo Block Kit tới một URL webhook đến.- URL mặc định:
alerts.slack_default_webhook(được đặt trong/settings). - Ghi đè cho mỗi cảnh báo: đặt
webhook_setting_keycủa kênh thành bất kỳ khóa cài đặt kiểu URL nào khác, ví dụ:alerts.slack_oncall,alerts.slack_costs.
:rotating_light: / :warning: / :bell:), và thông báo mang một nút liên kết sâu tới trang sự cố.
Webhook chung
Tích hợp JSON-POST cho PagerDuty, Opsgenie, hoặc điểm cuối tiếp nhận của bạn. Hình dạng cơ thể:alerts.webhook_signing_secret được đặt, yêu cầu bao gồm tiêu đề X-AgentEye-Signature: sha256=<hex>, HMAC-SHA256 của cơ thể sử dụng bí mật. Xác minh nó trên phía nhận trước khi tin tưởng tải trọng.
Tiêu đề X-AgentEye-Event mang alert.firing / alert.test. (alert.resolved được dành riêng cho tính năng tự động giải quyết được lên kế hoạch và hiện không được phát hành.)
Trong bảng điều khiển
Không có gửi bên ngoài: cảnh báo chỉ ghi một hàngalert_notifications mà trang sự cố của bảng điều khiển bề mặt. Hữu ích khi bạn đang điều chỉnh một quy tắc và không muốn spam một hệ thống bên ngoài, hoặc cho các cảnh báo ưu tiên thấp mà các điều hành viên kiểm tra trong quá trình phân loại thông thường.
Vòng đời sự cố
- firing — dispatcher vừa mở sự cố hoặc phát hiện một vi phạm khác. Thông báo phát động được quạt ra chính xác một lần (được gated bởi dấu thời gian
notified_firing_attrên sự cố). - acknowledged — một điều hành viên nhấn ack trên
/incidents/:id. Sự cố vẫn được coi là mở; các vi phạm tiếp theo sẽ cập nhật bằng chứng của nó mà không thông báo lại. - resolved — một điều hành viên nhấn resolve. Giải quyết tự động khi quy tắc dừng phạm được lên kế hoạch nhưng hiện không được bật, vì vậy một sự cố mở vẫn mở cho đến khi một điều hành viên giải quyết nó.


Quyền bắt buộc
Soạn thảo quy tắc cảnh báo và phân loại sự cố là những mối quan tâm riêng biệt với các quyền riêng biệt, vì vậy bạn có thể cấp cho một vòng xoay on-call quyền truy cập sự cố mà không cũng trao cho nó khả năng viết lại các quy tắc.alerts:read: xem các quy tắc cảnh báo.alerts:write: tạo, chỉnh sửa, xóa các quy tắc cảnh báo, và kích hoạt thông báo kiểm tra.incidents:read: xem sự cố.incidents:write: mở các sự cố thủ công (ad-hoc) không gắn liền với cảnh báo.incidents:ack: ack, gán, bình luận, và giải quyết sự cố.
LegacyCấp trên các khóa API (alerts:ack. Các khóa và điều hành viên được cấp mã thông báoalerts:ackcũ hơn tiếp tục hoạt động: nó được chấp nhận làincidents:ack(và ngụ ýincidents:read), vì vậy các on-caller hiện tại giữ quyền truy cập của họ mà không cấp lại thông tin xác thực. Phát hành các khoản cấp mới với gia đìnhincidents:*.
POST /keys) và các điều hành viên (PUT /users/:id). PermGate của bảng điều khiển khóa các nút liên quan khi thiếu quyền; bạn sẽ thấy // 403 bên cạnh hành động.
Bộ chọn người nhận email. Bộ chọn người nhận của trình chỉnh sửa cảnh báo liệt kê các thành viên của tổ chức của bạn để bạn có thể chọn họ theo tên. Nó tải cho bất kỳ điều hành viên nào giữalerts:readhoặcalerts:write; xem danh mục của nhóm của bạn cho mục đích này không yêu cầuusers:read, và bộ chọn chỉ trả về địa chỉ email thành viên, không bao giờ toàn bộ hồ sơ người dùng.
Cấu hình
Các biến môi trường được tiêu thụ bởi dispatcher:| Var | Mặc định | Mục đích |
|---|---|---|
ALERT_WORKERS | 1 | Nhiệm vụ worker trên mỗi phiên bản máy chủ. Hầu hết các triển khai chỉ cần một. |
ALERT_CLAIM_BATCH | 16 | Cảnh báo tối đa một tick worker xử lý. |
ALERT_POLL_IDLE_SECS | 5 | Worker ngủ khi hàng đợi trống. |
ALERT_REQUEST_TIMEOUT_MS | 15000 | Hết thời gian đánh giá kích hoạt trên mỗi lần. |
DASHBOARD_URL | https://app.befailproof.ai | Nguồn gốc được sử dụng để xây dựng magic-link sự cố trong thông báo. Đặt thành máy chủ bảng điều khiển của bạn. |
/settings, không phải env):
alerts.email_default_recipients(email_list): mảng JSON của các chuỗi email — người nhận mặc định cho kênh email.alerts.slack_default_webhook(url): URL webhook đến Slack mặc định.alerts.webhook_default_url(url): URL webhook chung mặc định.alerts.webhook_signing_secret(secret): khóa HMAC-SHA256. Luôn được trả về dưới dạng""trong phản hồi GET; gõ giá trị mới để xoay.alerts.enabled_channels(channel_set): bộ toàn org của các loại kênh bên ngoài được gửi khi cảnh báo phát động; mặc định tất cả ba (email,slack,webhook). Loại bỏ một loại ở đây sẽ loại bỏ kênh đó toàn cầu cho mọi cảnh báo mà không chỉnh sửa từng quy tắc. Kênh trong bảng điều khiển luôn được gửi và không bị ảnh hưởng bởi cài đặt này.
Xác minh cảnh báo mới
Trước khi dựa vào cảnh báo mới:- Lưu nó dưới dạng bật với ít nhất một kênh thông báo.
- Chọn test trên trang chi tiết cảnh báo và xác nhận mỗi điểm đến được cấu hình nhận thông báo tổng hợp.
- Sau lần vi phạm thực tế đầu tiên, xác nhận sự cố xuất hiện dưới Sự cố và giá trị đo được của nó phù hợp với truy vấn bảng điều khiển tương ứng.
Khắc phục sự cố
| Triệu chứng | Nguyên nhân có thể |
|---|---|
| Cảnh báo không bao giờ phát động | enabled = false, hoặc không có kênh đính kèm, hoặc truy vấn CH cơ bản trả về 0 hàng. Sử dụng test để xác nhận kênh; sử dụng /queries/run để xác nhận metric. |
| Thông báo Slack bị mất | alerts.slack_default_webhook (hoặc khóa ghi đè cho mỗi cảnh báo) không được đặt: kiểm tra alert_notifications.target cho các hàng <unset:…>; hoặc loại slack được tắt toàn cầu trong alerts.enabled_channels: kiểm tra các hàng alert_notifications với trạng thái skipped_disabled và mục tiêu <channel_disabled>. |
| Webhook chung 401 | Người nhận yêu cầu chữ ký nhưng alerts.webhook_signing_secret không được đặt. Xác minh ở bên nhận rằng HMAC phù hợp với hmac_sha256(secret, body). |
| Email “từ tất cả gửi không thành công” | Thông tin xác thực SMTP sai hoặc địa chỉ from bị từ chối bởi chuyên chở của bạn. Cùng bề mặt gửi email OTP: nếu những cái đó hoạt động, vận chuyển SMTP ổn. |
| Sự cố mở lại lặp đi lặp lại | Các nút phức hợp quá tích cực: thử tăng min_breaches hoặc eval_window để các tăng đột ngột tạm thời không mở lại các sự cố bạn đã giải quyết. |

