告警处理方法、装置、电子设备以及计算机可读存储介质与流程

文档序号:21178015发布日期:2020-06-20 17:36阅读:158来源:国知局
告警处理方法、装置、电子设备以及计算机可读存储介质与流程

本申请涉及系统告警领域,尤其涉及一种告警处理方法、装置、电子设备以及计算机可读存储介质。



背景技术:

大型的在线服务系统如搜索引擎、网上银行已经成为人们生活不可缺少的部分。但是由于这些服务系统的规模庞大、结构复杂,在实际运行会不可避免的出现故障。这些故障一般由硬件问题、软件bug和一些突发的外部因素造成,可能会造成服务响应延迟,系统不可用,违背了服务级别协议(servicelevelagreement,sla),导致用户体验差,且带来巨大的经济损失。比如,相关报告对美国63个数据中心的统计发现,平均1小时宕机带来的损失从2010年的$505502增加到2016年的$740357。因此,及时准确的发现故障并快速诊断修复故障至关重要。

为了保证服务质量和用户体验,系统会从各个组件中收集各种监控数据,如指标,日志,调用链等,并手工设置多种告警规则。一旦监控数据违反了告警规则(如cpu利用率超过80%;日志文件中出现fail关键字)就会生成告警。由于大型服务系统包含很多个组件,针对每个组件会生成很多种监控数据,且不同组件和不同系统之间都会相互影响,因此在实际中,故障发生时可能导致短时间内迸发大量的告警,也就是告警风暴。面对海量的告警数据,工程师挨个检查告警来诊断故障是耗时且易错的,所以我们需要一个智能化算法来帮助工程师来应对告警风暴,从而实现快速的故障诊断。

通过对一个大型在线服务系统在三年中发生的告警风暴的历史数据进行分析,我们有以下几个发现:

1.告警风暴的发生非常频繁(平均大约一周一次),给工程师排障带来了很大困扰。而处理一个告警风暴平均需要几个工程师耗费大约1个小时的时间。

2.目前主要通过设置固定阈值来识别告警风暴(比如一分钟内的告警数量超过300认为是发生了告警风暴),但是这种方法不能应对动态的线上环境。

3.在告警风暴中,很多告警是系统常规告警,和故障发生没有关系,其存在不利于工程师对真正故障进行排查。



技术实现要素:

为解决上述技术问题,本发明的一个方面在于,提供一种告警处理方法,包括以下步骤:

根据单位时间内接收到的告警数量和告警阈值,判断是否发生了告警风暴,其中所述告警阈值是自适应更新的;以及,

若检测到产生了所述告警风暴,则提取告警风暴摘要。

可选的,所述根据单位时间内接收到的告警数量和告警阈值,判断是否发生了告警风暴的步骤包括:

判断单位时间内接收到的所述告警数量是否超过所述告警阈值,若所述告警数量超过所述告警阈值,判断发生了所述告警风暴。

可选的,所述告警阈值采用极值理论方法进行自适应更新。

可选的,其特征在于,所述提取告警风暴摘要的步骤包括:

对告警信息进行降噪处理,得到异常告警;

对所述异常告警进行聚类处理,得到异常告警簇,所述异常告警簇可以为一个或者多个;以及,

对每个所述异常告警簇,提取所述告警风暴摘要。

可选的,所述对告警信息进行文本预处理的步骤包括:

将所述告警信息中的变量字符串进行标准化处理;以及,

去掉所述告警信息中的停用词。

可选的,所述对所述告警信息进行降噪处理,得到异常告警的步骤包括:

采用基于学习的异常检测模型,对所述告警信息进行筛选,得到异所述常告警信息。

可选的,所述对所述异常告警进行聚类处理,得到异常告警簇的步骤包括:

计算所述异常告警之间的相似距离;以及

根据所述相似距离对所述异常告警进行聚类,得到所述异常告警簇。

可选的,所述对每个所述异常告警簇,提取所述告警风暴摘要的步骤包括:

计算所述异常告警簇的聚类中心告警,所述聚类中心告警是所述异常告警簇内与其他告警异常告警簇内与其他告警的平均相似距离最小的告警;以及

将所述聚类中心告警作为所述告警风暴摘要。

