深夜十一点,一家繁忙的餐厅后厨里,老厨师长正盯着墙上挂着的出菜记录板。他担心的不是今晚卖了多少道菜,而是有多少道菜出了问题——是菜做咸了?是食材不新鲜?还是烤箱突然罢工导致整批菜烤糊了?如果不能快速分辨这些问题,明天晚上餐厅就会失去一半老顾客。 AI 推理服务上线后,你就像这位厨师长。模型在线上不停地“出菜”——处理用户的每一个请求。有的返回了正确答案,有的却悄悄“做坏了菜”。这些“坏菜”可能是模型理解错了用户意图(业务错误),也可能是服务器内存爆了导致请求直接失败(系统错误)。如果你不能精准监控“坏菜率”并及时响应,用户就会用脚投票,转向别家“餐厅”。 本文将带你构建一套完整的错误率监控方案,学会区分错误类型、多维度分解问题根源,并用智能算法在问题失控前拉响警报。

岗位关联

错误率监控是 AI 推理服务的“生命体征监测仪”,掌握它能让你从被动救火变成主动预防,是 AI 工程师进阶为可观测性专家的必备技能。

目录
  1. 可视化演示
  2. 错误率为何关键
  3. 两类错误分类
  4. 多维度分解
  5. 异常检测告警
  6. 实战案例复盘
  7. 监控最佳实践
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

三步展示推理错误率监控:错误分类(业务错误fmt/conf vs系统错误OOM/T.O/GPU)、多版本错误率时序(v1/v2/v3+SLO阈值告警)、漂移检测(P(X)数据漂移与P(Y|X)概念漂移)。

本节配有交互动效(进入视口后自动加载,约 3KB)。

错误类型分类 biz:业务错误(格式异常fmt+置信度过低conf) sys:系统错误(OOM内存+T/O超时+GPU故障) err_rate = (biz + sys) / total_req 区分业务与系统错误,分别触发不同的告警与熔断策略。

错误率为何关键

老厨师长每天打烊后必做一件事:翻看出菜记录板,数一数今天有多少道菜被客人退了回来。这个数字从不骗人,它直接说明后厨今天运作得怎么样——食材新鲜吗?厨师生病了吗?烤箱火力稳吗?错误率,就是 AI 推理服务的“退菜率”。

对于 AI 推理服务来说,错误率指的是所有请求中处理失败或结果无效的比例。它不像 GPU 利用率那样只反映硬件状态,也不像延迟那样只反映速度,而是直接告诉你:用户拿到的结果到底行不行。一个错误率飙升的服务,哪怕延迟再低、吞吐再高,在用户眼里也是一家“总上错菜的餐厅”。

正因如此,错误率通常被列为 SLO(Service Level Objective,服务等级目标)的核心指标之一。团队会和业务方约定:“我们保证每月错误率低于 0.1%”。一旦超出这个红线,就意味着服务没有兑现承诺,可能面临赔偿、客户流失等后果。错误率高并不总是意味着系统崩溃——也许是模型悄悄“变笨”了,也许是新版本没经过充分测试就上线了。只有盯紧错误率,才能第一时间发现这些隐患。

两类错误分类

餐厅的“坏菜”有两种截然不同的原因:一种是厨师把菜做咸了(手艺问题),另一种是烤箱坏了导致整批菜烤焦(设备问题)。老厨师长处理这两种问题的方式完全不同——前者要培训厨师,后者要报修设备。AI 推理服务的错误,同样要一分为二来看。

业务错误(Business Error) 是指模型虽然成功运行了,但输出的结果不满足要求。最典型的两类是:输出格式异常(比如要求 JSON 格式却返回了纯文本)和置信度过低(模型给结果时自己都不确定,概率值低于安全阈值)。这类错误不像程序崩溃那样明显,常常是“笑里藏刀”——服务看着正常,实际在批量生产废品。

系统错误(System Error) 则是指底层平台无法正常完成推理任务,包括OOM(内存溢出)、请求超时和GPU 故障等。这类错误往往表现为请求直接失败,客户端收到 5xx 错误码。区分两类错误是监控的第一步。在代码层面,我们通常用不同的错误码前缀来标记:业务错误用 BIZ_ 开头,系统错误用 SYS_ 开头。这样监控系统只要看一眼错误码,就知道该通知算法团队还是运维团队。

