分析故障根原因的方法和系统与流程

文档序号:15236617发布日期:2018-08-24 05:43阅读:334来源:国知局

本发明涉及数据挖掘技术领域,更具体地,涉及分析故障根原因的方法和系统。



背景技术:

信息化、数字化的发展趋势下,it系统的复杂度日益提高,it构架也日趋复杂,现在的it构架至少包括:硬件、虚拟机、容器、中间件、数据库、应用、业务等等,业务一旦出现故障,会报出大量甚至海量的告警/事件信息,使得维护人员在大量告警/事件数据面前无法准确进行故障定位,并且故障定位对维护人员的素质要求较高,需要由具备丰富的运行维护和开发经验的人员参与。

基于关联规则挖掘的故障分析根原因方法是进行it系统故障诊断、定位的重要方法。现有的故障分析大多采用门限值判定,在kpi上允许设置门限值或者门限范围阈值,越门限则上报告警,这种判断对于it系统的性能问题分析来说就不是很合适,由于网络或其他原因导致用户响应变慢会上报大量的响应时间越限告警,由于这些都不是能够影响用户使用it系统的故障,大部分用户忍一忍觉得可以系统又正常了,也不会关注或投诉,但是,一旦用户投诉了,性能告警也会非常的多,分析起来又比较困难。



技术实现要素:

本发明提供一种克服上述问题或者至少部分地解决上述问题的分析故障根原因的方法和系统。

根据本发明的一个方面,提供一种分析故障根原因的方法,包括:

s1、根据数据集中各数据的时间属性进行排序,按照预设的时间窗对所述数据集进行切分,获得若干组子数据集;

s2、根据apriori算法获取数据集中的频繁项集和关联规则,所述频繁项集中包含一定数量的具有强关联关系的数据;

s3、根据频繁项集中数据的时间属性进行排序,依次将排序靠前的数据与告警原因数据库中预存的伴随告警原因数据匹配,若匹配成功,则移除,继续匹配下一项,最后将匹配不成功的且排序靠前的数据作为该频繁项集中时序最后的数据的根原因;

其中,所述数据集中包含预设时间范围内it系统中各个域的告警数据、日志中的错误数据以及性能数据集中的异常性能数据。

优选地,所述步骤s1之前还包括:

通过apm探针获取所述预设时间范围内it系统中各个域的告警数据和性能数据,通过日志采集方获取it系统中日志数据的错误数据;

采用均值和倍数方差筛选所述性能数据中的异常性能数据;

将所述预设时间范围内it系统中各个域的告警数据、日志中的错误数据以及性能数据中的异常性能数据构成所述数据集。

优选地,所述采用均值和倍数方差筛选所述性能数据中的异常性能数据的步骤,具体包括:

对性能数据集中的性能数据按预设规则进行排序,取中位数的性能数据作为均值;

计算性能数据的方差,过滤掉数值大小处于均值至3倍方差范围内的性能数据,将剩余的性能数据作为所述异常性能数据。

优选地,所述步骤s2具体包括:

将数据集中的所有数据统计支持度后由高到低排序,获得候选1-项集,除去候选1-项集中小于最小支持度的数据,获得频繁1-项集;

根据apriori算法使用逐层搜索技术,直至获得频繁m-项集,满足条件:频繁m-项集不为空且(m-1)-子集频繁、m不大于具有最多数据的子数据集中数据的个数以及(m+1)-项集为空;

列出频繁m-项集的所有项,根据apriori算法生成关联规则。

优选地,所述步骤s3之后还包括:将所述关联规则和根原因进行展示。

优选地,所述it系统包括以下域中的一种或多种:业务、网络、应用、数据库、外部接口、容器、虚拟机以及物理存储。

根据本发明的另一个方面,还提供一种分析故障根原因的系统,包括:

切分模块,用于根据数据集中各数据的时间属性进行排序,按照预设的时间窗对所述数据集进行切分,获得若干组子数据集;