本发明的另一个方面在于,提供一种告警处理装置,所述装置包括:

告警风暴检测模块,用于根据单位时间内接收到的告警数量和告警阈值,判断是否发生了所述告警风暴,其中所述告警阈值是自适应更新的;以及,

摘要提取模块,用于若检测到产生了所述告警风暴,则提取告警风暴摘要。

可选的,所述根据单位时间内接收到的告警数量和告警阈值,判断是否发生了所述告警风暴包括:

判断单位时间内接收到的所述告警数量是否超过所述告警阈值,若所述告警数量超过所述告警阈值,判断发生了所述告警风暴。

可选的,所述告警阈值采用极值理论方法进行自适应更新。

可选的,所述摘要提取模块包括:

降噪模块,用于对告警信息进行降噪处理,得到异常告警;

聚类模块,用于对所述异常告警进行聚类处理,得到异常告警簇,所述异常告警簇可以为一个或者多个;以及,

代表性告警选择模块,用于对每个所述异常告警簇,提取所述告警风暴摘要。

可选的,所述预处理模块具体用于:

将所述告警信息中的变量字符串进行标准化处理;以及,

去掉所述告警信息中的停用词。

可选的,所述降噪模块具体用于:

采用基于学习的异常检测模型,对所述告警信息进行筛选,得到异所述常告警信息。

可选的,所述聚类模块具体用于:

计算所述异常告警之间的相似距离;以及

根据所述相似距离对所述异常告警进行聚类,得到所述异常告警簇。

可选的,所述代表性告警选择模块具体用于:

计算所述异常告警簇的聚类中心告警,所述聚类中心告警是所述异常告警簇内与其他告警异常告警簇内与其他告警的平均相似距离最小的告警;以及

将所述聚类中心告警作为所述告警风暴摘要。

本发明的另一个方面在于,提供一种电子设备,包括:

至少一个处理器;以及

与所述至少一个处理器耦合连接的存储器;其中,

所述存储器存储有计算机程序,所述计算机程序能够被所述至少一个处理器执行,以实现本发明所述的方法。

本发明的另一个方面在于,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序被执行时,能够实本发明所述的方法。

本发明首创性地将告警处理这一问题聚焦在告警风暴的检测和摘要提取上,旨在帮助工程师在实际运维场景中,更好的应对告警风暴,实现故障的快速发现和诊断。首先,本发明将在线告警风暴检测转换成在线自适应突变点检测的问题,并将极值理论这一方法应用在告警风暴检测问题中,能够准确、动态地检测出告警风暴。其次,本发明设计了一个新颖的告警摘要提取算法,包括基于学习的告警降噪、差异化告警聚类和代表性告警选择三个步骤,能够帮助工程师从海量的告警中挑选出小部分有代表性的告警,从而快速了解告警风暴的问题,定位到根因。

附图说明

图1是本发明实施例中告警处理方法的流程图;

图2是本发明实施例中告警处理方法的流程图;

图3是本发明实施例中采用极值理论方法自适应获取的告警风暴阈值;

图4是本发明实施例中提取告警风暴摘要的步骤流程图;

图5是本发明实施例中提取告警风暴摘要的示意图;

图6是本发明实施例中告警处理装置的结构图;

图7是本发明实施例中摘要提取模块的结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的具体实施例进行详细的阐述。

如图1所示,本发明的技术方案分为告警风暴检测和告警风暴摘要提取两个阶段。在告警风暴检测中,对于在线的实时告警流,采用极值理论(extremelyvaluetheory,evt)的方法来动态地检测告警风暴。当判断发生了告警风暴后,就会触发告警风暴摘要提取。告警风暴摘要提取主要包括三个阶段,分别为:基于学习的告警降噪,基于聚类的告警差异化和代表性告警选择。具体来说,告警降噪是为了过滤掉和告警风暴产生原因不相关的告警;告警差异化是为了通过聚类的技术,根据告警之间的文本相似度和拓扑关联获得告警信息之间的相似性,把海量的告警数据分到不同的簇中;代表性告警选择则用于从每个簇中选择最具有代表性的告警推荐给工程师。通过这种方式,工程师只需要查看几条代表告警就可以了解告警风暴的概貌,从而减少导致告警风暴的故障排查时间。