区分它们并不只是为了归类好看,而是因为处理路径完全不同。业务错误需要检查 prompt 设计、模型微调数据、解码参数;系统错误则需要检查显存分配、容器资源限制、GPU 健康状态。如果用一套流程处理两类问题,就像用修烤箱的方法去培训厨师,注定事倍功半。

多维度分解

老厨师长发现今天退菜率异常升高后,不会只盯着总数发愁。他会翻看记录板:是哪个窗口退的菜多?是哪个厨师负责的菜品?是哪个时间段集中爆发?只有把这些维度拆开看,才能快速锁定问题源头。AI 错误率监控也是同样的思路。

按模型版本聚合是最常用的切分维度。假设你有 v1.0 和 v2.0 两个模型同时在服务,如果 v2.0 的错误率是 v1.0 的十倍,问题显而易见——新版本有缺陷,应该立即回滚或灰度切换。按请求类型聚合同样重要——对话请求和摘要请求的错误模式可能完全不同,前者可能因上下文过长而超时,后者可能因模型输出过长而格式错乱。按时间窗口聚合则能揭示周期性问题:是每天晚高峰集中爆发,还是某次发布后的持续恶化?

这三个维度并非互斥,而是可以交叉分析。例如,我们可以用“最近 5 分钟 × 模型 v2.0 × 对话请求”这个组合,精确锁定“新模型在对话场景下的错误率异常”。这种三维交叉定位的能力,让错误率监控从“只知道生病了”升级为“知道病灶在哪个器官”。

在实现层面,这通常通过多维聚合查询完成。监控系统把每次请求的关键维度(模型版本、请求类型、时间戳)和结果(成功/业务错误/系统错误)记录为一条带标签的时序数据,然后用 PromQL 或 SQL 按任意维度组合做聚合计算。标签越多,切分的自由度越大,但也要警惕维度爆炸带来的存储成本。

异常检测告警

如果老厨师长只有一条规矩——“退菜率超过 10% 就关店”,那生意早黄了。因为等到退菜率飙到 10% 再行动,客户早就跑光了。他需要的是:在退菜率还只是略微偏高时,就能察觉到不对劲。AI 服务的异常检测告警,承担的就是这个“提前察觉”的职责。

最基本的方法是阈值告警:设定一个固定阈值(比如错误率 > 1%),超过就报警。实现简单,但短板明显——不同时段的错误率差异很大,凌晨低峰期 0.5% 的错误率可能已经异常,而晚高峰 1% 可能只是正常波动。为了更聪明地判断,可以引入滑动窗口基线:取最近 7 天同一时间窗口的错误率平均值作为基线,当前值一旦超过基线 3 倍标准差,就判定为异常。这就像厨师长不是凭直觉说“今晚退菜多了”,而是和上周三同一时段对比后得出结论。

更进一步的趋势告警则关注变化方向:连续 5 分钟内错误率单调上升,即使绝对值还没超阈值,也提前报警。这对应的是“烤箱温度正在爬升,还没到烧焦点但趋势不对”的情形。常见的趋势检测方法包括线性回归斜率分析和 EWM(指数加权移动平均)——EWMA 的公式是对历史错误率做指数加权,近期数据权重更高:

$E_t = \alpha \times x_t + (1 - \alpha) \times E_{t-1}$

当前时刻的加权平均 $E_t$ 等于当前观测值 $x_t$ 与上一时刻加权平均 $E_{t-1}$ 的线性组合,由系数 $\alpha$ 控制近期数据的权重(通常取 0.2~0.3)。当 $E_t$ 连续上升超过预设幅度时,触发趋势告警。

1. 当前加权值计算:$E_t$ 是第 $t$ 时刻的指数加权平均错误率,$\alpha$ 越大,当前观测值的影响力越大。

Et=α×xt+(1−α)×Et−1\displaystyle E_t = \alpha \times x_t + (1 - \alpha) \times E_{t-1}

2. 初始值设定:第一个时刻,通常令 $E_0$ 等于首个观测值 $x_0$,避免冷启动偏差。

E0=x0\displaystyle E_0 = x_0

3. 趋势判定:当 $E_t - E_{t-3} > \beta$($\beta$ 为预设增幅阈值)时,判定为上升趋势。

Et−Et−3>β\displaystyle E_t - E_{t-3} > \beta

告警分级的核心思想是“别把所有问题都当成消防警报”。P0 级(系统崩溃、大面积错误)需要立即调用值班人员;P1 级(错误率超阈值但可控)需要 15 分钟内响应;P2 级(轻微波动)只需记录跟踪。合理的分级避免“狼来了”效应,保证真正严重的异常能第一时间吸引注意力。

