一种对多维日志的故障根因定位方法和装置

文档序号:26003986发布日期:2021-07-23 21:21阅读:219来源:国知局
一种对多维日志的故障根因定位方法和装置

本申请涉及软件系统故障定位技术领域,尤其涉及一种对多维日志的故障根因定位方法和装置。



背景技术:

为了保证软件系统的服务质量,运维人员会在应用日志中部署多种关键性能指标(keyperformanceindicator,kpi)(例如响应时间,成功率)的监控,用来在故障发生时帮助及时地定位故障和消除影响。这些kpi在采集时还会包含其他许多属性(attribute)(例如省份和运营商)。这样的包含多个属性和kpi监控的日志是我们研究的多维日志。图1展示了一个多维日志的示例。其中时间表示每条记录对应的时间点,响应时间是这个多维日志对应的kpi,其他列都是属性。

当故障发生时,例如系统的总体响应时间突增。运维人员定位故障的第一步是确定故障的发生范围,即哪些属性组合对应的响应时间才有异常。我们将这样的维度组合称为根因维度组合,我们聚焦的问题就是在故障发生时在多维日志中定位根因维度组合。定位根因维度组合一方面可以缩减运维人员排查的范围,另一方面可以运维人员排查根因提供有用的线索。例如,图1对应的根因维度组合如果是(省份=北京and运营商=移动),那么故障很可能是由于运营商北京移动的网络出现问题导致的。

我们形式化地定义多维维度组合问题:我们记a是所有属性的集合a={a1,a2,...,an}其中ai(1<=i<=n)是第i个属性。对于ai,它的所有可能的取值的集合为vi={vi1,vi2,...,vin}其中vik是ai的第k个可能的取值,mi是ai的所有可能取值的个数。一个属性和一个它的可能取值组成一个元组(tuple),t=(ai,vik)。

对于维度ai,它的所有可能的元组的集合为ti={ai}×vi,其中×表示笛卡尔积。维度组合中不能包含两个重复的属性,所以所有维度组合的集合为其中2的幂表示集合的幂集。

因为根因可能是多维维度组合的集合,所以所有可能的根因维度组合的集合为2s根因维度组合的定位就是在2s中搜索,得到最能够分离异常和正常部分(即根因对应的kpi是异常的,其他的kpi是正常的),且最具有解释性(能对运维人员产生其他,例如将所有异常的日志行对应的维度组合枚举出来,就毫无解释性)的元素(根因维度组合)。根因维度组合的定位问题的挑战在于整个搜索空间2s极其巨大。

现有技术没有考虑多个根因同时存在的情况,运行效率没有保证,无法做到及时的定位,只适用于特定类型的kpi,且需要精细地调节参数。



技术实现要素:

本申请旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本申请的第一个目的在于提出一种对多维日志的故障根因定位方法,本方案通过聚类的方式,一方面考虑了多个根因同时存在的情况;另一方面在后续的定位过程中对每一类单独考虑,就只需要考虑单根因的情况,因此又能保持高效率。相比hotspot,我们搜索空间更小。相比adtributor,idice,mid等,我们的方案能够有效考虑多个根因维度组合同时存在的情况;

本方案没有对根因维度组合做任何限制,可以定位包含多个属性的根因。相比adtributor只定位包含一个维度的维度组合的限制,我们可以定位任意的维度组合;

本方案的运行效率稳定,运行时间不依赖数据的具体情况。通过聚类和启发式的搜索,我们大大减小了搜索空间,保证了运行效率。通过我们的聚类算法,在后续搜索的时候可以只考虑仅有单个根因的情况。基于此前提,我们提出了一个启发式的算法,将搜索空间从o(2^n)(如hotspot采用的搜索空间)(n为方体中的维度组合的数量)(o是渐进符号)变为了o(n),从而大大减少了时间开销,提高了运行效率;

本方案的方法适用于各种类型的kpi,包括可加和和不可加和的kpi。我们通过研究证明涟漪效应和基于偏离分数的聚类方法适合可加和和不可加和的kpi。相比hotspot,idice,mid等,我们的方法能够应用于更多类型的kpi(例如平均响应时间,平均订单金额等)上;

本方案没有需要特别精细调节的参数。算法结果对参数的取值不敏感。本方案主要需要调节的参数是在利用arma算法进行异常检测的步骤,但是这一步骤和所有其他现有技术并不特别的不同。后续的定位步骤中,我们的方案没有需要调节的超参数或者阈值,可以直接应用于各种系统中。而像apriori,就存在两个需要精细调节的参数。

本申请的第二个目的在于提出一种计算机设备。

本申请的第三个目的在于提出一种非临时性计算机可读存储介质。

为达上述目的,本申请第一方面实施例提出了一种对多维日志的故障根因方法,包括:

对多维日志中所有的叶子维度组合进行时间序列回归分析,得到每个所述叶子维度组合的实际值和预测值;