关联模块,用于根据apriori算法获取数据集中的频繁项集和关联规则,所述频繁项集中包含一定数量的具有强关联关系的数据;

根原因查找模块,用于根据频繁项集中数据的时间属性进行排序,依次将排序靠前的数据与告警原因数据库中预存的伴随告警原因数据匹配,若匹配成功则将其从数据集中移除,继续匹配下一项,最后将匹配不成功且排序靠前的数据作为该频繁项集中时序最后的数据的根原因;

其中,所述数据集中包含预设时间范围内it系统中各个域的告警数据、日志中的错误数据以及性能数据集中的异常性能数据。

优选地,所述系统还包括数据集获取模块,所述数据集获取模块具体包括:

收集单元,用于通过apm探针获取所述预设时间范围内it系统中各个域的告警数据和性能数据,通过日志采集方获取it系统中日志数据的错误数据;

筛选单元,用于采用均值和倍数方差筛选所述性能数据中的异常性能数据;

汇聚单元,用于将所述预设时间范围内it系统中各个域的告警数据、日志中的错误数据以及性能数据中的异常性能数据构成所述数据集。

优选地,所述筛选单元具体用于:

对性能数据集中的性能数据按预设规则进行排序,取中位数作为均值;

计算性能数据的方差,过滤掉数值大小处于均值至3倍方差范围内的性能数据,将剩余的性能数据作为所述异常性能数据。

优选地,所述关联模块具体用于:

将数据集中的所有数据统计支持度后由高到低排序,获得候选1-项集,除去候选1-项集中小于最小支持度的数据,获得频繁1-项集;

根据apriori算法使用逐层搜索技术,直至获得频繁m-项集,满足条件:频繁m-项集不为空且(m-1)-子集频繁、m不大于具有最多数据的子数据集中数据的个数以及(m+1)-项集为空;

列出频繁m-项集的所有项,根据apriori算法生成关联规则。

本发明提出的分析故障根原因的方法和系统,将一定时间内的故障数据按照时间窗归类为多个子数据集,通过apriori算法找出具有强关联关系的频繁项集,将具有强关联关系的频繁项集中时间属性靠前的数据与预设的告警原因数据库进行匹配,若匹配成功,则将该数据作为根原因。本发明适用于it系统的全维度监控场景,解放运维人员压力,降低运维人员素质要求。

附图说明

图1为根据本发明实施例的分析故障根原因的方法流程图;

图2为根据本发明实施例的分析故障根原因的系统的功能框图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

为了克服现有技术的上述问题,本发明实施例提供一种分析故障根原因的方法,本方法的设计构思为:告警发生都是由于某一个根故障造成的,根故障会引起其他的告警一起产生,称为伴随告警,造成告警风暴,因此需要从时间顺序上找到最早的故障数据,而根据关联规则挖掘方法,获取满足最小支持度的、具有关联关系的多个故障数据作为频繁项,根据频繁项中排序靠前的故障数据与预设的告警原因数据库进行比对,若比对成功,则说明故障数据是根原因数据,若比对不成功,则继续将排序次前的故障数据与告警原因数据库进行比对,直至匹配成功。经实际测试,本发明实施例的方法能够准确快速地发现有价值的告警关联规则和根原因,为系统维护人员提供决策支持。

具体地,图1示出了本发明实施例的分析故障根原因的方法流程图,如图所示,该方法包括:

101、根据数据集中各数据的时间属性进行排序,按照预设的时间窗对所述数据集进行切分,获得若干组子数据集;数据集中包含预设时间范围内it系统中各个域的告警数据、日志中的错误数据以及性能数据集中的异常性能数据。

需要说明的是,本方法首先会收集一定时间范围内的故障数据,包括各个域的告警数据(在it领域错误是error,比如网络断了,会有网错误出来;告警是未处理的错误,有告警肯定意味着有错误产生,但是该错误it系统未处理)、日志中的错误数据和性能数据集中的异常性能数据,这些故障数据通过数据清洗存入数据库中,构成数据集,用于后续的问题追溯和根原因定位,从线性和非线性的角度来看,性能数据属于线性数据,而告警数据和错误数据属于非线性数据。

