跳到主要内容

预算告警与通知

当支出超过预算限额的指定百分比时,AISIX Cloud 预算告警会通知你。你可以用它在阻断型预算开始拒绝流量前提醒运维人员,或监控仅告警预算。

前提条件

开始前,请准备以下内容:

  • 至少一个现有预算
  • 用作组织通知渠道的 Webhook URL 或 Slack Incoming Webhook URL。

配置通知渠道

通知渠道是组织级告警目标,在 Notifications 视图中管理。组织内触发的每个告警都会发送到所有已启用的渠道。

支持两种渠道类型:

  • Webhook:控制面会将每个告警作为 JSON POST 请求发送到你的 URL。可通过这种方式与事件处理工具、聊天系统或其它接受 HTTP 回调的系统集成。
  • Slack:设置 Slack Incoming Webhook URL 后,告警会以易读的 Slack 消息发送。

创建并测试渠道:

  1. 打开 Notifications,然后选择 New channel
  2. Name 中输入名称,选择 Type,并填写 URL
  3. 保持选中 Enabled,然后选择 Create channel
  4. 为新渠道选择 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

配置告警阈值

每个预算都包含一个告警阈值列表,阈值以预算限额的百分比表示。按照以下步骤为每个预算配置阈值:

  1. 打开 Budgets 视图,并选择要编辑的预算。
  2. Alert thresholds (%) 中输入一个或多个整数百分比,多个值之间用逗号分隔。例如,设置 80, 100 可分别在接近限额和达到限额时收到告警。
  3. 保存预算。

最多可输入 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 会记录每次出站通知。每条记录包含渠道、状态(pendingdeliveredfailed)、尝试次数、最后一次错误和完整载荷。

发送失败后会按逐步增加的间隔自动重试:首次失败后 1 分钟,然后依次为 5 分钟、15 分钟、1 小时和 6 小时。连续 6 次失败后,投递会被标记为 failed,并保留在日志中供检查。测试发送是同步操作,不会重试。

通过 AISIX Cloud Admin API 管理告警

通知渠道属于 AISIX Cloud Admin API:

  • GET /notification_channels
  • POST /notification_channels
  • GET /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 参考

后续步骤

接下来可阅读日志记录与审计,调查预算行为背后的请求和控制面变更。如需理解驱动预算评估的支出记录,请参阅用量上报