通过偏移分数对所述多维日志中所有的叶子维度组合进行聚类,得到所有受同一个根因影响的类,其中,通过所述的实际值和预测值获取所述的偏移分数;

分别对每一个所述的类进行启发式的根因搜索,得到根因维度组合。

进一步地,在本申请的一个实施例中,通过arma模型对所述多维日志中所有的叶子维度组合进行时间序列回归分析,得到每一个所述叶子维度组合的预测值和实际值;

其中,对于每一个叶子节点,周期性地维护一个时间序列的arma模型,所述的arma模型的公式为:

其中,p为自回归项的个数,q为滑动平均项的个数,xt-i表示该叶子维度组合的历史kpi,∈t-i表示历史kpi的差分,c、φ、θ为所述arma模型的参数。

进一步地,在本申请的一个实施例中,所述通过偏移分数对所述多维日志中所有的叶子维度组合进行聚类的方法,具体包括以下步骤:

计算每个所述叶子维度组合的偏移分数,统计每个所述的偏移分数,并将统计得到的所述偏移分数制作成直方图;

计算所述直方图分布的极大值和极小值;其中,将所述的极大值作为所述类的中心,将所述的极小值作为每个所述类的中心两边的边界;

通过所述类的中心和所述类的边得到每一个所述类的范围。

进一步地,在本申请的一个实施例中,基于涟漪效应的原理获取所述的偏移分数,其中,所述涟漪效应为同一个根因对它的各个子维度组合的影响比例是相同的,且表示为:

其中s是根因维度组合,f(e)为叶子维度组合的预测值,v(e)为叶子维度组合的实际值,对于一个非叶子维度组合,它的f和v是它对应的所有子叶子维度组合的f和v的和;

所述基于涟漪效应获取所述偏移分数的公式为:

其中f(e)为叶子维度组合的预测值,v(e)为叶子维度组合的实际值,d(e)为偏移分数。

进一步地,在本申请的一个实施例中,根据所述的实际值和预测值通过自上而下的方式分别对每一个所述的类进行启发式的根因搜索,包括以下步骤:

按数据方体包含的属性的数量,将所述的数据方体cuboid划分层次,从而得到所述数据方体之间的层次关系,其中,所述数据方体为相同属性的所有维度组合的集合;

将所述数据方体中所有的维度组合,按对应的叶子维度组合属于当前所述类的比例从大到小进行排序,通过下述公式得到排序结果:

其中,descent()是一个函数,用来给cuboid中每个维度组合计算一个分数,e0是所述函数的自变量,表示当前在分析的维度组合,ti为叶子维度组合所有可能的元组的集合,g为当前所述类。

分别测试所述排序结果的前k项组成集合的最大化gps分数,其中k=1,2,...,得到使得所述最大化gps分数最大的k,所述前k项组成集合为当前cuboid的最可能的根因;

通过下式计算每个所述cuboid得到的结果的分数,选择分数最大的作为最终的根因:

gps*c-ele*layer

c是参数,一般可以取0.01-0.1,ele指的是根因里维度组合的个数,即所述k,layer指的是这个cuboid中涉及的属性的个数。

进一步地,在本申请的一个实施例中,所述最大化gps分数的公式为:

其中avg指的是算术平均,s1指的是当前在评估的维度组合集合,s2指的是当前在评估的维度组合集合的补集,v(.)和f(.)分别是集合中每一个叶子维度组合的实际值和预测值组成的向量,

a指的是根据涟漪效应推算出来的异常,

为达上述目的,本申请第二方面实施例提出了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上所述的基于深度哈希能量模型的多标签图像检索方法。

为了实现上述目的,本申请第三方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的基于深度哈希能量模型的多标签图像检索方法。

本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。

附图说明

本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本申请实施例的一个多维日志示例图;

图2为本申请实施例一所提供的一种多维日志的故障根因定位方法的流程示意图;

图3为本申请实施例的聚类效果示意图;

图4为本申请实施例的考虑三个属性(abc)时的数据方体的层次关系。

具体实施方式

下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。

下面参考附图描述本申请实施例的多维日志的故障根因定位方法和装置。

图2为本申请实施例一所提供的一种多维日志的故障根因定位方法的流程示意图。

如图2所示,该多维日志的故障根因定位方法包括以下步骤:

步骤101,对多维日志中所有的叶子维度组合进行时间序列回归分析,得到每个所述叶子维度组合的实际值和预测值;

步骤102,通过偏移分数对所述多维日志中所有的叶子维度组合进行聚类,得到所有受同一个根因影响的类,其中,通过所述的实际值和预测值获取所述的偏移分数;

步骤103,分别对每一个所述的类进行启发式的根因搜索,得到根因维度组合。

