全文阅读
随着互联网的普及,特别是移动互联网的迅猛发展,Web服务已经深入到社会生活的各个方面。与此同时,服务故障也影响了用户的正常使用,并给企业造成损失。提高Web服务的运维效率,是保证线上服务质量与用户体验的关键。运维是Web服务生命周期的重要组成部分,其目的是确保线上服务安全稳定地运行。传统的Web服务运维主要依赖运维人员的领域知识和运维经验。然而,随着Web服务规模、类型和复杂度的剧增,依赖人工分析的传统运维方式已经无法解决大规模运维的难题。近年来,机器学习领域的深入发展为解决运维难题带来了曙光。Web服务场景拥有海量的运维数据,而机器学习算法善于在海量数据中自动学习和挖掘规则。因此,本研究通过机器学习算法来解决实际Web服务运维场景中模块间异常调用轨迹难以检测和异常模块根因难以定位的问题,进而提高运维中故障发现与根因定位的效率。本文的主要研究内容及创新点如下:(1)模块间调用轨迹异常检测。针对Web服务中模块间异常调用轨迹难以检测的问题,本研究提出了基于深度学习的调用轨迹异常检测算法:Trace Anomaly。该算法通过深度贝叶斯网络学习调用轨迹的正常模式,然后基于学习到的正常模式实现了对异常调用轨迹的精准检测,进而提高故障发现效率。Trace Anomaly已经应用在微众银行公司的18个线上Web服务中,线上及线下实验均表明,Trace Anomaly的召回率和精确率都在0.97以上。研究成果已经建立了Git Hub开源项目。(2)模块中根因机器自动定位。针对Web服务中异常模块的根因机器难以定位的问题,本研究提出了根因机器自动定位算法:Flux Rank。该算法通过核密度估计和聚类算法快速分析并提取机器监控指标的异常模式,然后基于提取的异常模式推荐出根因机器的排名。使用来自百度公司的70个真实故障数据对Flux Rank评估后,结果表明,其中55个故障的根因机器排名第一,66个故障的根因机器位列前三。Flux Rank已应用于7个线上Web服务,经过三个多月的线上运行,Flux Rank对59个线上故障进行了诊断,其中55个故障的根因机器排名第一。(3)机器中根因指标自动定位。针对Web服务模块中单个异常机器的根因监控指标难以定位的问题,本研究提出了根因指标自动定位算法:Flux Infer。该算法通过构建加权无向依赖图去表示监控指标之间的依赖关系,然后基于依赖关系图推荐出根因指标的排名。使用开源系统对Flux Infer评估后,其推荐结果中Top3和Top5的准确率分别达到了0.90和0.95。