一种根因分析方法、装置、设备及存储介质与流程

文档序号:24631157发布日期:2021-04-09 20:40阅读:276来源:国知局
一种根因分析方法、装置、设备及存储介质与流程

本发明涉及openstack技术领域,更具体地说,涉及一种根因分析方法、装置、设备及存储介质。



背景技术:

随着openstack越来越成熟,基于openstack的云平台的规模也不断扩大,云平台包含的设备从最初的几台、十几台上升到几百台甚至上千台。面对大规模、多模块的云平台的告警,运维人员人工定位告警对应故障面临的挑战十分巨大,确定根因告警是极其耗时的事情。因此,如何快速定位大规模云平台的告警根因,是目前本领域技术人员亟待解决的问题。



技术实现要素:

本发明的目的是提供一种根因分析方法、装置、设备及存储介质,能够快速且有效的实现大规模云平台中告警根因的定位。

为了实现上述目的,本发明提供如下技术方案:

一种根因分析方法,包括:

获取预设时间范围内云平台的历史告警数据;

采用apriori算法对所述历史告警数据进行处理,得到相应的根因列表;其中,所述根因列表包含所述历史告警数据中不同告警之间的根因关系;

接收所述云平台的实时告警数据,基于所述根因列表确定所述实时告警数据中不同告警之间的根因关系,并基于确定的该根因关系确定所述实时告警数据中作为根因的告警为根因告警。

优选的,还包括:

构建表示所述云平台中各项资源实体及所述资源实体间关系的实体图;

判断所述根因列表中不同告警之间的根因关系与所述实体图中对应资源实体之间的关系是否匹配,并将判断的结果为否的根因关系从所述根因列表中删除。

优选的,构建表示所述云平台中各项资源实体及所述资源实体间关系的实体图,包括:

接收实时消息数据;

基于配置文件中资源实体的定义及类别,从所述实时消息数据中提取资源实体,并确定提取出的各资源实体之间的关系;

基于提取出的资源实体及各资源实体之间的关系构建相应的实体图。

优选的,获取所述历史告警数据及所述实时告警数据之后,还包括:

对所述历史告警数据及所述实时告警数据的时间进行归一化处理。

优选的,对所述历史告警数据及所述实时告警数据的时间进行归一化处理,包括:

确定所述历史告警数据及所述实时告警数据中属于同一时间窗口内的数据,为该时间窗口对应时间点的数据。

优选的,采用apriori算法对所述历史告警数据进行处理之前,还包括:

将所述历史告警数据以fp-growth树的形式进行存储,以供所述apriori算法获取以fp-growth树的形式存储的历史告警数据。

优选的,基于确定的该根因关系确定所述实时告警数据中作为根因的告警为根因告警之后,还包括:

发出与所述根因告警相应的警报信息。

一种根因分析装置,包括:

数据接收模块,用于:获取预设时间范围内云平台的历史告警数据;

处理模块,用于:采用apriori算法对所述历史告警数据进行处理,得到相应的根因列表;其中,所述根因列表包含所述历史告警数据中不同告警之间的根因关系;

分析模块,用于:接收所述云平台的实时告警数据,基于所述根因列表确定所述实时告警数据中不同告警之间的根因关系,并基于确定的该根因关系确定所述实时告警数据中作为根因的告警为根因告警。

一种根因分析设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上任一项所述根因分析方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述根因分析方法的步骤。

本发明提供了一种根因分析方法、装置、设备及存储介质,该方法包括:获取预设时间范围内云平台的历史告警数据;采用apriori算法对所述历史告警数据进行处理,得到相应的根因列表;其中,所述根因列表包含所述历史告警数据中不同告警之间的根因关系;接收所述云平台的实时告警数据,基于所述根因列表确定所述实时告警数据中不同告警之间的根因关系,并基于确定的该根因关系确定所述实时告警数据中作为根因的告警为根因告警。本申请采用apriori算法对历史告警数据进行处理,即可得到包含不同告警间根因关系的根因列表作为模型,进而以模型为基础实现对任意的实时告警数据的分析,即可确定实时告警数据对应告警间的根因关系,最终基于该根因关系确定出对应的根因告警;可见,本申请在实现对历史告警数据进行处理得到相应模型后,即可基于该模型实现任意的实时告警数据的分析,最终确定出相应的根因关系及根因告警,从而快速且有效的实现大规模云平台中告警根因的定位。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例提供的一种根因分析方法的流程图;

