1系统概览
应对"阿里云百炼不定期下架过期模型、API 用着用着突然失效"的问题,构建一个部署在 Linux 服务器上的轻量监控服务。
🎯核心目标
第一时间感知模型下线与请求异常,把"用户被动发现 API 失效"变为"系统主动告警"。
🔁双通道监测
① 定时轮询云端邮箱,监听阿里云模型下线通知;② 按配置频次主动调用每个模型验证可用性。
📮零本地状态
不依赖任何本地文件做缓存;已告警标识直接查询云端发件箱获取,重启无副作用、多机可部署。
📣聚合告警
本轮所有异常合并为一条消息,同时推送钉钉群机器人与邮件群发,通知到公司内部群。
2系统架构
三层结构:外部依赖(左侧) → 监控系统核心(中) → 通知出口(下)。调度器按配置频次触发整轮流程。
关键设计:监控系统不落任何本地文件。去重依据来自云端发件箱留存——服务重启、迁移、多副本部署均不会丢失告警状态。
3单轮执行流程
每次轮询:邮件检查与模型探测并行执行;本轮结束时统一汇总,异常事件聚合推送,全部正常则静默。
4调度策略
配置"每天执行次数"即可,系统按 24 / N 小时均匀分布整点触发;也可用标准 cron 表达式精确指定时刻。
- 数字频次:配置
daily_count = N,即每天 N 次,按 24/N 小时均匀分布整点。
- 精确时刻:可选用标准 cron 表达式(分 时 日 月 周)指定任意时刻,优先级高于数字频次。
- 单轮超时:单轮执行设整体超时保护,避免卡死影响后续轮次。
- 时间窗口:邮件仅检索近 3 天收到的通知,天然屏蔽历史陈旧通知,避免重复告警。
5模型探测机制
基于阿里云官方 dashscope SDK 发起推理请求,按 DashScope 协议判定健康状态。
💬chat · 文本对话
文本对话类模型(如 qwen-turbo / qwen-plus / qwen-max),发送一句固定问候语验证。
🖼️image · 图像输入
多模态图像输入模型(如 qwen-vl 系列),附带一张示例图与固定提问验证。
🎙️audio · 音频输入
音频输入模型(如 qwen-audio 系列),附带一段示例音频与固定提问验证。
✅健康判定规则
正常:HTTP 200 且响应包含配置的必填字段。
警告:HTTP 200 但缺少必填字段(响应格式异常)。
紧急:HTTP 非 200(模型下线、鉴权失败、参数变更等)。
📋可校验内容
每个模型可配置期望响应中必须包含的字段(点路径,如输出正文、请求 ID),缺字段即视为异常,防止"返回 200 但内容不对"的假成功。
判定口径:默认响应成功返回 HTTP 200 状态码;一旦非 200 或字段缺失,即触发本轮告警。
6邮件告警与云端去重
模型下线通知"仅告警一次",通过云端发件箱留存 + 标题内嵌 Message-ID 实现无状态去重,不依赖任何本地文件。
去重原理:告警邮件标题携带原始通知的 Message-ID 并留存于云端发件箱;下一轮直接查询发件箱即可得知"这条通知是否已告警过",无需任何本地缓存。
7告警聚合与双通道通知
模型告警是即时性的:只要本轮探测到异常,就在本轮结束时聚合推送,不跨轮积压。
📦聚合规则
例:10 个模型中 3 个异常 → 本轮结束后把问题模型列表及错误详情合并为一条告警,而非逐条轰炸。邮件下线事件按事件逐条独立推送(因涉及各自去重)。
🤖钉钉群机器人
向公司内部群推送 Markdown 告警,支持 HMAC 加签与指定成员 @提醒,@全体可选。
📧邮件群发
通过 SMTP 向配置的通知人邮箱列表群发;标题内嵌 Message-ID 供云端发件箱去重闭环使用。
🛡️系统自身异常兜底
邮箱连接失败等系统级错误仅走钉钉,避免"告警通道自身故障导致死循环刷邮件"。
双通道同时推送:钉钉负责即时提醒与 @成员,邮件负责留存归档与二次通知,互为备份。