作为本领域技术人员所熟知的,日志数据具有级别,例如info级、debug级以及error级等等,本发明实施例通过级别判断日志类别。debug级数据是级别最低的日志数据,一般的来说,在系统实际运行过程中,一般不输出。info级日志数据用来反馈系统的当前状态给最终用户的,所以,在这里输出的信息,应该对最终用户具有实际意义,也就是最终用户要能够看得明白是什么意思才行。从某种角度上说,info输出的信息可以看作是软件产品的一部分(就像那些交互界面上的文字一样)。error级数据,即错误数据,就是说可以进行一些修复性的工作,但无法确定系统会正常的工作下去,系统在以后的某个阶段,很可能会因为当前的这个问题,导致一个无法修复的错误(例如宕机),但也可能一直工作到停止也不出现严重问题。

在计算机系统中,每个数据都存在时间属性,所谓时间属性即表明该数据的开始时刻、结束时刻等等。按照数据集中各数据的开始时刻,进行排序,就获得了各数据(即故障)的产生顺序,进一步对数据集按照时间窗进行切分,可以将数据集中的数据归类至不同时间窗对应的子数据集中。比如分析某天10点到12点,共120分钟的数据,以10分钟的窗口粒度做切分,拆成12组数据,每组数据都包含若干异常性能数据、告警数据/错误数据,本发明实施例的构思在于:如果性能问题发生,会在某些时刻会同时爆发很多问题,但这些问题大部分都是集中在几个核心问题上,通过对分解的集合做概率分析找出那些核心问题。本发明实施例的数据挖掘的方法,有助于从大量的数据中找出出现概率比较高的数据。

102、根据apriori算法获取数据集中的频繁项集和关联规则,所述频繁项集中包含一定数量的具有强关联关系的数据;

需要说明的是,apriori算法是一种用于关联规则挖掘(associationrulemining)的代表性算法,用于挖掘布尔关联规则频繁项集,所谓频繁项集,顾名思义,是在数据集中频繁出现的数据集合,本发明实施例通过apriori算法挖掘数据集中的关联规则,获取具有强关联关系的数据集合,强关联关系即满足强规则——满足最小支持度和最小置信度。本发明实施例的设计构思在于认为具有强关联关系的数据具有较高的概率属于根告警与相关伴随告警的关系。

103、根据频繁项集中数据的时间属性进行排序,依次将排序靠前的数据与告警原因数据库中预存的伴随告警原因数据匹配,若匹配成功,则移除,继续匹配下一项,最后将匹配不成功的且排序靠前的数据作为该频繁项集中时序最后的数据的根原因。

需要说明的是,频繁项集中是具有强关联关系的若干个数据的集合,例如频繁项集(内存占用高、cpu占用高),通过按照频繁项集中的数据的时间属性进行排序,可知内存占用高发生在cpu占用高之前,就以内存占用高作为与可能的根原因与告警原因数据库中预存的伴随告警原因数据匹配。告警原因数据库是本发明实施例创建的一个运行维护管理数据库,该数据库保存了告警数据以及相关伴随告警。本发明实施例中的告警原因数据库可根据实际需求由运维人员进行更新。在本发明实施例中,按照时间属性从前到后的顺序进行排序,排序最前的数据即为时间上最早的数据,如果该数据与爆碎告警原因数据匹配成功,那么就把该数据从频繁项集中移除,接着匹配排序次前的数据,以此进行排序,直至找出无法匹配的数据。

在上述实施例的基础上,步骤101之前还包括获取数据集的过程,具体地,该过程包括:

001、通过apm探针获取预设时间范围内it系统中各个域的告警数据和性能数据,通过日志采集方法获取it系统中日志数据的错误数据。