图2为本发明实施例提供的一种根因分析方法实现架构的示意图;

图3为本发明实施例提供的一种根因分析装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1,其示出了本发明实施例提供的一种根因分析方法的流程图,可以包括:

s11:获取预设时间范围内云平台的历史告警数据。

本发明实施例提供的一种根因分析方法的执行主体可以为对应的根因分析装置。需要说明的是,本申请实施例中的云平台可以为基于openstack的云平台,因此也可以称之为openstack集群;其中,openstack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合,而项目目标则是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。

为了实现告警根因分析,本申请实施例可以接收云平台中各模块的数据,将这些数据按照预先设定的规则转换为根因分析装置可以识别的数据后,进行相应的处理。具体来说,接收云平台中各模块的数据可以包括历史告警数据、实时告警数据及实时消息数据;其中,历史告警数据即云平台历史上产生的告警,预设时间范围可以为外界根据实际需要设置的,通常为距离当前时刻最近的当前时刻之前的一段时间,因此在确定出预设时间范围后,则可以获取预设时间范围内产生的全部告警作为历史告警数据。

s12:采用apriori算法对历史告警数据进行处理,得到相应的根因列表;其中,根因列表包含历史告警数据中不同告警之间的根因关系。

云平台中如果告警a总是伴随报警b产生,当报警b被修复后,告警a也随之消失,即认为告警b为告警a的根因告警。基于此,本申请实施例将历史告警数据中每个告警分别作为相应的频繁项,确定全部的频繁项组成频繁项集,进而采用apriori算法(基于频繁项集的关联算法)扫描频繁项集构建模型实现根因定位,具体来说,可以采用apriori算法对历史告警数据进行相应的处理,从而可以得到根因列表作为构建得到的模型,根因列表中包含历史告警数据对应不同告警之间的根因关系,也即哪些告警为哪些告警的根因告警,如上述示例中告警b为告警a的根因告警。

其中,基于频繁项集的关联算法的原理包括:如果某个频繁项集是频繁的,那么它的所有子集也是频繁的,如果某个频繁项集是非频繁的,那么它的所有超集也是非频繁的;基于此,从单元素频繁项集开始,通过组合满足最小支持度的频繁项集来形成更大的集合。另外,采用基于频繁项集的关联算法进行根因分析满足一定的支持度和置信度;支持度即数据集中包含该项集的数据所占数据集的比例,度量一个集合在原始数据中出现的频率,置信度是针对一条关联规则来定义的,a->b的置信度=支持度{a|b}/支持度{a},a|b表示ab的并集。而采用apriori算法扫描频繁项集产生关联规则(关联规则即为根因关系)的过程可以包括:使用apriori算法扫描频繁项集,得到其中所有出现过的数据,作为候选1项集,从中挖掘候选k项集,扫描计算候选k项集的支持度剪枝去掉候选k项集中支持度低于最小支持度α的数据集,得到频繁k项集;如果频繁k项集为空,则返回频繁k-1项集的集合作为算法结果,算法结束;基于频繁k项集链接生成候选k+1项集返回执行相应步骤,迭代得到k=k+1项集结果。简单来说,对于每个频繁项集i,产生i的所有非空子集对于i的每个非空子集s,如果support(i)/support(s)≥min_conf,则输出规则“s(l-s)”;其中,support(x)表示x的支持度,min_conf表示最小置信度阈值。

s13:接收云平台的实时告警数据,基于根因列表确定实时告警数据中不同告警之间的根因关系,并基于确定的该根因关系确定实时告警数据中作为根因的告警为根因告警。

接收云平台中各模块当前生成的告警作为实时告警数据,并基于根因列表确定出实时告警数据对应不同告警之间的根因关系;具体来说,在基于根因列表确定实时告警数据对应不同告警之间的根因关系时,可以是将实时告警数据中对应告警与根因列表中各告警进行比对,如果实时告警数据中存在与根因列表中任意根因关系相应的告警(与任意根因关系相应的告警则为存在该任意根因关系的告警),则确定实时告警数据中存在的与根因列表中该任意根因关系相应的告警之间存在根因关系,并且在该根因关系中作为根因的告警则为根因告警。其中,接收实时告警数据可以是以实时消息的形式接收的;并且,在确定出实时告警数据中不同告警之间的根因关系后,可以为存在根因关系的这些告警设定相应的告警级别,如根因告警的级别比其他告警的级别要高,以使得外界人员可以基于级别确定出告警的重要程度。