依据本发明的一个方面,提供一种告警处理方法。

如图2所示,所述方法具体包括以下步骤:

s1:根据单位时间内接收到的告警数量和告警阈值,判断是否发生了告警风暴,其中所述告警阈值是自适应更新的。

在一个实施例中,所述根据单位时间内接收到的告警数量和告警阈值,判断是否发生了告警风暴的步骤包括:判断单位时间内接收到的所述告警数量是否超过所述告警阈值,若所述告警数量超过所述告警阈值,判断发生了所述告警风暴。

实际生产中经常使用固定阈值的方法来检测告警风暴,但是固定阈值不能应对动态环境会导致很多误报和漏报,比如一个新系统上线会导致告警数量增加,阈值也应该要随之进行调整。针对这一问题,我们设计了一种动态的告警风暴检测方法。通过将告警风暴检测问题转化为在线突变点检测问题,我们引入了极值理论来检测告警风暴。极值理论(extremelyvaluetheory,evt)是一种用于检测数据概率分布的偏离的常用统计方法,已经被应用在一些极端事件检测的场景中(如洪水、地震),其基础是一般极端值都是位于数据概率分布的尾部。该理论不需要手动的设置阈值,也不对数据的分布做先验假设。我们采用超阈(peakoverthreshold,pot)模型来拟合数据的分布,模型中的参数通过极大似然估计得到。在具体的系统场景中,采用历史数据中每分钟的告警数量来拟合pot模型,学习到历史数据中告警数量的分布,从而根据这个分布情况来确定一个合理的阈值作为初始阈值。之后将拟合好的pot模型应用于线上检测过程,pot模型会根据线上数据实时的变化来动态更新数据的分布情况,从而自适应地更新阈值。如图3所示,经过学习的pot模型会根据单位时间内接收到的告警数量#alerts分布的变化,自适应地更新告警阈值evt-threshold,当实时告警数量超过这个阈值的就认为发生了告警风暴。

s2:若检测到产生了所述告警风暴,则提取告警风暴摘要。

在一个实施例中,如图4所示,所述步骤s2具体可以包括以下步骤:

s201:对告警信息进行降噪处理,得到异常告警信息;

s202:对所述异常告警信息进行聚类处理,得到异常告警信息簇,所述异常告警信息簇可以为一个或者多个;以及,

s203:对每个所述异常告警信息簇,提取所述告警风暴摘要。

以下参照图5对提取告警风暴摘要的过程进行详细阐述。

一、告警预处理

由于告警信息是半结构化的文本,因此首先需要对告警信息做简单的预处理,以便后续对告警信息内容的进一步分析。预处理步骤主要包括下面两步:

(1)单词标准化:告警信息中往往包含很多变量,需要用常量字符串代替这些变量,比如用“ipaddr”代替各种各样的ip地址。这一步可以减少数据中的很多噪音,使得告警摘要提取过程专注于对告警信息中核心内容的分析。

(2)去除停用词:告警信息中往往包含很多没有意义的停用词,如the,in,is等,这些停用词不包含具体的故障信息,可以从告警信息中过滤掉。

二、告警降噪

通过对告警风暴实际案例的分析我们发现,告警风暴的告警并非都与故障的发生相关,而是存在大量系统本身产生的常规告警(噪音),在故障诊断时,我们希望可以过滤掉这类告警,以免误导工程师排障。我们把告警降噪问题转化为异常检测问题,也就是说,采用异常检测方法,把系统无故障期间产生的告警作为训练集,告警风暴的告警作为测试集,那么告警风暴中与故障无关的告警会被检测为正常(在训练集中出现过),而和故障相关的告警会被检测为异常。

目前有很多成熟的异常检测方法,如one-classsvm,localoutlierfactor,基于聚类的方法等。综合考虑异常检测方法的准确度和运行效率,在一个实施例中,我们采用孤立森林(isolationforest)作为异常检测方法。根据经验,通常情况下异常告警存在某些与正常告警显著不同属性,比如通常发生在晚上的告警突然在白天发生;或者告警发生的频率出现显著增加。基于此,可以从告警数据中提取一些简单的属性(如发生的时间,对应的业务系统和服务器,告警内容)和统计特征(如告警发生的频率),输入到孤立森林模型中进行模型学习。在线检测时,学习后的模型会给每一条告警输出一个异常分数,分数较高的告警就认为是异常告警,即和故障相关的告警,而分数比较低的告警就是常规告警,可以不予考虑。

