结论先行:带动态基线的监测平台上线后,要先跑一段真实业务数据让它学出正常水位。学习期内告警不准,值班的人两头为难:报了怕误报挨批,不报怕真出事担责。这件事不该靠现场判断,而该在实施阶段就定下来:学习期的告警怎么标记、用几个业务周期来学、学习期结束时验哪几条。

为什么要先学一段时间

固定阈值的监测,上线当天就能告警。动态基线不一样,它要先知道"平时长什么样",才能判断"现在算不算异常"。业务的工作日与周末、月初与月末、白天与夜间的负载本来就不一样,阈值写死了必然误报,所以要先跑一段时间的数据把规律学出来。

常见做法是用七天的业务数据学习,生成动态基线,再基于基线做告警收敛。七天覆盖了一周的完整周期,是个合理的起点。

学习期的告警,问题出在哪

基线还没成型时,平台给出的告警有两种情况:一种是阈值仍在默认值上,稍有波动就报;另一种是已经部分收敛,真异常反而被压掉了。两种都不可靠。

现场常见的处理是让值班的人自己判断——"这段时间先别太当真"。这就把技术问题变成了人的经验问题,而且新人接不住。更麻烦的是,学习期里发生的真实故障如果被忽略,事后没人能证明当时是漏报还是被判为基线内。

学习期该做的三件事

其一:把学习期标出来,标在平台上

学习期不是一句口头约定,应该在平台里有一个可见的状态:这个业务还在学习期、预计什么时候结束、期间告警按什么方式呈现。告警通知里带上这个标记,收到的人一眼知道该按什么标准处理。标记的价值在于留下痕迹——事后复盘时能说清"当时这条告警处于学习期"。

其二:学习期不等于不值守

基线在学习,人不能停。学习期内该做的是把告警分级往后挪一档:把资源类、容量类的告警先当作观察项,把业务不可用、接口失败率突破绝对阈值这类硬指标照常按紧急处理。换句话说,学习期调整的是告警的处置优先级,不是取消处置。

其三:七天够不够,看业务周期

七天覆盖了一周循环,但如果业务有明显的月度、季度特征——比如月结、季末报表、月初批量代发——七天的样本里根本不含这些形态,基线学不到。这类业务的学习期要按更长周期安排,或者在基线里显式排除这些时段,等经历了完整周期再补。

学习期结束时验哪几条

验收项怎么看
基线是否成型核心业务接口与关键资源的基线已生成,不是仍在默认阈值上
误报是否可接受取学习期最后两天与之前同等时长对比,看误报量的变化趋势
漏报是否可发现在学习期结束后做一次受控的异常注入,看平台能不能报出来
状态是否可查平台里能查到这个业务的学习期起止时间与结束判定记录

第四项常被忽略,但它是后面所有争议的凭据。没有这一条,一年后没人说得清某个时间段是不是学习期。

深圳市奇摩计算机有限公司在可观测类项目实施时,会把学习期的起止时间、标记方式与验收标准写进实施计划,作为上线交付的一部分,而不是让客户在上线后自己摸索这段时间该怎么算。

文中所述学习周期与验收方式为实施经验的归纳,具体时长与判定标准以项目实测数据为准。

本文只谈动态基线学习期这几天的处置与验收,不涉及版本升级之后基线被清空怎么恢复,也不涉及探针接入前要跟开发确认的事项。

如果你们的监测平台刚上线、正处在"告警不知道该不该信"的阶段,欢迎预约咨询。