本申请采用apriori算法对历史告警数据进行处理,即可得到包含不同告警间根因关系的根因列表作为模型,进而以模型为基础实现对任意的实时告警数据的分析,即可确定实时告警数据对应告警间的根因关系,最终基于该根因关系确定出对应的根因告警;可见,本申请在实现对历史告警数据进行处理得到相应模型后,即可基于该模型实现任意的实时告警数据的分析,最终确定出相应的根因关系及根因告警,从而快速且有效的实现大规模云平台中告警根因的定位。

本发明实施例提供的一种根因分析方法,还可以包括:

构建表示云平台中各项资源实体及资源实体间关系的实体图;

判断根因列表中不同告警之间的根因关系与实体图中对应资源实体之间的关系是否匹配,并将判断的结果为否的根因关系从根因列表中删除。

为了确定根因列表中包含的各根因关系是否符合相应的资源实体之间的关系,本申请实施例可以构建云平台中包含的各项资源实体及各项资源实体之间关系的实体图,实体图是有向的,如任意资源实体包含另一资源实体,则在实体图中由该任意资源实体指向其包含的另一资源实体,再如任意资源实体挂载有另一资源实体,则在实体图中由该任意资源实体指向其挂载的另一资源实体等。在得到实体图后,可以判断根因列表中不同告警之间的根因关系与实体图中不同资源实体之间的关系是否匹配,如果任意根因关系对应告警之间的根因关系与对应资源实体之间的关系不匹配,则可以确定该任意根因关系并不符合对应资源实体间的关系,其是不合理的,因此将其从根因列表中删除。具体来说,在判断根因列表中任意根因关系与实体图对应资源实体之间的关系是否匹配时,如果该任意根因关系中告警的资源实体之间的关系符合实体图中对应资源实体之间的关系,则说明该任意根因关系与实体图中对应资源实体之间的关系匹配,否则,确定两者不匹配;例如根因关系中虚拟机a的内存告警是物理机b告警的内存告警,但通过实体图可知a并不是创建在物理机b上的,因此该根因关系不成立,从根因列表中删除。

本发明实施例提供的一种根因分析方法,构建表示云平台中各项资源实体及资源实体间关系的实体图,可以包括:

接收实时消息数据;

基于配置文件中资源实体的定义及类别,从实时消息数据中提取资源实体,并确定提取出的各资源实体之间的关系;

基于提取出的资源实体及各资源实体之间的关系构建相应的实体图。

本申请实施例可以接收云平台中nova、cinder、neutron等模块上报的实时消息数据,实时消息数据即云平台产生的除告警外的实时消息数据,用于构建云平台的实体图。云平台中的模块每进行操作,例如创建虚拟机、删除磁盘、虚拟机开关机等,都以消息的形式发送到消息队列订阅到根因分析装置。根因分析装置在接收到实时消息数据后,可以根据配置文件中资源实体的定义及类别对实时消息数据进行分析,获得其中包含的实体资源及实体资源之间的关系,进而采用图计算方法基于这些信息构建相应的实体图;其中,基于配置文件中资源实体的定义可以从实时消息数据中获取其符合资源实体的定义的资源实体(如哪些字符表示虚拟机,哪些字符表示物理机等),进而确定这些资源实体之间的关系则为这些资源实体所属的类别之间应具有的关系(如虚拟机应创建在物理机上等);以资源实体为新增的虚拟机为例,获取到消息队列通知后从消息队列中获取实时消息数据,得到新增了一个虚拟机实例,而消息队列通知可以包括包括虚拟机的信息(cpu合数、内存大小、所在物理机等),根据配置文件分析资源实体之间的对应关系,在实体图上显示最新的虚拟机实例,并和相应的物理机建立连接关系。从而通过这种方式简便的实现实体图的创建。

