预算告警与通知
当预算支出超过所配置的限额百分比时,预算告警会通知你。对于阻断型预算,告警可在其开始拒绝流量前发出;对于仅警告预算,告警则是唯一的通知信号。告警会发送到组织的通知渠道,包括通用 Webhook 或 Slack。
与预算本身一样,预算告警需要 AISIX 托管控制面。
通知渠道
通知渠道是组织级告警目标,在 Notifications 视图中管理。组织内触发的每个告警都会发送到所有已启用的渠道。
支持两种渠道类型:
- Webhook——控制面会将每个告警作为 JSON
POST请求发送到你的 URL。可通过这种方式与事件处理工具、聊天系统或任何接受 HTTP 回调的系统集成。 - Slack——设置 Slack Incoming Webhook URL 后,告警会以易读的 Slack 消息发送。
渠道 URL 为只写字段。创建渠道后,所有视图都只显示脱敏后的形式(https://hooks.slack.com/***)。对于 Slack Incoming Webhook,URL 路径本身就是凭证,因此绝不会原样返回。编辑渠道时将 URL 留空会保留已存储的 URL。
使用 Test 按钮通过渠道发送带有明确标记的测试通知,在依赖该渠道前确认目标可访问。
禁用渠道会停止后续投递。删除渠道会保留其历史投递记录;仍在队列中等待投递的通知会被标记为失败。
私有网络目标
默认情况下,控制面拒绝解析到私有、环回或链路本地地址的渠道 URL。在共享控制面上,操作人员提供的 URL 不应能够访问内部端点。对于 Webhook 接收器或 Slack 代理位于内网的自托管部署,可以在控制面 API 上设置环境变量 AISIX_CLOUD_NOTIFY_ALLOW_PRIVATE_URLS=true(Helm Chart 配置项 api.notifyAllowPrivateURLs),以允许访问此类地址。
告警阈值
每个预算都包含一个告警阈值列表,阈值以预算限额的百分比表示。默认只有一个 80% 阈值。你可以在 Budgets 视图中为每个预算配置阈值。例如,设置 80, 100 可分别在接近限额和达到限额时收到告警。
允许设置高于 100% 的阈值,但这类阈值只会在仅警告预算上触发,因为阻断型预算的支出无法超过限额。
每个阈值在每个预算周期内只触发一次。当支出超过月度预算的 80% 时,系统会向每个已启用的渠道发送一次告警;之后的支出不会重复触发该告警,直到超过下一个阈值,或进入新的预算周期且支出再次增长。对于按团队成员设置的预算(each member in a team),每个成员会独立触发告警。
控制面会持续评估支出。即使之后没有更多流量,支出超过阈值后通常也会在 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 视图包含投递日志,记录每次出站通知的审计信息,包括渠道、状态(pending、delivered 或 failed)、尝试次数、最后一次错误和发送的完整载荷。
发送失败后会按逐步增加的间隔自动重试:首次失败后 1 分钟,然后依次为 5 分钟、15 分钟、1 小时和 6 小时。连续 6 次失败后,投递会被标记为 failed,并保留在日志中供检查。测试发送是同步操作,不会重试。
通过 API 管理渠道
通知渠道属于 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 字段。有关请求结构,请参阅 API 参考。