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

# 告警规则

告警规则会在超过你设定的阈值时通知你：服务器或服务持续繁忙，或者日志反复出现同一个错误。它是内置[通知](https://docs.zenavo.app/zh-CN/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-CN/account/audit-log)。

## 告警 {#alerts}

规则触发时，会向团队发出 **告警规则触发**：发邮件给开启了这项通知的成员（和其他[通知](https://docs.zenavo.app/zh-CN/operations/notifications#who-gets-them)一样，所有者和管理员默认开启），并发到订阅了这项通知的团队[渠道](https://docs.zenavo.app/zh-CN/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-CN/api/overview#conventions)。
