关注微信公众号“时序人”获取更好的阅读体验
近些年来,在需要支持多平台的互联网应用中,微服务架构越来越受欢迎。与此同时,对于互联网公司来说,微服务的性能质量至关重要,因为微服务故障会降低用户体验并带来经济损失。有效的定位故障的根本原因对于快速恢复服务并减轻损失来说至关重要。
随着5G与云计算的⼤⼒发展,如何进行更自动化的运维以管理⼤规模的服务设备,是当今云⼚商⾮常关心的问题。针对这⼀问题,全球权威的IT研究与顾问咨询公司 Gartner于2016年提出了AIOps(Artificial Intelligence for IT Operations)概念,即智能运维。
AIOps涉及时间序列异常检测、关联分析、语义分析等多学科领域,旨在将⼈⼯智能的能⼒与⼯业运维相结合,通过机器学习的⽅法来解决复杂场景下的故障处理、变更管理、容量管理、服务资源调度等问题,帮助⼈们或代替⼈更好地做出决策,提⾼运维的效率。
其中最为困难的问题是诊断微服务架构的故障原因。
首先,服务侧的异常会由多方面的原因造成,有的时候是因为网络的抖动,有的时候是因为机器的故障,有的时候甚至是因为人为的变更,有效的根因定位需要整合非常多的数据(Log/Metric/Trace)以及丰富的专家经验;
其次,捕捉服务调用关系可以帮助我们追溯异常,但获取固定的服务拓扑关系比较困难,不同厂家有不同的微服务设计很难规范化,同时当服务调用频繁变化时,基于规则的静态故障定位方法便会失效;
再者,即时我们构建了服务之间的拓扑关系,由于存在故障的间接传播,使得当故障发生时,系统中的各项服务指标都会发生抖动,大量噪音使得模型难以**“在万军之中取上将首级”**,找到致使故障发生的问题机器和问题指标。
因此,在智能运维(AIOps)领域,**故障诊断(根因分析)**这是一个极具研究意义的系统性的难题。
当前针对微服务系统的故障根因问题,学术界已有一些成熟的工作,包括层次化定位故障的实体,捕捉服务指标之间的关联关系,分析故障在微服务之间传播等,涵盖亚马逊/微软/阿里/谷歌/Ebay/IBM/华为/腾讯/…等诸多大厂的云服务实践。
本文梳理近年来KDD/WWW/AAAI/VLDB/IWQOS/IEEE Access等国际顶会发表的有关论文,将根因分析场景大致抽象为几大方向:
以及与各自方向相关的论文17篇。下面为大家一一介绍。
问题概述:该类根因分析旨在对指标总量进行实时的异常检测,再对检测出的异常查找定位导致该总量异常的细粒度指标集合
适用场景:业务KPI(集群请求错误数/网络整体延时/…)
论文标题:HotSpot: Anomaly Localization for Additive KPIs with Multi-Dimensional Attributes
论文发表:IEEE Access 2018
论文地址:https://ieeexplore.ieee.org/document/8288614**
论文摘要:在互联网运维中,有一类多维度KPI指标体系(如网页访问量PV、收入指标、错误计数等),其指标数目繁多、之间具有复杂的相互影响关系,通常只对KPI总量进行实时的异常检测算法,检测出异常后,再对体系查找定位导致该总量异常的细粒度指标集合。该文介绍一种对这种多维度指标体系中准确、高效地进行异常定位的方法,HotSpot,其构建多维时序指标的数据立方(Data Cube)并采用蒙特卡洛树搜索(MCTS)方法定位出根因元素集合。
论文标题:iDice: problem identification for emerging issues
论文发表:ICSE 2016
论文地址:https://dl.acm.org/doi/10.1145/2884781.2884795
论文摘要:通常情况下,一个软件系统下用户上报问题(issue report)的数量是相对稳定的,但是有时会发生issue report的数量突变(通常是骤增)的情况,往往由个别属性组合(如“Country=India; TenantType=Home; DataCenter=DC1”)对应的issue report数量突变引起的。该文要解决的问题就是如何快速找出导致issue report数量突变的问题组合。需要说明的是,这种突变背后的可能原因多种多样,例如:软件漏洞、配置出错、网络环境突变、服务器故障等等,不过这些不是本文讨论内容。
问题概述:该类根因分析旨在分析海量的多维时间序列,找到故障时不同指标之间的关联关系(因果关系)
适用场景:机器多维指标分析(disk&load/net&load/cpu&mem/…)
论文标题:AutoMAP: Diagnose Your Microservice-based Web Applications Automatically
论文发表:WWW 2020
论文地址:https://dl.acm.org/doi/10.1145/3366423.3380111
论文摘要:微服务架构的高度复杂性和动态性使得故障诊断十分困难。首先,获取固定的服务拓扑关系比较困难,同时这种静态的故障排除方法无法适用于服务调用频繁变化的情况;即时我们知道了服务之间的拓扑关系,由于存在故障的间接传播,我们也缺乏有效的动态诊断机制来判断根因。此外,基于单一指标时间序列异常检测的算法通常无法识别到故障的根本原因,因为单一指标不足以表征各种服务中所发生的异常。有鉴于此,该工作设计了一种名为AutoMAP的模型,其利用多种类型的时序指标来动态生成服务关联,诊断根因。针对多维时间序列,该工作分析时序之间的异常关联,推断异常行为图来描述不同服务之间的相关性。根据行为图,该工作使用前向、自向和后向随机游走算法设计启发式模型,用以识别服务故障的根本原因。AutoMAP可以快速部署在各种基于微服务的系统中,无需专家经验知识启动。 同时,它也支持引入专家知识以提高诊断的准确性。
论文标题:Localizing Failure Root Causes in a Microservice through Causality Inference
论文发表:IWQOS 2020
论文地址:https://ieeexplore.ieee.org/document/9213058
论文摘要:近些年来,在需要支持多平台的互联网应用中,微服务架构越来越受欢迎。与此同时,对于互联网公司来说,微服务的性能质量至关重要,因为微服务故障会降低用户体验并带来经济损失。而有效的定位故障的根本原因有助于快速恢复服务并减轻损失。这项工作提出了一个框架,MicroCause,可以准确地定位导致微服务故障的根本原因的监控指标。MicroCause结合了简单而有效的路径条件时间序列(PCTS)算法以准确地捕获时间序列之间的因果关系,以及面向时间因果的新型随机游走方法(TCORW)。
论文标题:A Deep Neural Network for Unsupervised Anomaly Detection and Diagnosis in Multivariate Time Series Data
论文发表:AAAI 2019
论文地址:https://ojs.aaai.org//index.php/AAAI/article/view/3942
论文摘要:这篇工作使用正常数据对 AutoEncoder 进行训练,使 AutoEncoder 拟合正常数据特征,而后使用未知数据数据通过 AutoEncoder 后的重建误差大小区分异常数据和正常数据的,提出了一种使用 Conv-LSTM 结构的新方法,称为 MSCRED。与之前工作相比,MSCRED 有两处创新点: 首先, 通过计算多元时间序列两两之间的协方差将多元时间序列数据转换为多分辨率特征矩阵,再将特征矩阵作为 AutoEncoder 结构的输入。其次,在网络结构方面,它综合使用了卷积层、LSTM 层和注意力机制构造 Encoder;使用图像分割中常规的手段,在 Decoder 中将 Encoder 输出的特征图与上一级输出级联后再进行解卷积以逐级重建特征图,以此增加网络的拟合能力
解决类型场景问题的文章还有:
问题概述:该类根因分析一般具有明确的服务调用拓扑关系(图),旨在捕捉服务链路上的异常,定位异常实体
适用场景:中间件(微服务之间的调用异常)
论文标题:Unsupervised Detection of Microservice Trace Anomalies through Service-Level Deep Bayesian Networks
论文发表:ISSRE 2019
论文地址:https://ieeexplore.ieee.org/document/9251058
论文摘要:微服务调用跟踪(跟踪)的异常通常表明基于微服务的大型软件服务的质量受到了损害。但是,由于以下原因,及时准确地检测跟踪异常非常具有挑战性:1)大量底层微服务; 2)它们之间的复杂调用关系; 3)响应时间与调用路径之间的相互依赖性。我们的核心思想是使用机器学习在定期的离线培训期间自动学习轨迹的总体正常模式。在在线异常检测中,具有较小异常分数(根据学习的正常模式计算)的新迹线被认为是异常的。通过我们新颖的轨迹表示以及具有后向流动的深贝叶斯网络的设计,我们的无监督异常检测系统TraceAnomaly可以以统一的方式准确,可靠地检测轨迹异常。
论文标题:Ranking Causal Anomalies via Temporal and Dynamical Analysis on Vanishing Correlations
论文发表:KDD 2016
论文地址:https://dl.acm.org/doi/10.1145/2939672.2939765
论文摘要:检测系统异常在许多领域(例如安全性,故障管理和工业优化)引起了极大的兴趣。最近,不变网络已被证明是表征复杂系统行为的有效方法。在不变网络中,节点表示系统组件,边缘表示两个组件之间的稳定,重要的交互作用。不变性网络的结构和演化,尤其是消失的相关性,可以为定位因果异常和执行诊断提供重要的启示。然而,现有的利用不变网络检测因果异常的方法通常使用消失的相关性百分比来对可能的偶然分量进行排名,这有几个局限性:1)网络中的故障传播被忽略; 2)根源偶然异常可能并不总是那些消失率很高的节点; 3)消失的相关性的时间模式未用于鲁棒检测。为了解决这些局限性,在本文中,我们提出了一个基于网络扩散的框架,以识别重大的因果异常并对它们进行排名。我们的方法可以有效地对整个不变网络上的故障传播建模,并且可以对结构和随时间变化的破碎不变模式进行联合推断。
论文标题:Graph-based root cause analysis for service-oriented and microservice architectures
论文发表:JSS 2019
论文地址:https://www.sciencedirect.com/science/article/abs/pii/S0164121219302067
论文摘要:面向服务的体系结构和微服务定义了两种设计软件的方法,目的是将应用程序划分为相互通信的松耦合服务。这转化为快速开发,由小团队开发和部署每个服务,从而能够持续交付新功能和快速发展的应用程序。但是,这种类型的体系结构的潜在复杂性可能会妨碍用户的可观察性和维护。特别是,考虑到要检查的众多服务和连接,识别应用程序中检测到的异常的根本原因可能是一项困难且耗时的任务。在这项工作中,我们基于这些体系结构的图形表示形式,提出了根本原因分析框架。这些图可用于将系统中发生的任何异常情况与异常图库进行比较,该库可作为用户对这些异常进行故障排除的知识库。
解决类型场景问题的文章还有:
方法概述:该类根因分析旨在组合更多的数据进行分析,包括事件分析、调用与指标(Trace&Metric)、调用与日志(Trace&Log)
适用场景:构建AIOps系统
论文标题:A Deep Neural Network for Unsupervised Anomaly Detection and Diagnosis in Multivariate Time Series Data
论文发表:KDD 2014
论文地址:https://dl.acm.org/doi/10.1145/2623330.2623374
论文摘要:互联网产品在日常运行提供服务时,运维人员会对机器、进程和服务层面的日志、事件和性能数据等进行自动测量,这些数据主要分为**事件(Event)和时间序列(Time Series)**两大类数据。时序数据指的是实值-时间序列(通常有固定的时间间隔),例如CPU使用率等;而事件数据指的是记录了特定事件发生的序列,例如内存溢出事件等。为了保证产品的服务质量、减少服务宕机时间,从而避免更大的经济损失,对关键的服务事件的诊断显得尤为重要。实际的运维工作中,对服务事件进行诊断时,运维人员可以通过分析与服务事件相关的时序数据,来对事件发生的原因进行分析。虽然这个相关关系不能完全准确的反映真实的因果关系,但是仍然可以为诊断提供一些很好的线索和启示。
论文标题:Scouts: Improving the Diagnosis Process Through Domain-customized Incident Routing
论文发表:SIGCOMM 2020
论文地址:https://dl.acm.org/doi/10.1145/3387514.3405867
论文摘要:事件路由对于在云中维护服务级别目标至关重要:由于路由错误,诊断时间可能会增加10倍。由于当今数据中心(DC)应用程序及其相关性的复杂性,正确路由事件具有挑战性。例如,在VM上运行的应用程序可能依赖于正常运行的主机服务器,远程存储服务以及虚拟和物理网络组件。任何团队,基于规则的系统甚至机器学习解决方案都很难完全了解复杂性并解决事件路由问题。我们提出了一种使用每队侦察兵的不同方法。每个团队的侦察员都充当其守门员-将相关事件路由到团队并路由不相关的事件。我们通过收集这些侦察兵来解决问题。
论文标题:FluxRank:A Widely-Deployable Framework to Automatically Localizting Root Cause Machines for Software Service Failure Mitigation
论文发表:IEEE Access 2019
论文地址:https://ieeexplore.ieee.org/document/8987478
论文摘要:在运维领域,服务侧的异常会由多方面的原因造成,有的时候是因为网络的抖动,有的时候是因为机器的故障,有的时候甚至是因为人为的变更。该论文主要介绍了如何从服务的故障定位到局部异常的机器,也就是说在发现服务故障的同时,进一步推断出是由哪些机器出现问题而导致的。该文介绍了FluxRank,它是一种可广泛部署的框架,可以自动,准确地定位根本原因机器,以便可以触发某些操作来减轻服务故障。
论文标题:Performance Monitoring and Root Cause Analysis for Cloud-hosted Web Applications
论文发表:WWW 2017
论文地址:https://dl.acm.org/doi/10.1145/3038912.3052649
论文摘要:该文描述了一种系统,Roots,可自动识别平台即服务(PaaS)云中部署的Web应用程序中性能异常的“根本原因”。Roots不需要应用程序级检测。相反,它结合使用元数据注入和平台级工具来跟踪PaaS云中由应用程序请求触发的事件。 该文描述了Roots的可扩展体系结构,系统的原型实现以及用于性能异常检测和诊断的统计方法。
论文标题:GRANO: Interactive Graph-based Root Cause Analysis for Cloud-Native Distributed Data Platform
论文发表:VLDB 2019
论文地址:https://dl.acm.org/doi/10.14778/3352063.3352105
论文摘要:通过提供系统组件拓扑,警报和应用程序事件的整体视图,该文介绍了Grano模型,这是用于云原生分布式数据平台的端到端异常检测和根因分析系统。 Grano提供:一个检测层,用于处理大量时间序列监视数据,以检测逻辑和物理系统组件的异常;具有新颖图形模型和算法的异常图形层,可利用系统拓扑数据和检测结果在系统组件级别识别根本原因;应用层自动通知待命人员,并通过交互式图形界面提供实时和按需的RCA支持。该系统使用eBay的生产数据进行部署和评估,以帮助值班人员将根本原因的识别时间从数小时缩短至数分钟。
解决类型场景问题的文章还有:
更多原创内容与系列分享,欢迎关注微信公众号“时序人”获取。