监控与告警

告警由后台维护任务周期评估:指标在窗口内的计数/数值超过阈值即触发事件,并按规则把事件 POST 到 Webhook。规则按应用隔离,事件保留在内存环缓冲中。

概念​

指标含义
rate_limited窗口内 429/1008 次数
callback_failure窗口内回调投递失败次数
online_drop窗口内在线峰值与当前在线之差(掉线量)
error_5xx窗口内服务端 5xx 次数
  • 规则字段:metric、threshold、windowSec(1-86400)、webhookUrl、enabled。
  • 单应用最多 20 条规则;同一指标后者覆盖前者。
  • 事件记录触发时间、指标、观测值、阈值与投递结果;单应用单指标事件环上限 1000。

前置条件​

  • 服务端已启动(默认 http://127.0.0.1:8080),控制台入口 http://127.0.0.1:8080/console/#alerts。
  • 已设置 X-Admin-Secret(默认 dev-admin;控制台会保存在浏览器 localStorage 的 im.admin.secret)。
  • 已创建应用并在控制台顶部选中应用(模块接口路径都带 {appkey})。
  • 若配置 Webhook,地址需可从服务端访问(http/https)。

步骤​

  1. 查看当前规则与事件

    先确认已有规则,避免覆盖。

  2. 设置规则(整体覆盖)

    提交完整 rules 数组;未包含的旧规则会被删除。

  3. 观察告警事件

    按 metric 过滤事件,查看 delivered/responseCode。

参数表​

操作方法与路径请求体 / 参数
规则查询GET /api/admin/apps/{appkey}/alerts/rules—(含支持的 metric 清单)
规则设置POST /api/admin/apps/{appkey}/alerts/rules{rules:[{metric,threshold,windowSec,webhookUrl,enabled}]}
事件查询GET /api/admin/apps/{appkey}/alerts/eventsmetric、offset、limit(≤200)

示例​

设置回调失败告警并在超阈值时收 Webhook​

Shell
curl -sS -X POST "http://127.0.0.1:8080/api/admin/apps/demo/alerts/rules" \
  -H 'X-Admin-Secret: dev-admin' \
  -H 'content-type: application/json' \
  -d '{"rules":[{"metric":"callback_failure","threshold":5,"windowSec":300,"webhookUrl":"https://example.com/im/alert","enabled":true},{"metric":"rate_limited","threshold":100,"windowSec":60,"webhookUrl":"","enabled":false}]}'

curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/alerts/events?metric=callback_failure&limit=20" \
  -H 'X-Admin-Secret: dev-admin'

常见问题​

规则设置了但没收到告警?​

先确认 enabled=true 且 webhookUrl 可达;再看事件列表是否已触发(阈值/窗口可能未满足)。

事件能保留多久?​

内存环缓冲,单应用单指标上限 1000 条;重启后丢失。长期留存请由接收方落库。

online_drop 怎么算?​

窗口内在线峰值减去当前在线用户数;用于发现大面积掉线。

相关链接​