告警和联系人
使用 API 网关时,开发人员可能会遇到各种异常,例如即将到期的 SSL 证书或 HTTP 5xx 响应代码超过预定义的阈值。为了处理这些场景,API7 网关提供了一套异常事件监控和告警触发机制。该机制可以实时跟踪异常情况,一旦发现问题,立即通过电子邮件和 Webhook 向预设联系人发送告警通知,确保及时关注和解决。
告警如何运作?
API7 网关预先配置了 20 多个异常事件,每个异常事件都可以定制特定的触发规则和阈值。此外,用户可以选择应用这些规则的网关组。
告警策略提供两种触发条件模式:ALL 或 ANY。ALL 模式需要满足所有条件才能激活,而 ANY 模式满足任意条件即可生效。请注意,两种模式不能在单个告警策略中同时使用。
用户可以选择告警的严重级别:High(高)、Medium(中)或 Low(低),并设置告警策略的检查间隔。严重级别将包含在告警通知中,但不会影响 API7 网关中的告警策略或规则设置。最小检查间隔为 1 分钟,即事件生效后每分钟向指定联系人发送告警通知。
通知可以通过 Email(电子邮件)或 Webhook 发送。用户可以使用告警变量与模板灵活定制通知内容,并与各种系统集成。
建议在通知中添加告警策略名称 {{ .AlertPolicyName }} 和 描述 {{ .Description }},以帮助识别哪个策略触发了告警。
可以为通知配置多个联系人,例如向两个电子邮件地址和三个 Webhook 联系人发送告警。
API7 网关控制面中的后台进程每分钟检查一次所有告警策略,判断是否满足触发条件和阈值。满足条件时,系统会向相应的联系人列表发送通知。
API7 网关还支持保存、查看和搜索告警日志,日志最长保留 30 天。这些日志记录告警策略配置,以及发送通知时的请求和响应详情,便于排查问题。
为什么要使用联系人?
联系人是一个组织级别的概念,它抽象了通知方式(Email 或 Webhook)以及哪些渠道(人员、Slack 或运维平台)接收通知。
例如,如果你将 tom@acme.com 配置为告警模块中多个告警规则的收件人,而没有联系人,则每当需要更改时,你都需要更新每个告警策略中的电子邮件地址。这个过程繁琐且容易出错。
引入联系人可以将告警策略与特定通知配置分离。例如,你可以添加 Alert_to_dev_team 告警策略,并将其联系人设置为 Notify_dev_team_slack(Webhook 类型)。即使联系人的 URL 或身份认证令牌发生变化,也不需要修改告警策略。
用户需要保证控制面服务器与联系人之间的网络连接顺畅。具体来说,如果使用 Email 类型的联系人,需要在 Organization(组织)菜单下预先配置 SMTP 服务器,以确保邮件可以发送。
用例
数据面节点健康状况
当健康的网关实例数量低于指定阈值(例如 3 个)时,表明提供外部服务的 API 网关节点可能出现故障。这是一个高优先级事件,需要通过 Webhook 向 Slack 发送告警,并同时通知一组指定的电子邮件地址。
5xx 响应代码比率
如果 API 请求中 5xx 响应码的比例超过指定阈值(例如 0.2%),则表明 API 网关或上游服务可能发生故障,需要及时处理。可以通过 Webhook 集成短信服务,将告警发送给运维工程师。
SSL 证书到期
假设某网站的 SSL 证书在一定期限内(例如 30 天)即将到期。这表明需要轮换 SSL 证书,这不是一个紧急任务。运维工程师可以通过 Webhook 触发创建 Jira 任务。