---
url: https://docs.zenavo.app/zh-TW/operations/alert-rules
---

# 告警規則

告警規則會在超過你設定的門檻時通知你：伺服器或服務持續忙碌，或者日誌反覆出現同一個錯誤。它是內建[通知](https://docs.zenavo.app/zh-TW/operations/notifications)之外的補充，內建通知所有方案都保留。**Pro** 及以上方案包含告警規則：Pro 最多 20 條，Team 最多 100 條。

## 新增規則 {#add-a-rule}

團隊擁有者和管理員開啟 **帳號設定 → 告警規則**（作用於側邊欄中選取的團隊），點選 **新增規則**，然後選擇監控對象：

| 監控對象 | 門檻 | 觸發條件 |
| --- | --- | --- |
| **伺服器 CPU** | 所有核心合計的百分比 | 最近 *N* 分鐘的每個取樣都不低於門檻 |
| **伺服器記憶體** | 使用百分比 | 同上 |
| **伺服器磁碟** | 使用百分比 | 同上 |
| **服務 CPU** | vCPU，所有執行個體合計（1 vCPU = 一個核心） | 同上 |
| **服務記憶體** | MiB，所有執行個體合計 | 同上 |
| **日誌行** | 行數 | 最近 *N* 分鐘內至少有這麼多行日誌包含這段文字 |

*N* 為 1 到 60 分鐘。監控大約每分鐘取樣一次，所以取樣要涵蓋整個時間範圍，規則才會觸發：沉寂一段時間後突然出現的一個高值不算。伺服器停止回報時（例如離線），規則保持原狀態；這種情況由內建的 **伺服器離線** 通知負責。

**日誌行** 規則監控專案中的一個服務，或者所有服務。比對在變數值遮蔽之後進行，文字出現在行內任何位置都算，不分大小寫。日誌在寫出時即時計數；規則不會保存日誌，告警裡也不會包含日誌內容。

規則每分鐘檢查一次。清單會顯示每條規則最近的值，條件成立期間顯示 **告警中**。修改規則後，它會重新開始判斷。新增、修改和刪除規則都會記入[稽核日誌](https://docs.zenavo.app/zh-TW/account/audit-log)。

## 告警 {#alerts}

規則觸發時，會向團隊發出 **告警規則觸發**：寄信給開啟了這項通知的成員（和其他[通知](https://docs.zenavo.app/zh-TW/operations/notifications#who-gets-them)一樣，擁有者和管理員預設開啟），並發到訂閱了這項通知的團隊[頻道](https://docs.zenavo.app/zh-TW/operations/notifications#channels)。條件不再成立時，會再發一則 **已恢復**。

每條規則每小時最多告警一次。一小時內再次觸發時，主控台會顯示 **告警中**，但不會發送通知，也不會發送恢復訊息。

告警會寫明規則名稱、監控對象、條件和觀測值，例如 *期間最低 86%* 或 *符合 14 行*。告警裡絕不包含日誌內容、變數值或密鑰。

## 方案 {#plans}

在不含告警規則的方案上，頁面會說明哪個方案包含它。團隊換到這樣的方案後，規則會保留：不再檢查，仍然可以修改、關閉或刪除，但不能開啟或新增。團隊回到 Pro 或 Team 後，規則會自動恢復檢查。

## API {#api}

| 方法 | 路徑 | |
| --- | --- | --- |
| `GET` `POST` | `/api/teams/{tid}/alert-rules` | 列出規則，或新增一條：`{kind, name, threshold, window_minutes}`；`server_cpu`、`server_memory`、`server_disk` 需要 `server_id`；`service_cpu`（毫核）和 `service_memory`（MiB）需要 `project_id` 和 `service`；`log_match` 需要 `project_id`、`pattern`，`service` 可選 |
| `PATCH` `DELETE` | `/api/teams/{tid}/alert-rules/{rid}` | 修改除 `kind` 以外的任何欄位或 `enabled`；刪除 |

方案不包含告警規則時，新增或開啟規則會返回 402 和 [`plan_required`](https://docs.zenavo.app/zh-TW/api/overview#conventions)。