表1示出了本发明实施例的it系统中各个域以及相应需要采集的性能数据。

表1it系统的域及性能数据表

002、获取预设时间范围内it系统中的性能数据集,采用均值和倍数方差筛选性能数据中的异常性能数据。

需要说明的是,由于性能数据是线性的,在正常情况下,性能数据平稳趋于直线,而在出现异常时,性能数据会出现凹凸不平的曲线,因此本发明实施例通过中位数和倍数方差筛选异常性能数据。

003、将预设时间范围内it系统中各个域的告警数据、日志中的错误数据以及性能数据中的异常性能数据构成数据集。

在上述实施例的基础上,采用均值和倍数方差筛选性能数据中的异常性能数据的步骤,具体包括:

对性能数据集中的性能数据按预设规则(例如从大到小的顺序)进行排序,取中位数作为均值;

需要说明的是,本发明实施例采用中位数作为均值,因为中位数对异常值更敏感,例如,1,2,3,4,100时,平均值=22,但中位数=3(中间的值),显然利用中位数找出异常值合理。

计算性能数据的方差,过滤掉数值大小处于均值至3倍方差范围内的性能数据,将剩余的性能数据作为异常性能数据。

在上述实施例的基础上,步骤102具体包括:

将数据集中的所有数据统计支持度后由高到低排序,获得候选1-项集,除去候选1-项集中小于最小支持度的数据,获得频繁1-项集;

根据apriori算法使用逐层搜索技术,直至获得频繁m-项集,满足条件:频繁m-项集不为空且(m-1)-子集频繁、m不大于具有最多数据的子数据集中数据的个数以及(m+1)-项集为空;

列出m-频繁项集的所有项,根据apriori算法生成关联规则。

需要说明的是,由于异常性能数据本身是一个离散的、非线性的数据点,通常,大多数应用程序中的数据是由一个或多个反映系统功能的程序产生的。当底层应用程序以不正常的方式运行时,会产生异常性能数据,快速高效地发现这些异常性能数据非常具有价值。在it系统中,由于问题是连锁发生的:根原因一定是先发生且不能自愈,从而伴随其他问题一起出现,形成告警风暴。因此,本发明实施例在对异常性能数据进行关联分析时,关联规则的过程为:

找出所有频繁项集,所谓频谱项集即该集合出现的频繁性不小于最小支持度;由频繁项集产生强关联规则,这些强关联规则必须满足最小支持度和最小置信度。

具体地,计算内存占用和cpu均高于预设阈值出现的概率,即在一条数据集合中,上述问题同时出现的次数除以数据集合中异常性能数据的总数的值。例如:support({内存高}-->{cpu占用高})=内存高和cpu占用高同时出现的次数/数据记录数=3/5=60%。

寻找强关联规则

需要注意的是,上一步中已从海量的性能数据和异常性能数据中分析出概率较高的数据,接下来则通过概率分析虚招强关联规则。在本发明实施例中采用条件概率分析的方式,例如,计算内存高的情况下cpu占用也高的概率,反之,内存占用低,cpu占用低。例如:confidence({内存高}-->{cpu占用高})=内存高和cpu占用高同时出现的次数/内存高出现的次数=3/3=100%;confidence({cpu占用高}-->{内存高})=内存高和cpu占用高同时出现的次数/cpu占用高出现的次数=3/4=75%。

为了更好地理解本发明实施例所采用的apriori算法,首先解释apriori算法的基本概念:

1、项集和k-项集

令i={i1,i2,i3……id}是数据集中所有项(即数据)的集合,而t={t1,t2,t3….tn}是所有事务(即时间窗)的集合,每个事务ti包含的项集都是i的子集。在关联分析中,包含0个或多个项的集合称为项集。如果一个项集包含k个项,则称它为k-项集。空集是指不包含任何项的项集。例如,在本发明的一个例子中,{cpu占用高,响应时长高,内存使用高}是一个3-项集。表2示出了本发明实施例的一个数据集表,其中tid1表示第一个时间窗对应的子集合,由表2可知,tid1包含了两个项集:cpu高和相应时长高。