实战案例复盘

老厨师长最有价值的能力不是会做菜,而是能根据记录板上的线索还原昨晚发生了什么。AI 工程师排查错误率问题,同样需要案例积累。我们来看两个真实场景。

案例一:输出格式异常排查。某聊天机器人服务的错误率从 0.2% 突然涨到 3.5%,但服务器负载和延迟都正常,系统错误也没有增加。按模型版本维度拆分后发现,v2.1 模型的业务错误率显著高于 v1.9。进一步查看日志发现,v2.1 在少数对话中返回了 Markdown 格式而非约定的纯文本,导致下游解析失败。根因是提示词中缺少了格式约束,回滚到 v1.9 后错误率立即恢复。这个案例说明,当系统指标正常而错误率升高时,优先按模型版本分解,往往能快速定位问题。

案例二:GPU 故障定位。某 AI 绘画服务错误率在一个小时内从 0.1% 升到 8%,且系统错误占比突增。按请求类型聚合发现,所有失败请求都路由到了同一个 GPU 节点。登录该节点检查,发现 GPU 显存温度过高导致 ECC 错误暴增,推理结果被硬件层丢弃。处理方式是立即将该节点下线并转移流量,错误率在 5 分钟内恢复正常。这次快速定位的功臣是“请求类型 + 实例 ID”的交叉维度,如果只看全局错误率,可能还要排查几个小时。

两个案例共同揭示了一个方法论:错误率告警触发后,按照业务/系统二分 → 多维聚合 → 单点确认的顺序排查。先判断是哪类错误,再逐层缩小范围,最后定位到具体模型版本或机器实例。这个过程与老厨师长“看记录板 → 查窗口 → 找厨师”的排查路径如出一辙。

监控最佳实践

老厨师长经营餐厅多年,总结出一套后厨质量管理的“规矩”:每道菜出锅前必须拍照留样,客人退菜必须记录原因,冰箱温度每天定时检查三次。AI 服务的错误率监控也需要一套标准化的最佳实践。

首先,错误码必须规范化。每个错误都要分配稳定的错误码,并纳入统一的错误码表管理,禁止随手写字符串。建议格式为 服务名_错误类型_具体原因,例如 chat_BIZ_FORMAT_INVALID 表示对话服务的业务格式错误,embedding_SYS_OOM 表示向量服务的系统内存溢出。统一的错误码让聚合查询和告警规则编写变得可靠。

其次,日志必须结构化。错误日志不要只写一句“出错了”,要包含请求 ID、模型版本、输入长度、错误码等字段,使用 JSON 格式输出。这样监控系统才能对日志做自动解析和维度提取。同时,业务错误和系统错误的日志要分开存储,避免相互干扰。

最后,告警必须分级响应。建议设置三级告警:P0 级为错误率超过 5% 或系统错误占比超过 50%,触发电话告警;P1 级为错误率超过 SLO 上限的 50%,触发消息告警并要求 15 分钟内响应;P2 级为错误率超过基线 3 倍标准差但未达 P1 标准,记录工单并跟踪。同时,每周做一次告警规则回顾,剔除那些从未触发或频繁误报的规则,保持告警的“灵敏度”和“精准度”平衡。

实践清单总结:

  • 建立错误码表,规范命名
  • 日志输出 JSON 结构化字段
  • 按业务/系统分类配置不同告警策略
  • 告警分级 + 值班轮换 + 周度回顾

AI 应用场景

大模型聊天机器人服务质量保障

阶段:模型部署与运维

解决的问题:传统聊天机器人上线后,运维团队只能通过用户投诉或人工抽检发现问题,往往在错误率升高数小时后才察觉。AI 可观测性方案通过实时错误率监控区分业务错误(模型回答格式异常、置信度过低)与系统错误(GPU 资源耗尽、推理服务超时),并结合多维度分解定位到具体模型版本和对话类型,实现分钟级告警。

具体案例:某客服机器人团队在监控面板上发现“业务错误率-模型 v3.0-多轮对话”维度异常升高,日志分析发现 v3.0 在超过三轮回话后开始输出重复内容。团队立即回滚至 v2.5 并限制多轮长度,错误率从 4.2% 回落至 0.3%。整个过程从告警到恢复仅用 20 分钟。