三、告警聚类

经过告警降噪后,保留下的告警大多数是和故障相关的告警,但是数量仍然非常多。考虑到告警之间的相关性,我们用聚类的方法,把相关的告警聚在一起得到异常告警信息簇。告警聚类主要包括以下两个步骤:

(1)相似性度量

相似性度量是聚类的关键一步。对于n个待聚类的告警,我们需要计算出一个n*n的矩阵用来表示告警信息之间的两两相似度。传统的文本聚类只会考虑文本相似性,但是由于告警数据的特殊性,除了文本关联,还存在告警所在的业务系统和机器之间的拓扑关联。

(1.1)文本相似性。用jaccard距离公式来计算告警信息的文本相似性。告警信息的内容可以表示为一个词袋(bagofwords),对于告警a和告警b,他们的文本距离定义为:

其中,bow()为告警内容对应的分词后的词袋,比如告警a“系统成功率为80%”和告警b“cpu使用率为73%”,对应的bow(a)=[“系统”,“成功率”,“为”,“80%”],bow(b)=[“cpu”,”使用率”,”为”,”73%”],可得a与b的文本距离textual(a,b)=1-1/7=0.86。

(1.2)拓扑关联。实际场景中一般有两种关联,软件拓扑和硬件拓扑。这种拓扑关联分析可以由一个有向图来表示,通常可以从配置管理数据库(configurationmanagementdatabase,cmdb)获得。我们通过图上两个节点的最短路径作为拓扑距离。告警a和告警b的拓扑距离定义为:

其中,pathservice(a,b)是告警a和告警b对应的业务系统在业务拓扑图上的最短路径长度,pathserver(a,b)是告警a和告警b对应的机器在机器拓扑图上的最短路径长度。

(1.3)最终距离。基于上述计算,我们采用加权求和的方法得到两条告警之间的最终距离:

其中所述α为加权因子,可以根据实际需求调整。

(2)聚类

计算出相似距离矩阵之后,我们采用基于密度的聚类算法dbscan进行聚类。

四、代表性告警选择

在告警聚类之后,我们可以得到k异常告警信息簇,每个簇中的告警都是高度关联的。因此对每个簇来说,工程师只需要检查一条最具有代表性的告警就可以了解整个簇的告警模式。我们选择簇的聚类中心告警作为告警摘要,所述聚类中心告警是所述异常告警信息簇内与其他告警的平均相似距离最小的告警,可以通过下面这个公式计算得到:

其中n是当前异常告警信息簇中的告警数量。最终,告警摘要作为代表性告警被推荐给工程师进行手动检查和排障,如果工程师对某个告警摘要感兴趣,也可以深入检查所述告警摘要对应的异常告警信息簇内的其他告警。

依据本发明的另一个方面,提供一种告警处理装置。

如图6所示,所述装置包括:

告警风暴检测模块10,用于根据单位时间内接收到的告警数量和告警阈值,判断是否发生了所述告警风暴,其中所述告警阈值是自适应更新的;以及,

摘要提取模块20,用于若检测到产生了所述告警风暴,则提取告警风暴摘要。

在一个实施例中,如图7所示,所述摘要提取模块20包括:

降噪模块201,用于对告警信息进行降噪处理,得到异常告警;

聚类模块202,用于对所述异常告警进行聚类处理,得到异常告警簇,所述异常告警簇可以为一个或者多个;以及,

代表性告警选择模块203,用于对每个所述异常告警簇,提取所述告警风暴摘要。

依据本发明的另一个方面,提供一种电子设备,包括:

至少一个处理器;以及

与所述至少一个处理器耦合连接的存储器;其中,

所述存储器存储有计算机程序,所述计算机程序能够被所述至少一个处理器执行,以实现本发明所述的方法。

依据本发明的另一个方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序被执行时,能够实现本发明所述的方法。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例节能信号发送/接收的方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

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