让故障无处遁形:去哪儿网AIOps平台实战 宋璐 GOPS全球运维大会暨研运数智化技术峰会2024·上海站 宋璐 公司职位 去哪儿网机票事业部/QA团队高级测试工程师 个人简介 价值分析 异常检测-雷达平台 目录归因分析平台 未来展望 01 价值分析 故障主动发现率 故障处理超时率 全年故障率 无监控,… 有监控无报警, 38% 监控报警, 38% 故障主动发现率:38%。目标优化有监控无报警故障的发现方式,来提升故障主动发现率。 故障发现方式 故障处理超时率:51%。目标优化由于信息差,信息多、难决策导致的故障超时。 故障处理超时原因 信息多,难决策38% •交互复杂,难定位 •异常多,难关注 •信息多,难抉择 •中间件影响 •单机问题未感知 •其他组事件变更 故障发现根因定位 •目前业界没有标准的解决方案 •归因分析平台 •watcher •搭建新雷达平台 故障自愈 •定位根因,快速恢复。 AIOPS智能运维体系,根据可观测MTL(Metric+Trace+Log)三要素进行分析和建模。覆盖故障发现,根因定位,故障自愈全流程。 02 异常检测-雷达平台 落地效果 实现路径 后续计划 23年6月~至今发现线上问题个数 23年Q123年Q223年Q323年Q424年H1 10% 29% 33% 60% 56% 70% 60% 50% 40% 30% 20% 10% 0% 23年~至今小流量故障占比 2023年6月 2023年7月 2023年8月 2023年9月 2023年10月 2023年11月 2023年12月 2024年1月 2024年2月 2024年3月 2024年4月 2024年5月 22年~至今故障主动发现率 22年~至今有监控故障主动发现率 100% 86% 80% 60% 48% 44% 40% 20% 0% 22年 23年 24年 22年~至今故障主动发现率 70.0% 60.0% 50.0% 40.0% 30.0% 20.0% 10.0% 0.0% 60% 37.5% 36% 22年23年24年 覆盖全 定位准 可持续 智能监控: 30w业务指标 准确率>75% 智能运维指标 降低人力维护成本 雷达平台-模型架构 数据源:支持30w业务指标的拉取 数据存储模块: •支持指标实时分析 •指标特征值存储 •测试数据集持久化,验证模型有效性 •报警数据持久化,用于数据分析 思路:深度挖掘曲线本身的特征,并将特征值关联到后续分析模块中,做更精细的指标分类和处理 13个特征值:平滑后方差、标准差、期望、周期、max、min、avg、离散性、抖动性、密度标准差、密度均值等 指标分析 波形特性:影响异常检测准确性 业务特性:影响报警规则的敏感度 •量:成功、失败、count等 •率:成功率、失败率 波形分类:业务分类: 指标分类 常见波形 关注点 error 离散、连续周期型 上升 rate_fail 离散、连续周期型、平稳型 上升 success 离散、连续周期型、平稳型 下降 rate_success 离散、平稳型(0-1,0-100) 下降 count 离散、连续周期型、平稳型、抖动 上升、下降 数据收集 数据持久化 数字化准确率 数据分析 测试集的好坏直接影响最终的实验效果: 1)故障测试集:30 2)核心报警测试集:214覆盖机票10个四级部门;全量P1/P2的有效报警 watcher平台上的指标数据超过一个月后会被聚合,会影响到验证的准确性,指标数据进行了持久化处理。 根据指标的业务分类,数字化初始准确率数据,后续优化可量化,可度量。 分析全量测试集数据,归纳波形,分析可提升机会点 雷达平台-异常检测模块 测试验证数据集->离散波形异常检测算法->连续波形异常检测算法->陡增/陡降波形检测算法 思路:分析小流量问题的难点,归纳小流量常见的问题波形,针对性解决。 问题期间指标密度曲线 1.2 1 0.8 0.6 0.4 0.2 0 11111111111111 0.90.9 0.6 0.7 0.8 0.8 0.7 0.6 0.2 0.3 0.4 0.3 0.5 0.5 0.4 0.3 0.2 0.1 00000000 0.2 00000000 0.01.1 0 解决思路——异常密度校验算法 第一步:计算指标7天历史数据的密度标准差(densitySTD),衡量指标的离散程度;密度平均值(densityAVG),衡量指标的密集程度;eg:densitySTD:0.16;连续直线,国内机票搜索成功率的std:0.007; densityAVG:0.14;连续直线,国内机票搜索成功率的avg:0.99; 第二步:正态分布算法结合测试数据,找出最优参数 判断公式 持续时间 测试集准确率 densityStd*1+densityAvg<当前密度,记异常 5 60% densityStd*3+densityAvg<当前密度,记异常 5 75% densityStd*5+densityAvg<当前密度,记异常 5 90% 第三步:使用参数三真实运维雷达报警,观测误报,调整参数 判断公式 持续时间 测试集准确率 干扰率 densityStd*5+densityAvg 8 80% 18% 16:00 16:02 16:04 16:06 16:08 16:10 16:12 16:14 16:16 16:18 16:20 16:22 16:24 16:26 16:28 16:30 16:32 16:34 16:36 16:38 16:40 16:42 16:44 16:46 16:48 16:50 效果:雷达增量发现的线上问题中,65%是小流量问题,平均发现时长15min; 雷达平台-异常检测模块 测试验证数据集->离散波形异常检测算法->连续波形异常检测算法->陡增/陡降波形检测算法 思路:针对业界常用连续波形异常检测算法实验,最终选择了4种数据预处理方式+2种异常检测算法。 方法类别 方法名称 优劣势分析 基于分布 3Sigma 报警数量过多,非基于正态分布图,干扰大 BoxPlot 连续周期型波形,异常检测,效果好 Grubbs 这种算法和3sigma类似没有多大实际意义 基于距离 KNN 缺点是仅可以找出全局异常点,无法找到局部异常点 基于密度 KDE 连续平稳型波形,异常检测,效果好 基于树 isolationForest 这种存在切分不好导致的异常判断,无法解释 基于分类 One-ClassSVM 这种异常检测也很少在实际中使用。 基于模型预测 ARIMA STL分解后的残差预测通过ARIMA预测不准确,基本没什么意义。 Prophet 不准确 Hotwinter 基于趋势的指数平滑预测模型,不准确 STL 这种算法更多适合去做特征提取而不是实时的分解数据做预测。 基于深度学习和神经网络 LSTM 接入算法组模型验证,效果不理想 雷达平台-异常检测模块 思路:针对已选算法,搭建自动调参系统,找到算法的最优参数。 测试验证数据集->离散波形异常检测算法->连续波形异常检测算法->陡增/陡降波形检测算法 PART01PART02PART03PART04. 确定参数组合:10400种 触发验证:分类型,每一个参数id,触发一次对应指标类型的测试集验证 数字化: 找出每种类型准确率最高的参数 真实运维:使用该参数真实运维雷达报警,观测误报,调整 参数 雷达平台-异常检测模块 测试验证数据集->离散波形异常检测算法->连续波形异常检测算法->陡增/陡降波形检测算法 思路:增加整体模型的覆盖度,连续波形异常校验,需要一定的持续时间,对于短时间暴涨/暴降的指标进行兜底。 解决思路——陡降算法 第一步:先根据指标业务类型,选择是判断上升还是下降 eg:success/rate_success只关心下降; 第二步:判断指标是否连续, •如果连续观测下降趋势,波形陡降模型 •如果离散,走密度下降模型 第三步:波形陡降模型,连续取同比N分钟的,7天平均qps,找出7天内最低的qps第四步:根据测试集,问题期间qps的下降幅度,配置测试梯度参数 第五步:根据参数计算阈值,判断异常点 雷达平台-常态化运维效果 思路:建立运营流程,持续运营 雷达报警处理 •负责人:业务组跟进人 •周期:每天 •职责:问题发现、问题处理 •产出:雷达报警数据反馈 落地保障 4 •负责人:TL •周期:每天 •职责:关注每日运营邮件,保证处理率 持续优化 •故障分析改进 •反馈数据分析改进 数据分析 •负责人:雷达负责人 •周期:每天/每周/每月 •职责:分析故障数据、雷达报警反馈数据,寻找优化点 •产出:雷达运营周报、月报 2024/1/2 2024/1/9 2024/1/16 2024/1/23 2024/1/30 2024/2/6 2024/2/13 2024/2/20 2024/2/27 2024/3/5 2024/3/12 2024/3/19 2024/3/26 雷达平台-常态化运维效果 雷达准确率均值87%,ivr报警接听率均值:75% 2024/5/5 2024/4/5 2024/3/5 60% 61% 76% 78% 75% 75% 70% 84% 80% 84% 80% 89% 100% 90% 80% 70%65% 60% 50% 40% 30% 20% 10% 0% 2024/2/5 ivr报警接听率(周均):75% 67% 78% 80% 75% 87%87% 95%92% 91% 92%93% 95% 100% 90% 80%70% 70% 60% 50% 40% 30% 20% 10% 0% 准确率(周均):87% •结合appcode优先级 •异常指标优先级 •雷达报警反馈数据 •进行更精确的指标分类 03 归因分析平台 目录 模型构建 难点分析 后续计划 1 思路:结合开发定位故障的思考路径分析 前置:可观测 目标:可感知故障发生 如何观测到故障? 2 数据收集 目标:全面和准确的覆盖各维度数据 收集什么数据?如何收集数据? 3 关联分析 目标:各维度数据构建知识图谱,关联关系挖掘 以什么维度组织数据?如何确认信息的有效性? 4 故障根因决策 目标:快速精准的决策 如何确认影响因素的优先级? 根因分析处于探索阶段,业界没有标准的解决方式。常见思路:根据可观测MTL(Metric+Trace+Log)三 要素进行分析和建模。 GOPS全球运维大会暨研运数智化技术峰会2024·上海站 开发定位问题路径:归因分析平台整体结构: •告警:50+ •指标:100+ •qtrace:万级 干扰多 定位难 •有异常,影响多:上游异常、自身异常、下游异常 •无异常,难定位 问题:误报、闪报、阈值配置不合理等 •人工治理 •自动识别无效告警、不做分析(按周、天维度缓存无效告警) 问题:复合指标中有些指标对结果无影响 •函数中去除无影响的指标, e.g:asPercent只保留分子指标、exclude去除排除的指标等 问题:分析的trace包含非核心链路 •根据业务优先级:业务线自定义,T值、核心链路 有异常:建立权重体系,定位topN的根因; •拓扑appCode总权重=trace异常权重x空间权重x(事件权重+中间件权重+单机权重+异常日志权重) 无异常:扩大分析范围,再进行权重判断 •扩大分析范围 •支持全链路事件变更 •向下探测放开层级限制 •向上支持qps异常探测 •权重判断 整体准确率:50% 单机问题准确率:>80% 04 未来展望 1 面向故障的稳定性 建设 2 3 扩大覆盖自动监控 运维闭环 Thanks 高效运维社区DevOps时代 荣誉出品