自动驾驶数据标注平台质量监控

阶段:数据标注与质检

解决的问题:数据标注平台每天处理数百万张图片的推理标注任务,单张图片失败不会引起注意,但批量失败会导致标注任务滞压。通过监控“标注请求错误率”,按“标注类型 × 图片分辨率”维度聚合,快速识别特定类型(如夜间图像)的系统错误率飙升,及时扩容或修复模型服务。

具体案例:某标注平台发现“夜间图像 + 检测模型 v2.0”的错误率在晚上 8 点后从 0.5% 增至 6%。排查发现 v2.0 在低光照条件下输出置信度普遍低于阈值,触发了大量业务错误。团队针对夜间场景部署了专门的图像增强预处理模块,错误率降至 0.8%。

Python 演示

python90 行
"""错误率监控与告警演示:模拟推理服务错误跟踪与告警触发。"""import randomimport timefrom collections import defaultdict  class ErrorRateMonitor:    def __init__(self, biz_threshold=0.01, sys_threshold=0.005):        self.biz_threshold = biz_threshold        self.sys_threshold = sys_threshold        self.requests = []  # 请求记录列表     def record(self, model_version, request_type, biz_error, sys_error):        """记录一次请求结果。"""        self.requests.append({            'model': model_version,            'type': request_type,            'biz': biz_error,            'sys': sys_error,            'ts': time.time()        })     def error_rate(self, window_sec=60):        """计算最近 window_sec 秒内的错误率。"""        now = time.time()        recent = [r for r in self.requests if now - r['ts'] <= window_sec]        total = len(recent)        if total == 0:            return {'total': 0, 'biz': 0, 'sys': 0}        biz_count = sum(1 for r in recent if r['biz'])        sys_count = sum(1 for r in recent if r['sys'])        return {            'total': (biz_count + sys_count) / total,            'biz': biz_count / total,            'sys': sys_count / total        }     def breakdown_by_model(self, window_sec=60):        """按模型版本分解错误率。"""        now = time.time()        recent = [r for r in self.requests if now - r['ts'] <= window_sec]        grouped = defaultdict(lambda: {'total': 0, 'err': 0})        for r in recent:            g = grouped[r['model']]            g['total'] += 1            if r['biz'] or r['sys']:                g['err'] += 1        return {m: g['err'] / g['total'] for m, g in grouped.items() if g['total'] > 0}     def check_alerts(self):        """检查是否触发告警。"""        rates = self.error_rate()        alerts = []        if rates['biz'] > self.biz_threshold:            alerts.append(f"业务错误率 {rates['biz']*100:.2f}% 超过阈值 {self.biz_threshold*100:.1f}%")        if rates['sys'] > self.sys_threshold:            alerts.append(f"系统错误率 {rates['sys']*100:.2f}% 超过阈值 {self.sys_threshold*100:.1f}%")        return alerts     def simulate(self, num_requests=2000):        """模拟一批请求。"""        for i in range(num_requests):            model = 'v2.0' if random.random() < 0.7 else 'v1.9'            req_type = 'chat' if random.random() < 0.6 else 'summary'            # 少量故障注入,制造告警场景            biz_error = random.random() < 0.02            sys_error = random.random() < 0.005            self.record(model, req_type, biz_error, sys_error)  def main():    monitor = ErrorRateMonitor()    print("开始模拟 2000 个请求...")    monitor.simulate(2000)    rates = monitor.error_rate()    print(f"总错误率: {rates['total']*100:.2f}%")    print(f"业务错误率: {rates['biz']*100:.2f}%")    print(f"系统错误率: {rates['sys']*100:.2f}%")    print("按模型版本分解:", {k: f"{v*100:.2f}%" for k, v in monitor.breakdown_by_model().items()})    alerts = monitor.check_alerts()    if alerts:        print("告警触发:")        for a in alerts:            print(f"  - {a}")    else:        print("未触发告警,服务运行平稳。")  if __name__ == '__main__':    main()
目的:演示如何在 Python 中实现基础的错误率监控,包括记录请求、计算错误率、按模型版本分解和触发告警。
  1. self.requests = []用列表存储请求记录,每个请求附带模型版本、请求类型和错误标记
  2. recent = [r for r in self.requests if now - r['ts'] <= window_sec]滑动时间窗口过滤,只统计当前窗口内请求
  3. biz_count = sum(1 for r in recent if r['biz'])累加业务错误次数,生成器表达式简洁高效
  4. grouped = defaultdict(lambda: {'total': 0, 'err': 0})用 defaultdict 按模型分组统计,避免手动初始化
  5. alerts.append(...)通过阈值比较结果决定是否触发告警