表2数据集表

2、支持度计数

项集的一个重要性质是它的支持度计数,即包含特定项集的事务个数,数学上,项集x的支持度计数σ(x)可以表示为:其中,符号|*|表示集合中元素的个数。在表2描述的实施例中,项集{时延高,内存使用高,响应时长高}的支持度计数为2,因为只有3和4两个事务中同时包含这3个项。

3、关联规则

关联规则是形如x→y的蕴含表达式,其中x和y是不相交的项集,即关联规则的强度可以用它的支持度(support)和置信度(confidence)来度量。支持度确定规则可以用于给定数据集的频繁程度,而置信度确定y在包含x的事务中出现的频繁程度。

支持度(s)和置信度(c)这两种度量的形式定义如下:

s(x→y)=σ(x∪y)/n

c(x→y)=σ(x∪y)/σ(x)

其中,σ(x∪y)是(x∪y)的支持度计数,n为事务总数,σ(x)是x的支持度计数。

example

在表2描述的实施例中,考虑规则{响应时长高,内存使用高}→{时延高}。由于项集{响应时长高,内存使用高,时延高}的支持度计数为2,而事务的总数为5,所以规则的支持度为2/5=0.4。规则的置信度是项集{响应时长高,内存使用高,时延高}的支持度计数与项集{响应时长高,内存使用高}支持度技术的商,由于存在3个事务同时包含响应时长高和内存使用高,所以规则的置信度为2/3=0.67。

关联规则发现

给定事务的集合t,关联规则发现是指找出支持度大于等于minsup(最小支持度)并且置信度大于等于minconf(最小置信度)的所有规则,minsup和minconf是对应的支持度和置信度阈值。

关联规则的挖掘是一个两步的过程:

(1)频繁项集产生:其目标是发现满足最小支持度阈值的所有项集(至少和预定义的最小支持计数一样),这些项集称作频繁项集。

(2)规则的产生:其目标是从上一步发现的频繁项集中提取所有高置信度的规则,这些规则称作强规则。(必须满足最小支持度和最小置信度)

apriori算法的实质使用候选项集找频繁项集。apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法。算法的名字基于这样的事实:算法使用频繁项集性质的先验知识,正如我们将看到的。apriori使用一种称作逐层搜索的迭代方法,k-项集用于探索(k+1)-项集。首先,找出频繁1-项集的集合。该集合记作l1。l1用于找频繁2-项集的集合l2,而l2用于找l3,如此下去,直到不能找到频繁k-项集。找每个lk需要一次数据库扫描。

apriori性质:频繁项集的所有非空子集都必须也是频繁的。apriori性质基于如下观察:根据定义,如果项集i不满足最小支持度阈值s,则i不是频繁的,即p(i)<s。如果项a添加到i,则结果项集(即i∪a)不可能比i更频繁出现。因此,i∪a也不是频繁的,即p(i∪a)<s。该性质属于一种特殊的分类,称作反单调,意指如果一个集合不能通过测试,则它的所有超集也都不能通过相同的测试。称它为反单调的,因为在通不过测试的意义下,该性质是单调的。

对于apriori算法,如果一个集合是频繁项集,则它的所有子集都是频繁项集。举例:假设一个集合{内存高,cpu占用高}是频繁项集,即内存高、cpu占用高同时出现在一条记录的次数大于等于最小支持度min_support,则它的子集{内存高},{cpu占用高}出现次数必定大于等于min_support,即它的子集都是频繁项集。如果一个集合不是频繁项集,则它的所有超集都不是频繁项集。举例:假设集合{内存高}不是频繁项集,即内存高出现的次数小于min_support,则它的任何超集如{内存高,cpu占用高}出现的次数必定小于min_support,因此其超集必定也不是频繁项集。

