监控与告警
告警由后台维护任务周期评估:指标在窗口内的计数/数值超过阈值即触发事件,并按规则把事件 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)。
步骤
- 查看当前规则与事件
先确认已有规则,避免覆盖。
- 设置规则(整体覆盖)
提交完整 rules 数组;未包含的旧规则会被删除。
- 观察告警事件
按
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/events | metric、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 怎么算?
窗口内在线峰值减去当前在线用户数;用于发现大面积掉线。