另外,历史告警数据可以是云平台的告警模块(例如kapacitor、zabbix等)发出的,通过历史告警数据可以得到告警实体,进而将告警实体挂载到相应的资源实体上,从而使得实体图能够体现告警的因果关系,上级资源实体的告警可能是下级资源实体告警的根因,而下级资源实体的告警不可能是上级资源实体的根因;对应的在实现根因关系与实体图中相应资源实体关系的匹配时,能够基于根因关系中告警的告警实体与资源实体的挂载关系,确定出与告警的告警实体具有挂载关系的资源实体则为与告警对应的资源实体,便于快速实现根因关系与实体图中相应资源实体间关系的匹配。其中,告警实体为告警发生故障等的实体,如虚拟机a的内存告警,内存告警的告警实体则为虚拟机a;资源实体则为云平台中包含的资源的实体,如虚拟机、物理机、磁盘等;而将告警实体挂载到资源实体上为告警发生故障等的实体挂载到该实体所属的资源实体中,如虚拟机a的内存告警,则为将虚拟机a挂载到虚拟机下。

本发明实施例提供的一种根因分析方法,获取历史告警数据及实时告警数据之后,还可以包括:

对历史告警数据及实时告警数据的时间进行归一化处理;

而对历史告警数据及实时告警数据的时间进行归一化处理,可以包括:

确定历史告警数据及实时告警数据中属于同一时间窗口内的数据,为该时间窗口对应时间点的数据。

无论是历史告警数据还是实时告警数据,为了保证在实现相应数据分析处理等时的有效性,本申请均需要对其进行时间的归一化处理;具体来说,对数据进行归一化处理时,可以确定数据中属于同一时间窗口内的数据为该时间窗口对应时间点的数据,时间窗口可以根据实际需要进行设定,如时间窗口为十分钟,三点至三点九分内生成的数据为三点的数据,三点十分至三点十九分内生成的数据为三点十分的数据,以此类推。

另外,在接收实时告警数据时,可以将接收到的实时告警数据缓存到内存中,直到内存中缓存的实时告警数据所属时长达到一个时间窗口,则将该时间窗口内全部的实时告警数据作为需要分析的实时告警数据,并基于根因序列对这些需要分析的实时告警数据进行相应的根因关系的确定。

本发明实施例提供的一种根因分析方法,采用apriori算法对历史告警数据进行处理之前,还可以包括:

将历史告警数据以fp-growth树的形式进行存储,以供apriori算法获取以fp-growth树的形式存储的历史告警数据。

本申请中由于采用apriori算法对历史告警数据进行关联计算时需对存储有历史告警数据的告警数据库进行多次扫描;为了有效提高apriori算法的扫描速度,进而提高根因分析效率,本申请实施例可以将历史告警数据fp-growth树的形式构建。具体来说,可以将历史告警数据按照支持度排序后,把每一类告警的历史告警数据项按降序依次插入到一棵以null为根结点的树中,同时在每个结点处记录该结点出现的支持度,从而得到相应的fp-growth树。

本发明实施例提供的一种根因分析方法,基于确定的该根因关系确定实时告警数据中作为根因的告警为根因告警之后,还可以包括:

发出与根因告警相应的警报信息。

本申请在确定出根因告警后,还可以向相应人员发出该根因告警对应的警报信息,以使得接收到警报信息的人员能够及时对该根因告警进行处理,进而及时消除该根因告警及相应的其他告警的故障。

本发明实施例还提供了一种根因分析装置,可以包括:

数据接收模块,用于:获取预设时间范围内云平台的历史告警数据;

告警训练模块,用于:采用apriori算法对历史告警数据进行处理,得到相应的根因列表;根因列表包含历史告警数据中不同告警之间的根因关系;

告警评估模块,用于:接收云平台的实时告警数据,基于根因列表确定实时告警数据中不同告警之间的根因关系,并基于确定的该根因关系确定实时告警数据中作为根因的告警为根因告警。

本发明实施例提供的一种根因分析装置,还可以包括:

实体处理模块,用于:构建表示云平台中各项资源实体及资源实体间关系的实体图;

告警训练模块还用于:判断根因列表中不同告警之间的根因关系与实体图中对应资源实体之间的关系是否匹配,并将判断的结果为否的根因关系从根因列表中删除。

本发明实施例提供的一种根因分析装置,实体处理模块可以包括:

构建单元,用于:接收实时消息数据;基于配置文件中资源实体的定义及类别,从实时消息数据中提取资源实体,并确定提取出的各资源实体之间的关系;基于提取出的资源实体及各资源实体之间的关系构建相应的实体图。