apriori算法的关键是如何用lk-1找lk,由下面的两步过程组成:

连接步:为找lk,通过lk-1与自己连接产生候选k-项集的集合。该候选项集的集合记作ck。设l1和l2是lk-1中的项集。记号li[j]表示li的第j项(例如,l1[k-2]表示l1的倒数第3项)。为方便计,假定事务或项集中的项按字典次序排序。执行连接lk-1lk-1;其中,lk-1的元素是可连接的,如果它们前(k-2)个项相同;即,lk-1的元素l1和l2是可连接的,如果(l1[1]=l2[1])∧(l1[2]=l2[2])∧…∧(l1[k-2]=l2[k-2])∧(l1[k-1]<l2[k-1])。条件(l1[k-1]<l2[k-1])是简单地保证不产生重复。连接l1和l2产生的结果项集是l1[1]l1[2]…l1[k-1]l2[k-1]。

剪枝步:ck是lk的超集;即,它的成员可以是频繁的,也可以不是频繁的,但所有的频繁k-项集都包含在ck中。扫描数据库,确定ck中每个候选的计数,从而确定lk(即,根据定义,计数值不小于最小支持度计数的所有候选是频繁的,从而属于lk)。然而,ck可能很大,这样所涉及的计算量就很大。为压缩ck,可以用以下办法使用apriori性质:任何非频繁的(k-1)-项集都不是可能是频繁k-项集的子集。因此,如果一个候选k-项集的(k-1)-子集不在lk-1中,则该候选也不可能是频繁的,从而可以由ck中删除。这种子集测试可以使用所有频繁项集的散列树快速完成。

由频繁项集产生关联规则

一旦由数据库d中的事务找出频繁项集,由它们产生强关联规则是直接了当的(强关联规则满足最小支持度和最小置信度)。对于置信度,可以用下式,其中条件概率用项集支持度计数表示。confidence(a→b)=p(a│b)=support(a∪b)/support(a),其中,support(a∪b)是(a∪b)的支持度计数,support(a)是a的支持度计数。根据该式,关联规则可以产生如下:

f1、对于每个频繁项集l,产生l的所有非空子集。

f2、对于l的每个非空子集s,如果support(l)/support(s)≥min_conf,则输出规则其中,min_conf是最小置信度阈值。由于规则由频繁项集产生,每个规则都自动满足最小支持度。频繁项集连同它们的支持度预先存放在hash表中,使得它们可以快速被访问。

下面用一个实例介绍apriori算法,在该实例中数据集具有9个时间窗,即9个子数据集,|d|=9。其中子数据集t1中包含数据i1,i2和i5;子数据集t2中包含数据i2和i4;子数据集t3中包含数据i2和i3;子数据集t4中包含数据i1、i2和i4;子数据集t5中包含数据i1和i3;子数据集t6中包含数据i2和i3;子数据集t7中包含数据i1和i3;子数据集t8中包含数据i1、i2、i3和i5;子数据集t9中包含数据i1,i2和i3。

一)、挖掘频繁项集

1、在算法的第一次迭代,每个项都是候选1-项集的集合c1的成员,算法简单地扫描所有的事务,对每个项的出现次数计数。

2、假定最小事务支持计数为2(即,minsup=2/9=22%)。可以确定频繁1-项集的集合l1。它由具有最小支持度的候选1-项集组成。

3、为发现频繁2-项集的集合l2,算法使用l1×l1产生候选2-项集的集合c2。

4、扫描d中事务,计算c2中每个候选项集的支持计数。

5、确定频繁2-项集的集合l2,它由具有最小支持度的c2中的候选2-项集组成。

6、候选3-项集的集合c3的产生详细地列在图中。首先,令c3=l2l2={{i1,i2,i3},{i1,i2,i5},{i1,i3,i5},{i2,i3,i4},{i2,i3,i5},{i2,i4,i5}}。根据apriori性质,频繁项集的所有子集必须是频繁的,我们可以确定后4个候选不可能是频繁的。因此,我们把它们由c3删除,这样,在此后扫描d确定l3时就不必再求它们的计数值。注意,apriori算法使用逐层搜索技术,给定k-项集,我们只需要检查它们的(k-1)-子集是否频繁。