常见误区

误区错误率一升高,第一反应就是查系统日志、看服务器状态,认为是代码或硬件出了问题。查了半天发现系统一切正常,问题却没找到。

正解错误率升高可能来自业务层面——比如新模型输出格式变化、提示词修改导致置信度下降、输入数据分布偏移(如用户突然大量发送长文本导致超时)。正确做法是先按业务/系统二分法分类:如果系统错误率没变,重点排查模型版本和请求类型维度的变化,而不是盲目查基础设施。

为何常见:因为系统错误(OOM、超时、GPU 故障)看得见摸得着,日志里都有明晃晃的报错,而业务错误是“软性的”,需要对比分析和上下文判断,初学者自然先想到硬故障。

误区错误率超过 1% 就报警,低于就不报,设置一个固定阈值一劳永逸。上线后发现要么半夜被误报警吵醒,要么真正出问题时漏报。

正解不同时段错误率天然波动,晚高峰错误率 1% 可能是正常波动,凌晨 0.3% 可能已经是异常。更合理的方式是设置动态基线——用过去 7 天同时段数据的均值 ± 3 倍标准差作为阈值,同时配合趋势告警捕捉“缓慢爬升”的异常。

为何常见:固定阈值是监控领域最直觉的方案,人人都会想到,但现实流量模式很少是平稳的,动态基线需要更多数据积累和算法支持,容易被忽略。

误区每天只看一眼整体错误率(比如 0.5%)就认为服务健康,从不按维度拆解。直到某天线上爆发大问题,才发现某个模型版本的错误率已经异常好多天。

正解整体错误率是“平均值的陷阱”——v1.9 错误率 0.1% 和 v2.0 错误率 2% 平均后可能只有 1%,看起来不严重,但 v2.0 的用户正在遭受糟糕体验。必须按模型版本、请求类型、实例 ID 等维度拆分监控,每个维度都设置独立告警。

为何常见:整体聚合最简单直观,一行 SQL 就能算出来,多维度分解需要更复杂的存储和查询设计,初期阶段容易被“简化”掉。

误区把阈值调得非常敏感,任何微小波动都触发告警,以为这样就能“万无一失”。结果是告警风暴,真正出问题时大家已经麻木了。

正解告警的价值在于“稀缺性”——只有在需要人介入时才发。频繁误报会培养“狼来了”心态,导致真正的 P0 告警被忽略。正确做法是告警分级:P0 电话告警、P1 消息告警、P2 工单记录,并定期回顾告警规则,清除无效规则。

为何常见:“多设几个保险”是人的本能,但告警系统的目标不是覆盖所有可能,而是在信噪比和响应速度之间找到平衡点,这需要经验积累。

面试题

Q1. 错误率监控中,“业务错误”和“系统错误”的核心区别是什么?

单选题 · easy

  • A.错误出现的频率不同,业务错误更频繁
  • B.业务错误是模型输出质量问题,系统错误是基础设施故障← 正确答案
  • C.系统错误只发生在 GPU 上,业务错误只发生在 CPU 上
  • D.两者没有区别,只是叫法不同

答案:B。业务错误指模型输出了但质量不达标(格式异常、置信度低),系统错误指基础设施无法完成推理(OOM、超时、GPU故障)。区分两类错误决定了通知算法团队还是运维团队,是监控策略的第一步。

Q2. 已知最近 5 分钟总请求 10000 次,其中业务错误 80 次,系统错误 20 次,总错误率是多少?

单选题 · easy

  • A.0.8%
  • B.0.2%
  • C.1.0%← 正确答案
  • D.2.0%

答案:C。总错误率 = (业务错误 + 系统错误) / 总请求 = (80 + 20) / 10000 = 100 / 10000 = 1.0%。业务错误率和系统错误率分别是 0.8% 和 0.2%,但题目问的是总错误率。

Q3. 使用滑动窗口基线做异常检测的主要优势是什么?

单选题 · mid

  • A.计算简单,不需要历史数据
  • B.能自适应不同时段的流量波动,减少误报← 正确答案
  • C.可以完全消除所有告警误报
  • D.不需要设置任何参数就能工作

