配置告警
API7 网关会监控网关实例、证书、许可证用量和请求状态码,并在条件超过阈值时通知你。告警由控制台中的三个概念组成:
- 联系人:可复用的通知目的地,包括电子邮件或 Webhook。
- 告警策略:需要评估的事件、规则、网关组和检查间隔,以及触发后通知的联系人。
- 告警历史:过去 30 天的告警和已发送通知记录。
有关告警评估和投递方式,请参阅告警和联系人。
配置联系人
创建策略前,至少配置一个联系人,以便网关发送通知。
- 在顶部导航栏 选择 组织,然后选择 联系人。
- 点击 新增联系人,选择以下类型之一:
- 邮件:输入一个或多个收件地址。电子邮件投递需要 SMTP 服务器,可在 组织 > 设置 > SMTP 服务器 中配置。
- Webhook:输入目标 URL。可将通知转发到 Slack(通过 Slack Incoming Webhooks)、PagerDuty、Microsoft Teams 或其他接收告警负载的 HTTP 端点。
一个告警策略可以关联多个联系人,例如同时通知值班邮件列表和 Slack 频道。
推荐的告警策略
控制台提供 20 多种内置事件类型。以下策略适用于大多数生产环境。请从 告警 > 策略 > 新增告警策略 创建策略。
| 事件 | 用途 | 建议检查间隔 |
|---|---|---|
| 网关实例离线 | 控制面已停止接收心跳。仍在运行的数据面可能继续使用最近一次生效的配置转发流量;请另行检查代理服务的健康状态。 | 60 分钟 |
| 控制面与数据面之间的 mTLS 证书即将过期 | 此类证书的默认有效期为 3650 天;证书过期会中断控制面与数据面通信。 | 1440 分钟(每天) |
| SSL 证书即将过期 | 在客户端遇到 TLS 错误前轮换监听器证书。 | 1440 分钟(每天) |
| 许可证允许的 CPU 配额已超出 | 所有数据面实例的 CPU 核数超过 API7 企业版许 可证配额。 | 60 分钟 |
| 健康网关实例数 | 网关组低于 SLO 要求的最小实例数。 | 30 分钟 |
| 状态码 500 的数量或比例 | 发现影响一定比例流量的上游或网关故障。 | 30 分钟 |
有关事件和控制面评估方式,请参阅告警和联系人。有关通知模板可用的变量,请参阅告警变量与模板。
注册中心连接异常告警
此告警自 API7 企业版 3.10.9 起引入。
使用 Service Registry Lost Connection(注册中心连接异常)事件,可以在网关实例与服务注册中心失去连接时收到通知。与网关实例离线事件相同,可以按网关组或标签指定策略的作用范围。控制台规则原文为 Any gateway instance in the selected gateway groups has lost connection to a service registry for more than {value} {unit},表示所选网关组中任一网关实例与注册中心失去连接的时间超过指定阈值;数值和单位由你设置。
每一对网关实例与服务注册中心的失去连接持续时间,从控制面首次收到该组合的失去连接报告时开始计算。因此,注册中心显示为部分失去连接时同样会触发告警。
每次检查时,只有失去连接的持续时间大于阈值、且不超过阈值加检查间隔的实例与注册中心组合才会匹配。这会带来 两个结果:
- 每次失去连接,每个组合只通知一次;连接恢复时不发送通知。
- 创建策略时,如果某个组合失去连接的持续时间已超过阈值加检查间隔,则本次失去连接不会触发告警。
自定义通知内容
电子邮件主题、电子邮件正文和 Webhook 负载可以包含以下模板变量:
| 变量 | 说明 |
|---|---|
{{ .AlertPolicyName }} | 告警策略名称。 |
{{ .Description }} | 告警策略描述。 |
{{ .Severity }} | 严重程度,包括 High、Medium 或 Low。 |
{{ .TriggerGatewayGroup }} | 触发告警的网关组名称,多个名称以逗号分隔。 |
{{ .AlertTime }} | 告警时间,可使用 {{ .AlertTime.Format "2006 Jan 02 15:04:05" }} 格式化。 |
{{ .AlertDetail }} | 触发告警事件的易读描述。嵌入 JSON Webhook 正文时,请使用 escape 函数({{ .AlertDetail | escape }})。 |
完整变量参考请参阅告警变量与模板。
查看告警历史
告警事件及其投递通知会保留 30 天。在控制台侧边导航栏中选择 告警,然后点击 历史。每条记录包含触发的策略、严重程度、触发时间、涉及的网关组以及已发送的告警详情。