【l2l2连接生成c3的过程】

1.连接:c3=l2×l2={{i1,i2},{i1,i3},{i1,i5},{i2,i3},{i2,i4},{i2,i5}}{{i1,i2},{i1,i3},{i1,i5},{i2,i3},{i2,i4},{i2,i5}}={{i1,i2,i3},{i1,i2,i5},{i1,i3,i5},{i2,i3,i4},{i2,i3,i5},{i2,i4,i5}}

2.使用apriori性质剪枝:频繁项集的所有子集必须是频繁的。

f{i1,i2,i3}的2-项子集是{i1,i2},{i1,i3}和{i2,i3}。{i1,i2,i3}的所有2-项子集都是l2的元素。因此,保留{i1,i2,i3}在c3中。

f{i1,i2,i5}的2-项子集是{i1,i2},{i1,i5}和{i2,i5}。{i1,i2,i5}的所有2-项子集都是l2的元素。因此,保留{i1,i2,i5}在c3中。

f{i1,i3,i5}的2-项子集是{i1,i3},{i1,i5}和{i3,i5}。{i3,i5}不是l2的元素,因而不是频繁的。这样,由c3中删除{i1,i3,i5}。

f{i2,i3,i4}的2-项子集是{i2,i3},{i2,i4}和{i3,i4}。{i3,i4}不是l2的元素,因而不是频繁的。这样,由c3中删除{i2,i3,i4}。

f{i2,i3,i5}的2-项子集是{i2,i3},{i2,i5}和{i3,i5}。{i3,i5}不是l2的元素,因而不是频繁的。这样,由c3中删除{i2,i3,i5}。

f{i2,i4,i5}的2-项子集是{i2,i4},{i2,i5}和{i4,i5}。{i4,i5}不是l2的元素,因而不是频繁的。这样,由c3中删除{i2,i3,i5}。

3.剪枝后c3={{i1,i2,i3},{i1,i2,i5}}

7、扫描d中事务,以确定l3,它由具有最小支持度的c3中的候选3-项集组成。

8、算法使用l3×l3产生候选4-项集的集合c4。尽管连接产生结果{{i1,i2,i3,i5}},这个项集被剪去,因为它的子集{i1,i3,i5}不是频繁的。这样,因此算法终止,找出了所有的频繁项集。

在上述实施例的基础上,it系统包括以下域中的一种或多种:业务、网络、应用、数据库、外部接口、容器、虚拟机以及物理存储。

在上述实施例的基础上,步骤103之后还包括:将所述关联规则和根原因进行展示。需要说明的是,通过将关联规则和根原因进行展示,能够方便运维人员提供决策支持。

图2示出了本发明实施例的分析故障根原因的系统的功能框图,如图所示,该方法包括:

切分模块201,用于根据数据集中各数据的时间属性进行排序,按照预设的时间窗对所述数据集进行切分,获得若干组子数据集;数据集中包含预设时间范围内it系统中各个域的告警数据、日志中的错误数据以及性能数据集中的异常性能数据。

需要说明的是,本系统的切分模块首先会收集一定时间范围内的故障数据,包括各个域的告警数据(在it领域错误是error,比如网络断了,会有网错误出来;告警是未处理的错误,有告警肯定意味着有错误产生,但是该错误it系统未处理)、日志中的错误数据和性能数据集中的异常性能数据,这些故障数据通过数据清洗存入数据库中,构成数据集,用于后续的问题追溯和根原因定位,从线性和非线性的角度来看,性能数据属于线性数据,而告警数据和错误数据属于非线性数据。

