ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Metapi 告警系统深入:告警冷却、每日总结与通知节流的完整设计原理

Metapi 告警系统深入:告警冷却、每日总结与通知节流的完整设计原理 Metapi 告警系统深入告警冷却、每日总结与通知节流的完整设计原理【免费下载链接】metapi把你在各处注册的 New API / One API / OneHub / DoneHub / Veloera / AnyRouter / Sub2API 等站点 汇聚成 一个 API Key、一个入口自动发现模型、智能路由、成本最优项目地址: https://gitcode.com/gh_mirrors/meta/metapiMetapi是一款把 New API、One API、OneHub、DoneHub、Veloera、AnyRouter、Sub2API 等上游站点汇聚成一个 API Key、一个入口的 API 聚合与智能路由工具。它的告警系统由三件套组成告警冷却机制防止重复轰炸、通知节流同内容合并计数、每日总结通知一天一次的运营报表。本文带你读懂这套少打扰、高信噪比的通知设计。一、三层结构事件源 → 节流器 → 渠道分发Metapi 的告警不是一条直线而是三层管道层次职责核心模块事件源检测 Token 失效、代理失败、余额过低、站点公告等alertService.ts、alertRules.ts节流器按告警签名 冷静期决定是否发送、合并重复notificationThrottle.ts渠道分发并行推送到 Webhook / Bark / Server酱 / Telegram / SMTPnotifyService.ts所有事件如Token 已失效、代理全部失败都会先落库到事件表并更新账号健康状态再调用统一的sendNotification出口——节流只拦外发通知不拦记录与状态这是它的关键取舍记录永远完整打扰按需收敛。二、告警冷却机制如何用 300 秒挡住告警风暴 想象一下某个站点的 Token 过期后每秒一次的代理请求都会失败。如果每次都推一条Token 已失效你的 Telegram 会在几分钟内收到几百条一模一样的消息。Metapi 的解法就是告警冷静期cooldown。2.1 三步判定签名 → 比对 → 合并生成签名把级别 标题 正文三段用||拼接成唯一签名见 notificationThrottle.ts。内容稍有不同比如账号名变了就是新告警会重新发送。冷却比对evaluateNotificationThrottle 检查该签名最近一次发送时间——在冷静期内直接拦截并让suppressedCount计数 1超过冷静期放行。合并播报放行时若mergedCount 0正文会自动追加一行[通知合并] 冷静期内已合并 N 条重复告警见 notifyService.ts让你知道这 5 分钟里其实失败了 200 次而不是只看到 1 条。2.2 冷静期在哪里调默认300 秒由 config.ts 读取NOTIFY_COOLDOWN_SEC也可以直接在后台「系统 → 通知设置」页面修改保存后立即生效持久化到notify_cooldown_sec配置项见 settings.ts。页面顶部就是这块告警去噪与冷静期卡片2.3 状态回收不泄漏内存节流状态是一个 MapMetapi 会定期清理超过 6 倍冷静期至少 10 分钟没再出现的签名pruneNotificationThrottleState避免长时间运行后状态表无限膨胀。三、每日总结通知一天一条的运营日报 除了出事才喊的即时告警Metapi 还有一条每日总结——把当天的运营数据打包成一条日报推给你。3.1 日报里有什么collectDailySummaryMetrics 按本地时区的自然日聚合四类指标账号概览总数 / 活跃数 / 低余额$1数量签到统计总计 / 成功 / 跳过 / 失败代理统计总请求 / 成功 / 失败 / 消耗 Tokens费用统计当日支出、签到奖励与净值奖励 − 支出最终由 buildDailySummaryNotification 拼成每日总结 YYYY-MM-DD的多行文本推送。3.2 定时与豁免节流日报任务由 cron 调度默认每天 23:58 触发checkinScheduler.ts表达式可通过daily_summary_cron自定义。注意它调用sendNotification时带了bypassThrottle: true——日报永远绕过冷却机制同时requireChannel throwOnFailure保证没配渠道就报错不会静默丢失。这个设计说明了冷却机制的边界它只约束高频重复告警不约束刻意安排的关键通知。四、告警从哪来健康探测与代理失败判定 告警的原材料来自多处运行时检测Token 失效告警reportTokenExpired 同时做四件事——写事件、把账号状态置为expired、更新运行时健康状态、外发通知失效判定由 alertRules.ts 完成会识别 401、jwt expired、令牌过期等中英文线索甚至自动附加请到中转站重新生成令牌后重绑的修复提示。代理全失败告警某模型所有通道都失败时触发代理全部失败事件失败明细可在使用日志页面逐条排查状态、耗时、计费一目了然账号健康监控账号级健康状态active / unhealthy驱动了可用性监控页的实时展示是告警的可视化落点其他来源站点公告首次发现、更新中心版本提醒、后台任务完成/失败都走同一个sendNotification出口因此同样享受冷却保护。五、动手 3 步选渠道 → 调冷静期 → 发测试通知✅ 配置全部集中在「通知设置」页面无需记环境变量勾选渠道Webhook自动识别企业微信 / 飞书机器人并切换消息格式、Bark、Server酱、Telegram、SMTP 邮件可多选并行发送任一路失败不影响其他路notifyService.ts。设置冷静期默认 300 秒上游频繁抖动的场景可以调大到 600~900 秒进一步降噪。点发送测试通知测试消息会绕过节流bypassThrottle并严格校验发送结果确保渠道链路真正打通。各环境变量速查见配置说明notify failed等运行问题的排查思路见运维手册。写在最后Metapi 告警系统的哲学可以浓缩成一句话该记住的全部记住该闭嘴的全部闭嘴。冷却机制用签名 冷静期 合并计数三件套挡住了告警风暴每日总结用一条日报替代了零散刷屏而bypassThrottle的豁免通道则保证了关键通知绝不缺席。对同时管理几十上百个上游账号的用户来说这套设计让收到通知这件事重新变得值得信任。【免费下载链接】metapi把你在各处注册的 New API / One API / OneHub / DoneHub / Veloera / AnyRouter / Sub2API 等站点 汇聚成 一个 API Key、一个入口自动发现模型、智能路由、成本最优项目地址: https://gitcode.com/gh_mirrors/meta/metapi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表