本申请实施例的对多维日志的故障根因定位方法,通过对多维日志中所有的叶子维度组合进行时间序列回归分析,得到每个所述叶子维度组合的实际值和预测值;通过偏移分数对所述多维日志中所有的叶子维度组合进行聚类,得到所有受同一个根因影响的类,其中,通过所述的实际值和预测值获取所述的偏移分数;分别对每一个所述的类进行启发式的根因搜索,得到根因维度组合。由此,能够有效考虑了多个根因维度组合存在同时存在的情况,同时不对根因维度组合做任何限定,不需要特别精细调节的参数,运行效率稳定且适用于任何kpi。

进一步地,在本申请的一个实施例中,通过arma模型对所述多维日志中所有的叶子维度组合进行时间序列回归分析,得到每一个所述叶子维度组合的预测值和实际值,这一部分和已有方法全部都大同小异,没有特别的不同之处。这一部分方法并不局限于arma,采用其他任何回归方法都不影响整体方法的可用性;

其中,对于每一个叶子节点,周期性地维护一个时间序列的arma模型,所述的arma模型的公式为:

其中,p为自回归项的个数,q为滑动平均项的个数,xt-i表示该叶子维度组合的历史kpi,∈t-i表示历史kpi的差分,c、φ、θ为所述arma模型的参数。

进一步地,在本申请的实施例中,所述通过偏移分数对所述多维日志中所有的叶子维度组合进行聚类的方法,具体包括以下步骤:

首先计算每个叶子维度组合的偏移分数;然后统计所有的偏移分数的直方(histogram),采用freedmandiaconisestimator和sturges的最好结果计算直方图的边界划分方法;然后计算直方图分布的极大值(relmax)和极小值(relmin);将极大值作为类的中心,每个类中心两边最近的极小值作为该类的边界,这样就得到了每一个类的范围,聚类效果如图3所示。

对所有的叶子维度组合进行聚类,从而将被不同根因影响的维度组合分到不同的类中,这一步和所有的现有技术都不同,现有技术都没有通过聚类分离受不同根因影响的维度组合的步骤。这使得后续的对每一类内的根因定位都只需要考虑单个根因的情况,从而大大简化问题。

进一步地,在本申请的一个实施例中,所述偏移分数的公式基于涟漪效应的原理完成,其中,所述涟漪效应指的是同一个根因对它的各个子维度组合(如果维度组合则e2是e1的子维度组合,例如(省份=北京,运营商=中国移动)是(省份=北京)的子维度组合)的影响比例是相同的。其中s是根因维度组合。对于一个非叶子维度组合,它的f和v是它对应的所有子叶子维度组合的f和v的和,表示为:

其中s是根因维度组合,f(e)为叶子维度组合的预测值,v(e)为叶子维度组合的实际值,对于一个非叶子维度组合,它的f和v是它对应的所有子叶子维度组合的f和v的和;

基于涟漪效应,我们发现可以通过所述偏移分数d(e)对叶子维度组合进行聚类。基于涟漪效应,所有受同一个根因影响的叶子维度组合都应该有相同或者相近的d(e),表示为:

其中f(e)为叶子维度组合的预测值,v(e)为叶子维度组合的实际值,d(e)为偏移分数。

进一步地,在本申请的一个实施例中,根据所述的实际值和预测值通过自上而下的方式分别对每一个所述的类进行启发式的根因搜索,包括以下步骤:

按数据方体包含的属性的数量,将所述的数据方体cuboid划分层次,从而得到所述数据方体之间的层次关系,如图4所示。其中,所述数据方体为相同属性的所有维度组合的集合,这个从上往下逐方体搜索的方式的好处是越上层的方体中的维度组合,越具有解释力,即越可能是根因;

将所述数据方体中所有的维度组合,按对应的叶子维度组合属于当前所述类的比例从大到小进行排序,比例越大顺序越靠前,通过下述公式得到排序结果:

其中,descent()是一个函数,用来给cuboid中每个维度组合计算一个分数,e0是所述函数的自变量,表示当前在分析的维度组合,ti为叶子维度组合所有可能的元组的集合,g为当前所述类。

分别测试所述排序结果的前k项组成集合的最大化gps分数,其中k=1,2,...,得到使得所述最大化gps分数最大的k,所述前k项组成集合为当前cuboid的最可能的根因;

通过下式计算每个所述cuboid得到的结果的分数,选择分数最大的作为最终的根因:

gps*c-ele*layer

c是参数,一般可以取0.01-0.1,ele指的是根因里维度组合的个数,即所述k,layer指的是这个cuboid中涉及的属性的个数。

进一步地,在本申请的实施例中,所述最大化gps分数是搜索的目标,gps用来评估一个维度组合的集合有多大的可能是根因,它的定义如下:

其中avg指的是算术平均,s1指的是当前在评估的维度组合集合,s2指的是当前在评估的维度组合集合的补集,v(.)和f(.)分别是集合中每一个叶子维度组合的实际值和预测值组成的向量,

a指的是根据涟漪效应推算出来的异常,

为了实现上述实施例,本发明还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现上述施例所述的方法。

为了实现上述实施例,本发明还提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例的方法。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1