作为本领域技术人员所熟知的,日志数据具有级别,例如info级、debug级以及error级等等,本发明实施例通过级别判断日志类别。debug级数据是级别最低的日志数据,一般的来说,在系统实际运行过程中,一般不输出。info级日志数据用来反馈系统的当前状态给最终用户的,所以,在这里输出的信息,应该对最终用户具有实际意义,也就是最终用户要能够看得明白是什么意思才行。从某种角度上说,info输出的信息可以看作是软件产品的一部分(就像那些交互界面上的文字一样)。error级数据,即错误数据,就是说可以进行一些修复性的工作,但无法确定系统会正常的工作下去,系统在以后的某个阶段,很可能会因为当前的这个问题,导致一个无法修复的错误(例如宕机),但也可能一直工作到停止也不出现严重问题。

在计算机系统中,每个数据都存在时间属性,所谓时间属性即表明该数据的开始时刻、结束时刻等等。按照数据集中各数据的开始时刻,进行排序,就获得了各数据(即故障)的产生顺序,进一步对数据集按照时间窗进行切分,可以将数据集中的数据归类至不同时间窗对应的子数据集中。比如分析某天10点到12点,共120分钟的数据,以10分钟的窗口粒度做切分,拆成12组数据,每组数据都包含若干异常性能数据、告警数据/错误数据,本发明实施例的构思在于:如果性能问题发生,会在某些时刻会同时爆发很多问题,但这些问题大部分都是集中在几个核心问题上,通过对分解的集合做概率分析找出那些核心问题。本发明实施例的数据挖掘的系统,有助于从大量的数据中找出出现概率比较高的数据。

关联模块202,用于根据apriori算法获取数据集中的频繁项集和关联规则,所述频繁项集中包含一定数量的具有强关联关系的数据。

需要说明的是,apriori算法是一种用于关联规则挖掘(associationrulemining)的代表性算法,用于挖掘布尔关联规则频繁项集,所谓频繁项集,顾名思义,是在数据集中频繁出现的数据集合,本发明实施例通过apriori算法挖掘数据集中的关联规则,获取具有强关联关系的数据集合,强关联关系即满足强规则——满足最小支持度和最小置信度。本发明实施例的设计构思在于认为具有强关联关系的数据具有较高的概率属于根告警与相关伴随告警的关系。

根原因查找模块203,用于根据频繁项集中数据的时间属性进行排序,依次将排序靠前的数据与告警原因数据库中预存的伴随告警原因数据匹配,若匹配成功,则移除,继续匹配下一项,最后将匹配不成功的且排序靠前的数据作为该频繁项集中时序最后的数据的根原因。

在上述实施例的基础上,本发明实施例的系统还包括数据集获取模块,数据集获取模块具体包括:

收集单元,用于通过apm探针获取所述预设时间范围内it系统中各个域的告警数据和性能数据,通过日志采集方获取it系统中日志数据的错误数据;

筛选单元,用于采用均值和倍数方差筛选所述性能数据中的异常性能数据;

汇聚单元,用于将所述预设时间范围内it系统中各个域的告警数据、日志中的错误数据以及性能数据中的异常性能数据构成所述数据集。

在上述各实施例的基础上,筛选单元具体用于:

对性能数据集中的性能数据按预设规则进行排序,取中位数的性能数据作为均值;

计算性能数据的方差,过滤掉数值大小处于均值至3倍方差范围内的性能数据,将剩余的性能数据作为所述异常性能数据。

在上述各实施例的基础上,所述关联模块具体用于:

将数据集中的所有数据统计支持度后由高到低排序,获得候选1-项集,除去候选1-项集中小于最小支持度的数据,获得频繁1-项集;

根据apriori算法使用逐层搜索技术,直至获得频繁m-项集,满足条件:频繁m-项集不为空且(m-1)-子集频繁、m不大于具有最多数据的子数据集中数据的个数以及(m+1)-项集为空;

列出频繁m-项集的所有项,根据apriori算法生成关联规则。

以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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