答案:B。滑动窗口基线取过去 7 天同时段的平均值和标准差作为参考,能感知“凌晨低峰期”和“晚高峰”的错误率差异,比固定阈值更符合真实业务规律,能显著减少误报和漏报。

Q4. 某服务错误率升高但系统指标(CPU、内存、GPU利用率)完全正常,最可能的原因是什么?

单选题 · mid

  • A.网络带宽不足
  • B.GPU 硬件故障
  • C.模型输出质量问题,如格式异常或置信度过低← 正确答案
  • D.磁盘空间已满

答案:C。系统指标正常说明基础设施健康,排除系统错误。此时错误率升高大概率来自业务层面——模型输出格式不对、提示词效果变差或输入分布偏移。应优先按模型版本和请求类型维度做分解分析。

Q5. 以下哪些属于“系统错误”的典型场景?

多选题 · mid

  • A.模型返回的 JSON 格式缺少必填字段
  • B.推理容器内存溢出(OOM)导致请求失败← 正确答案
  • C.请求在队列中等待超过 30 秒超时← 正确答案
  • D.模型对某类输入的置信度低于 0.3

答案:BC。内存溢出和请求超时都是基础设施无法正常完成推理,属于系统错误。JSON 格式缺少字段是模型输出质量问题(业务错误),置信度过低同样是模型输出不达标,属于业务错误。

Q6. 按模型版本聚合错误率后发现:v2.0 占比 30% 的错误率 0.5%,v1.9 占比 70% 的错误率 2.1%。整体错误率是多少?

单选题 · hard

  • A.1.30%
  • B.1.62%← 正确答案
  • C.1.47%
  • D.2.60%

答案:B。加权平均 = 0.3×0.5% + 0.7×2.1% = 0.15% + 1.47% = 1.62%。注意不能简单平均 (0.5%+2.1%)/2 = 1.3%,因为两个版本的请求量占比不同。这个例子也说明按版本维度分解才能发现 v1.9 的问题。

Q7. 设计错误率告警规则时,合理的做法包括哪些?

多选题 · mid

  • A.对业务错误和系统错误设置统一的固定告警阈值
  • B.按模型版本分别设置告警阈值← 正确答案
  • C.结合趋势告警捕捉错误率的持续上升← 正确答案
  • D.所有告警统一为 P0 级别立即电话通知

答案:BC。不同模型版本的错误率基线可能差异很大,分开设置更精准;趋势告警能在阈值触发前提前发现“缓缓爬升”的问题。统一固定阈值忽略了时段和版本差异,所有告警都是 P0 会导致告警疲劳。

Q8. SLO 中约定“每月错误率低于 0.1%”,某月前 15 天错误率 0.08%,第 16 天单日错误率突然涨到 0.5%,首先应该做什么?

单选题 · easy

  • A.等到月底再计算总错误率
  • B.忽略这次波动,继续观察
  • C.按模型版本和请求类型维度拆分,定位升高的原因← 正确答案
  • D.立即下线所有模型版本

答案:C。SLO 是月度指标,但单日大幅升高说明有异常事件正在发生。正确做法是立即做多维度分解定位问题根因,而不是等月底或者直接全量下线。如果延误,当月 SLO 可能无法达标。

Q9. 使用 EWMA 做趋势告警,设 α=0.2,已知 E(t-1)=0.8%,当前观测 x(t)=1.2%,E(t) 为多少?

单选题 · hard

  • A.0.88%← 正确答案
  • B.1.00%
  • C.0.96%
  • D.0.80%

答案:A。E(t) = α×x(t) + (1-α)×E(t-1) = 0.2×1.2% + 0.8×0.8% = 0.24% + 0.64% = 0.88%。EWMA 让当前观测对均值的贡献按 α 权重计入,α 越大响应越快,但也更容易被噪声干扰。

Q10. 关于告警分级,以下描述正确的有哪些?

多选题 · hard

  • A.P0 级告警应通过电话等强提醒渠道通知值班人员← 正确答案
  • B.P1 级告警可以完全忽略,不需要任何响应
  • C.P2 级告警适合记录工单并择期跟踪处理← 正确答案
  • D.告警级别应该固定不变,上线后不允许调整

答案:AC。P0 级是最高优先级(大面积错误、服务瘫痪),需要电话立即响应;P2 级是低优先级问题,记录工单跟踪即可。P1 也需要 15 分钟内响应,不能忽略。告警分级应随业务和系统演进定期回顾调整,不存在“永远不变”的分级。