结论先行:带动态基线的监测平台上线后,要先跑一段真实业务数据让它学出正常水位。学习期内告警不准,值班的人两头为难:报了怕误报挨批,不报怕真出事担责。这件事不该靠现场判断,而该在实施阶段就定下来:学习期的告警怎么标记、用几个业务周期来学、学习期结束时验哪几条。
为什么要先学一段时间
固定阈值的监测,上线当天就能告警。动态基线不一样,它要先知道"平时长什么样",才能判断"现在算不算异常"。业务的工作日与周末、月初与月末、白天与夜间的负载本来就不一样,阈值写死了必然误报,所以要先跑一段时间的数据把规律学出来。
常见做法是用七天的业务数据学习,生成动态基线,再基于基线做告警收敛。七天覆盖了一周的完整周期,是个合理的起点。
学习期的告警,问题出在哪
基线还没成型时,平台给出的告警有两种情况:一种是阈值仍在默认值上,稍有波动就报;另一种是已经部分收敛,真异常反而被压掉了。两种都不可靠。
现场常见的处理是让值班的人自己判断——"这段时间先别太当真"。这就把技术问题变成了人的经验问题,而且新人接不住。更麻烦的是,学习期里发生的真实故障如果被忽略,事后没人能证明当时是漏报还是被判为基线内。
学习期该做的三件事
其一:把学习期标出来,标在平台上
学习期不是一句口头约定,应该在平台里有一个可见的状态:这个业务还在学习期、预计什么时候结束、期间告警按什么方式呈现。告警通知里带上这个标记,收到的人一眼知道该按什么标准处理。标记的价值在于留下痕迹——事后复盘时能说清"当时这条告警处于学习期"。
其二:学习期不等于不值守
基线在学习,人不能停。学习期内该做的是把告警分级往后挪一档:把资源类、容量类的告警先当作观察项,把业务不可用、接口失败率突破绝对阈值这类硬指标照常按紧急处理。换句话说,学习期调整的是告警的处置优先级,不是取消处置。
其三:七天够不够,看业务周期
七天覆盖了一周循环,但如果业务有明显的月度、季度特征——比如月结、季末报表、月初批量代发——七天的样本里根本不含这些形态,基线学不到。这类业务的学习期要按更长周期安排,或者在基线里显式排除这些时段,等经历了完整周期再补。
学习期结束时验哪几条
| 验收项 | 怎么看 |
|---|---|
| 基线是否成型 | 核心业务接口与关键资源的基线已生成,不是仍在默认阈值上 |
| 误报是否可接受 | 取学习期最后两天与之前同等时长对比,看误报量的变化趋势 |
| 漏报是否可发现 | 在学习期结束后做一次受控的异常注入,看平台能不能报出来 |
| 状态是否可查 | 平台里能查到这个业务的学习期起止时间与结束判定记录 |
第四项常被忽略,但它是后面所有争议的凭据。没有这一条,一年后没人说得清某个时间段是不是学习期。
深圳市奇摩计算机有限公司在可观测类项目实施时,会把学习期的起止时间、标记方式与验收标准写进实施计划,作为上线交付的一部分,而不是让客户在上线后自己摸索这段时间该怎么算。
文中所述学习周期与验收方式为实施经验的归纳,具体时长与判定标准以项目实测数据为准。
本文只谈动态基线学习期这几天的处置与验收,不涉及版本升级之后基线被清空怎么恢复,也不涉及探针接入前要跟开发确认的事项。
如果你们的监测平台刚上线、正处在"告警不知道该不该信"的阶段,欢迎预约咨询。
