触发网关告警
异常的流量模式或 API 网关使用中的错误可能预示着问题或恶意攻击。通过为特定阈值和活动设置告警,你可以快速检测并深入了解可能表明安全漏洞、滥用或异常使用的模式。
本教程将指导你创建告警策略,以便接收特定事件的电子邮件和 Webhook 通知。以下是一个交互式演示,提供了在网关组场景中统计健康网关实例的实践介绍。
前置条件
- 安装 API7 企业版。
- 在网关组上运行 API。
- 获取你的通知系统的 Webhook URL。
设置 SMTP 服务器
- 从顶部导航栏中选择 Organization(组织),然后选择 Settings(设置)。
- 点 击 SMTP Server(SMTP 服务器)选项卡。
- 点击 Enable(启用)。
- 在对话框中,执行以下操作:
- 在 SMTP Server Address(SMTP 服务器地址)字段中,输入你的 SMTP 服务器地址。例如,
127.0.0.1。 - 在 Username(用户名)和 Password(密码)字段中,输入连接到你的 SMTP 服务器的凭据。
- 在 From Name(发件人名称)字段中,输入
API7 Enterprise,以在电子邮件中将此名称显示为发件人。 - 在 From Email Address(发件人电子邮件地址)字段中,输入
noreply@api7.ai。这将被用作实际的发件人地址。 - 点击 Enable(启用)。
添加联系点
联系点(Contact Point)定义了一组可供多个告警策略使用的电子邮件地址或 Webhook URL。
添加电子邮件联系点
- 从顶部导航栏中选择 Organization(组织),然后选择 Contact Points(联系点)。
- 点击 Add Contact Point(添加联系点)。
- 在对话框中,执行以下操作:
- 在 Name(名称)字段中,输入
Emergency Team Email List。 - 在 Type(类型)字段中,选择
Email(电子邮件)。 - 在 Email Addresses(电子邮件地址)字段中,输入收件人的电子邮件地址,例如
emergencyteamlist@api7.ai。 - 点击 Add(添加)。
添加 Webhook 联系点
使用 Slack incoming webhook 将消息从 API7 企业版发送到 Slack。
- 从顶部导航栏中选择 Organization(组织),然后选择 Contact Points(联系点)。
- 点击 Add Contact Point(添加联系点)。
- 在对话框中,执行以下操作:
- 在 Name(名称)字段中,输入
Slack Notification。 - 在 Type(类型)字段中,选择
Webhook。 - 在 URL 字段中,输入
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX。请替换为你自己的 ID。 - 点击 Add(添加)。
添加基本告警策略
强烈建议配置以下告警策略,因为它们对大多数用户都至关重要。
监控控制面到数据面的 mTLS 证书过期
API7 控制面证书和 API7 控制面 CA 证书可实现控制面与数据面之间安全的 mTLS 通信,这些证书在网关实例部署时激活。这些证书的有效期为 13 个月。
为了主动监控并对网关实例上即将过期的证书发出告警,请实施一项每日任务以检查证书的过期日期。如果网关实例的证书即将过期(在 30 天内),请向紧急响应团队发送电子邮件告警,并在 Slack 中发布通知。
- 从侧边导航栏中选择 Alert(告警),然后点击 Policies(策略)。
- 点击 Add Alert Policy(添加告警策略)。
- 在对话框中,执行以下操作:
-
在 Name(名称)字段中,输入
Gateway Instance Certificate Expiration。 -
在 Severity(严重程度)字段中,选择
High(高)。 -
在 Check Interval(检查间隔)字段中,输入
1440分钟。 -
在 Conditions(条件)字段中,执行以下操作:
- 在 Operator(运算符)字段中,选择
Meet all of the following conditions(AND)(满足以下所有条件(AND))。 - 在 Event(事件)字段中,选择
mTLS certificate between control plane and data plane will expire(控制面和数据面之间的 mTLS 证书将过期)。 - 在 Trigger Gateway Group(触发网关组)字段中,选择
Select all(全选)。 - 在 Rule(规则)字段中,填写距离过期还有 30 天的规则。
- 在 Operator(运算符)字段中,选择
-
点击 Add Notification(添加通知)。
-
在对话框中,执行以下操作:
-
在 Type(类型)字段中,选择
Email(电子邮件)。 -
在 Contact Points(联系点)字段中,选择
Emergency Team Email List。 -
在 Alert Email Subject(告警邮件主题)字段中,输入
[API7 Alert] Gateway Instance Certificate Expiration Warning. -
在 Alert Email Content(告警邮件内容)字段中,输入:
Alert Time: {{.AlertTime.Format "2006 Jan 02 15:04:05"}}, Detail:{{.AlertDetail}}. -
点击 Add(添加)。
-
-
点击 Add Notification(添加通知)。
-
在对话框中,执行以下操作:
-
在 Type(类型)字段中,选择
Webhook。 -
在 Contact Points(联系点)字段中,选择
Slack Notification。 -
在 Alert Message(告警消息)字段中,输入
"text": "{{.AlertDetail}}.". -
点击 Add(添加)。
-
- 点击 Add(添加)。
验证
假设一个控制面证书将在 2024-12-31 过期。在 2024-12-10 时,告警策略触发:
- 收到以下内容的电子邮件:
* Subject: [API7 Alert] Gateway Instance Certificate Expiration Warning
* Alert Time: 2024 DEC 10 17:00:00, Detail: The certificate for gateway instance: gateway 123 will expire in 21 days.
- Slack 中收到一条消息:
The certificate for gateway instance: gateway 123 will expire in 21 days.
- 从侧边导航栏中选择 Alert(告警),然后点击 History(历史记录)。
- 将显示与该事件对应的告警记录。点击 Detail(详情):
- Alert Policy: Gateway Instance Certificate Expiration
- Severity: High
- Alert Time: 5 minutes ago
- Trigger Gateway Group: production group
- Alert Detail: The certificate for gateway instance: gateway 123 will expire in 21 days.
检测网关实例离线
如果网关实例(数据面节点)超过 2 小时未向控制面报告心跳,并且此状态持续 7 天,则该数据面节点将被自动移除,并标记为 offline(离线)。
实施一项每小时执行的任务,以检测网关实例的状态,在出现问题时向紧急响应团队发送电子邮件告警以及 Slack 通知。然后相关人员应该尝试恢复离线的网关实例。
- 从侧边导航栏中选择 Alert(告警),然后点击 Policies(策略)。
- 点击 Add Alert Policy(添加告警策略)。
- 在对话框中,执行以下操作:
- 在 Name(名称)字段中,输入
Gateway Instance Offline。 - 在 Severity(严重程度)字段中,选择
High(高)。 - 在 Check Interval(检查间隔)字段中,输入
60分钟。 - 在 Conditions(条件)字段中,执行以下操作:
- 在 Operator(运算符)字段中,选择
Meet all of the following conditions(AND)(满足以下所有条件(AND))。 - 在 Event(事件)字段中,选择
Gateway instance offline(网关实例离线)。 - 在 Trigger Gateway Group(触发网关组)字段中,选择
Select all(全选)。 - 在 Rule(规则)字段中,填写为
Any gateway instance in the gateway group offline for more than 1 hour(网关组中任意网关实例离线超过 1 小时)。
- 在 Operator(运算符)字段中,选择
- 点击 Add Notification(添加通知)。
- 在对话框中,执行以下操作:
-
在 Type(类型)字段中,选择
Email(电子邮件)。 -
在 Contact Points(联系点)字段中,选择
Emergency Team Email List。 -
在 Alert Email Subject(告警邮件主题)字段中,输入:
[API7 Alert] Gateway Instance Offline Warning. -
在 Alert Email Content(告警邮件内容)字段中,输入:
Alert Time: {{.AlertTime.Format "2006 Jan 02 15:04:05"}}, Detail:{{.AlertDetail}}. -
点击 Add(添加)。
-
- 点击 Add Notification(添加通知)。
- 在对话框中,执行以下操作:
-
在 Type(类型)字段中,选择
Webhook。 -
在 Contact Points(联系点)字段中,选择
Slack Notification。 -
在 Alert Message(告警消息)字段中,输入:
"text": "{{.AlertDetail}}". -
点击 Add(添加)。
-
- 点击 Add(添加)。