本发明实施例提供的一种根因分析装置,数据接收模块还用于:获取历史告警数据及实时告警数据之后,对历史告警数据及实时告警数据的时间进行归一化处理。

本发明实施例提供的一种根因分析装置,数据接收模块可以包括:

归一化单元,用于:确定历史告警数据及实时告警数据中属于同一时间窗口内的数据,为该时间窗口对应时间点的数据。

本发明实施例提供的一种根因分析装置,还可以包括:

存储模块,用于:采用apriori算法对历史告警数据进行处理之前,将历史告警数据以fp-growth树的形式进行存储,以供apriori算法获取以fp-growth树的形式存储的历史告警数据。

本发明实施例提供的一种根因分析装置,还可以包括:

发出模块,用于:基于确定的该根因关系确定实时告警数据中作为根因的告警为根因告警之后,发出与根因告警相应的警报信息。

在一种具体应用场景中,本发明实施例提供的一种根因分析方法可以通过图2所示的架构实现,而其所使用的根因分析装置中模块间关系可以如图3所示,该根因分析方法具体可以包括:

a.数据接收模块

数据接收模块用于接收云平台各模块的数据,转换后供根因分析装置的其他模块使用。其中,数据接收模块接收的数据可以包括历史告警数据、实时告警数据和实时消息数据。

历史告警数据即云平台的历史告警,用于模型训练。获取预设时间范围内的历史告警数据,并对历史告警数据的时间进行归一化处理;

实时告警数据即云平台的实时告警,此数据经过模型处理后能够得到云平台的根因告警;实时告警数据以实时消息的形式发送至数据接收模块;

实时消息数据即云平台除告警模块外产生的实时消息数据,用于构建云平台的实体图;云平台各模块(例如nova、neutron、cinder等)每进行操作,例如创建虚拟机、删除磁盘、虚拟机开关机等,都以消息的形式发送到消息队列订阅到根因分析的数据接收模块。

数据接收模块对接收的告警数据进行归一化处理,无论告警数据用于模型训练还是根因分析,均需对每一个告警数据的时间进行归一化处理。

b.实体处理模块

实体处理模块接收云平台的实时消息数据,根据预设有实体类别的配置文件,采用图计算方法构建云平台的实体图;以新增虚拟机为例,实体处理模块实时获取消息队列通知,得知新增了一个虚拟机实例,此通知包括虚拟机的信息(cpu合数、内存大小、所在物理机等),根据配置文件分析资源实体之间的对应关系,在实体图上显示最新的虚拟机实例,并和相应的物理机建立连接关系。

c.告警训练模块

采用关联分析算法apriori和fp-growth获取告警之间的关联关系,得到根因列表;同时根据实体图判断是否不存在根因列表中的任意根因关系,若不存在,则在根因列表中删除相应的根因关系;例如apriori和fp-growth算法中得到虚拟机a的内存告警是物理机b告警的内存告警,但通过实体图可知a并不是创建在b上的,因此根因关系不成立,从根因列表中删除。

d.告警评估模块

实时接收告警数据,将实时告警数据缓存到内存,直到实时告警数据的时间达到一个时间窗口,根据根因列表,循环判断实时告警数据中哪些告警是根因告警,将根因告警的级别定到最高。

本申请可以用于云平台的大规模监控中,包括公有云及私有云的产品;并且,在长期累积的大规模历史告警数据的基础上无需设置规则,采用频繁项关联学习算法,即可计算告警的关联模型,以此模型为基础,对实时告警数据进行处理,减少告警数量,得到根因告警。另外,可以利用新产生的告警数据持续训练模型,从而使得模型能够满足最新的告警的根因关系;并且,根因分析是关联分析,即使支持度和置信度都很高也不一定具有根因关系。

本发明实施例还提供了一种根因分析设备,可以包括:

存储器,用于存储计算机程序;

处理器,用于执行计算机程序时实现如上任一项根因分析方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可以实现如上任一项根因分析方法的步骤。

需要说明的是,本发明实施例提供的一种根因分析装置、设备及存储介质中相关部分的说明请参见本发明实施例提供的一种根因分析方法中对应部分的详细说明,在此不再赘述。另外本发明实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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