预算告警与通知
当支出超过预算限额的指定百分比时,AISIX Cloud 预算告警会通知你。你可以用它在阻断型预算开始拒绝流量前提醒运维人员,或监控仅告警预算。
前提条件
开始前,请准备以下内容:
- 至少一个现有预算。
- 用作组织通知渠道的 Webhook URL 或 Slack Incoming Webhook URL。
配置通知渠道
通知渠道是组织级告警目标,在 Notifications 视图中管理。组织内触发的每个告警都会发送到所有已启用的渠道。
支持两 种渠道类型:
- Webhook:控制面会将每个告警作为 JSON
POST请求发送到你的 URL。可通过这种方式与事件处理工具、聊天系统或其它接受 HTTP 回调的系统集成。 - Slack:设置 Slack Incoming Webhook URL 后,告警会以易读的 Slack 消息发送。
创建并测试渠道:
- 打开 Notifications,然后选择 New channel。
- 在 Name 中输入名称,选择 Type,并填写 URL。
- 保持选中 Enabled,然后选择 Create channel。
- 为新渠道选择 Test,并确认目标已收到测试通知。
渠道 URL 是只写字段。创建渠道后,控制面仅显示类似 https://hooks.slack.com/*** 的脱敏形式。编辑渠道时将 URL 留空会保留已存储的 URL。
禁用渠道会停止后续投递。删除渠道会保留其历史投递记录;仍在队列中等待投递的通知会被标记为失败。
允许私有网络目标
你可以保存解析到私有、环回或链路本地地址的渠道 URL,但默认情况下,对该 URL 的测试和告警投递会失败。这可以防止共享控制面上由操作人员提供的 URL 访问内部端点。
对于 Webhook 接收器或 Slack 代理位于内网的本地部署控制面,请在控制面 API 上设置 AISIX_CLOUD_NOTIFY_ALLOW_PRIVATE_URLS=true。对应的 Helm Chart 配置项 为 api.notifyAllowPrivateURLs。
配置告警阈值
每个预算都包含一个告警阈值列表,阈值以预算限额的百分比表示。按照以下步骤为每个预算配置阈值:
- 打开 Budgets 视图,并选择要编辑的预算。
- 在 Alert thresholds (%) 中输入一个或多个整数百分比,多个值之间用逗号分隔。例如,设置
80, 100可分别在接近限额和达到限额时收到告警。 - 保存预算。
最多可输入 20 个不重复的阈值,取值范围为 1 到 200。若留空,控制面将使用 80。
每个阈值在每个预算周期内只触发一次。当支出超过月度预算的 80% 时,控制面会向每个已启用的渠道发送一次告警。同一周期内不会重复发送 80% 告警,但其它已配置阈值可以分别触发告警。周期重置后,每个阈值都可以再次触发。对于按团队成员设置的预算(each member in a team),每个成员会独立触发告警。
对于阻断型预算,高于 100% 的阈值通常不会达到,因为后续请求会在达到限额时被拒绝。不过,低于限额时已准入的请求可能在完成时使支出超过限额,并发请求也可能造成超额。出现这类情况时,高于 100% 的阈值可以触发。
控制面会持续评估支出。即使之后没有更多流量,支出超过阈值后通常也会在 30 秒内发出告警。
Webhook 载荷
Webhook 渠道会收到以下 JSON 格式的告警:
{
"event": "budget_threshold",
"dedup_key": "budget_threshold:6f6d…:…:1782864000:80",
"org_id": "1f0c…",
"budget_id": "6f6d…",
"budget_name": "payments-team monthly",
"scope": "team",
"scope_ref": "9a2b…",
"subject_name": "payments-team",
"threshold_pct": 80,
"percent": 82.3,
"spent_cents": 8230,
"limit_cents": 10000,
"period": "month",
"period_start": "2026-07-01T00:00:00Z",
"triggered_at": "2026-07-21T09:00:00Z"
}
投递采用至少一次语义:重试或多渠道告警可能会多次到达同一接收器。同一次触发的所有投递都使用相同的 dedup_key。如果接收器必须对每个告警只处理一次,请使用该字段去重。Slack 渠道会以文本消息的形式呈现相同信息。
验证投递
Notifications 视图中的 Delivery log 会记录每次出站通知。每条记录包含渠道、状态(pending、delivered 或 failed)、尝试次数、最后一次错误和完整载荷。
发送失败后会按逐步增加的间隔自动重试:首次失败后 1 分钟,然后依次为 5 分钟、15 分钟、1 小时和 6 小时。连续 6 次失败后,投递会被标记为 failed,并保留在日志中供检查。测试发送是同步操作,不会重试。
通过 AISIX Cloud Admin API 管理告警
通知渠道属于 AISIX Cloud Admin API:
GET /notification_channelsPOST /notification_channelsGET /notification_channels/{channel_id}PATCH /notification_channels/{channel_id}DELETE /notification_channels/{channel_id}POST /notification_channels/{channel_id}/test
预算告警阈值对应预算资源的 alert_thresholds 字段。有关请求和响应结构,请参阅 AISIX Cloud Admin API 参考。