一种基于日志的计算机系统故障诊断方法及装置.pdf

上传人:a1 文档编号:6185728 上传时间:2019-05-18 格式:PDF 页数:14 大小:2.22MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310740549.X

申请日:

2013.12.28

公开号:

CN103761173A

公开日:

2014.04.30

当前法律状态:

驳回

有效性:

无权

法律详情:

发明专利申请公布后的驳回IPC(主分类):G06F 11/22申请公布日:20140430|||实质审查的生效IPC(主分类):G06F 11/22申请日:20131228|||公开

IPC分类号:

G06F11/22; G06F11/34

主分类号:

G06F11/22

申请人:

华中科技大学

发明人:

邹德清; 金海; 秦昊; 羌卫中

地址:

430074 湖北省武汉市洪山区珞喻路1037号

优先权:

专利代理机构:

华中科技大学专利中心 42201

代理人:

朱仁玲

PDF下载: PDF下载
内容摘要

本发明公开了一种多主机下的日志管理与故障诊断方法及装置,包括故障日志收集、故障日志分析和故障日志关联分析,故障日志收集用于收集集群内所有硬件和软件的故障日志,并统一存入日志服务器;故障日志分析对故障日志进行过滤,提取日志的模板信息,并对日志按照故障类型进行分类;故障日志关联分析利用日志分析的结果并结合时间窗口进行故障原因分析,把由同一故障引起的相关故障日志聚为一类,并试图找到这类故障的根源。本发明能有效地对系统的运行状况进行分析和辅助管理员处理系统中的故障,提高了故障类型判断的准确度。

权利要求书

权利要求书
1.  一种基于日志的计算机系统故障诊断方法,包括以下步骤:
(S1)故障日志分析:对计算机系统中的日志进行实时分析,利用故障关键词矩阵量化人工学习的故障分类结果,按照不同的故障类型,对每条故障日志确认故障类型;
(S2)故障日志关联:利用故障日志分析的结果并结合时间窗口进行故障原因分析,把由同一故障引起的相关故障日志聚合为一类,找到这类故障的根源。

2.  根据权利要求1所述的故障诊断方法,其中,步骤(S1)包括以下步骤:
(1)日志预处理,包括对重复的日志进行过滤和对每条日志中无意义的词语进行过滤;
(2)提取日志不变量,也即通过过滤掉日志文本中的变量,来提取日志当中的结构信息;
(3)日志模板信息过滤:采取自动聚类方式把内容和格式相似的日志放到一个分类中;
(4)获取故障关键词矩阵,其中故障关键词矩阵是由模板中的单词出现在每种故障类型的概率构成的二维矩阵;
(5)利用故障关键词矩阵对日志进行故障判断。

3.  根据权利要求2所述的故障诊断方法,其中,步骤(1)包括以下子步骤:
(1-1)对在同一进程在某段时间内产生的重复出现的日志进行过滤;
(1-2)对于英文中的虚词,使用英文停词表进行过滤,只保留真正有实义的词。

4.  根据权利要求2所述的故障诊断方法,其中,所述变量指的是在日 志文本当中会发生变化的单词,包括数字、IP地址、内存地址、目录、文件名、程序名、端口。

5.  根据权利要求4所述的故障诊断方法,其中,步骤(2)包括以下子步骤:
(2-1)采用正则表达式去除日志文本中的数字、目录、IP地址、内存地址;
(2-2)采用基于词频统计的方法进一步对日志信息进行筛选,留下日志的模板信息。

6.  根据权利要求5所述的故障诊断方法,步骤(2-2)中,所述基于词频统计的方法采用改进的TF-IDF来计算每个单词ti占整体日志的重要性tfidfi,j=tfi,j×idfi,其中,
tfi,j为词语ti在某一特定设备dj里的重要性:式中ni,j是该词在设备dj中的出现次数,而分母则是在设备dj中所有字词的出现次数之和;
idfi为该词语ti的逆向文件频率,由设备dj产生的总日志数目除以包含该词语之日志的数目,再将得到的商取对数得到。

7.  根据权利要求2所述的故障诊断方法,其中,步骤(4)包括以下子步骤:
(4-1)对样本中的日志进行人工分类,对每一个分类中的日志模板进行调整,修正自动聚类的结果;
(4-2)对人工分类的结果进行学习,建立故障关键词矩阵A:
A=a1,1a1,2...a1,na2,1a2,2...a2,n............am,1am,2...am,n]]>
其中,m表示所有出现在样本日志模板中的不同单词个数,n表示日志 故障类型的数量,ai,j表示第i个单词属于第j种故障分类的概率。

8.  根据权利要求2所述的故障诊断方法,其中,步骤(5)具体为:假设需要判断日志L的故障类型,则对于日志L中的每一个单词查找故障关键词矩阵A中的对应行,计算日志L属于不同故障类型的概率值,若存在一个最大概率值,则将日志L的故障类型判断为最大概率值所对应的故障类型。

9.  根据权利要求1所述的故障诊方法,其中,步骤(S2)包括以下步骤:
(1)通过传统地基于时间的关联性分析对日志进行聚合;
(2)对每个元组内的日志进行人工分析,确定不同故障类型的时间窗口大小;
(3)利用故障关键词矩阵,在矩阵中添加一行,用来存储每种故障类型不同的时间窗口大小;
(4)选择需要进行故障诊断的日志,确认该日志的故障类型后,通过查询故障关键词矩阵找到该故障相应的时间窗口,然后利用时间窗口对日志进行诊断。

10.  一种基于日志的计算机系统故障诊断装置,包括以下模块:
故障日志分析模块,用于对计算机系统中的日志进行实时分析,利用故障关键词矩阵量化人工学习的故障分类结果,按照不同的故障类型,对每条故障日志确认故障类型;
故障日志关联模块,用于利用故障日志分析的结果并结合时间窗口进行故障原因分析,把由同一故障引起的相关故障日志聚合为一类,找到这类故障的根源。

说明书

说明书一种基于日志的计算机系统故障诊断方法及装置
技术领域
本发明属于计算机系统可靠性下的故障分析领域,更具体地,涉及一种基于日志的计算机系统故障诊断方法及装置。
背景技术
随着云计算结构的引入,计算机系统变得越来越复杂,运作在其上的软件也越来越丰富,交互更加频繁,耦合性高,使得系统故障的原因和种类也难以进行分析。为了解决一些关键应用对系统处理能力和容错能力的严苛要求,因此必须对其日常行为进行监视和记录。以便在出现错误后,可以及时对故障进行诊断和定位,找出故障发生的原因,从而修复系统的错误、提高系统的性能,保证类似的故障不会再次发生。
在一个完整的信息系统中,日志系统是一个非常重要的组成部分。日志是计算机系统运行轨迹的真实写照,它被广泛用于系统调试、监控和安全检测中。日志管理和分析是系统管理和入侵检测的基础设施,是评估系统运行状况,检验网络安全策略有效性的必要手段。通过系统日志,不但可以检测并分析系统故障,还可以监测系统状况。优化系统性能,调整系统行为。
在对日志进行分析的时候通常有3个主要的阶段:(1)日志过滤,过滤与故障无关的日志;(2)日志故障分析,从日志当中发现故障的类型,详细了解错误发生的过程;(3)日志关联分析,把相同故障来源的日志分到同一组,并分析故障在不同节点和组件间的传播机制。
现有的基于日志的诊断方法存在着一下几方面的问题:
(1)需要大量的人工干预。由于日志的分类的故障诊断都是以人的判 断为中心的,单纯依靠计算机的自动处理很难得到想要的结果。因此传统的故障诊断系统往往会依赖专家系统,需要通过大量的人工处理为其通过基础数据集,计算机在经过长时间的学习修正之后才会产生比较理想的结果,这浪费了大量系统管理员的时间;
(2)响应速度慢。目前的分析系统通常是基于一套复杂的判定模式,很难实时对系统中的故障进行响应;
(3)精确度低。对于日志进行分类的准确度往往较低,而且缺乏修正误判的算法。
发明内容
针对现有技术的缺陷,本发明的目的在于快速地对计算机系统中产生的日志进行分类,并且只需要较少的人工干预,就可以实现高精度的分类。此外,还可以随时修正分类的结果,方便学习新的分类知识。
为实现上述目的,本发明提出了一种基于日志的计算机系统故障诊断方法,包括以下步骤:
(S1)故障日志分析:对计算机系统中的日志进行实时分析,利用故障关键词矩阵量化人工学习的故障分类结果,按照不同的故障类型,对每条故障日志确认故障类型;
(S2)故障日志关联:利用故障日志分析的结果并结合时间窗口进行故障原因分析,把由同一故障引起的相关故障日志聚合为一类,找到这类故障的根源。
本发明还提出了一种基于日志的计算机系统故障诊断装置,包括以下模块:
故障日志分析模块,用于对计算机系统中的日志进行实时分析,利用故障关键词矩阵量化人工学习的故障分类结果,按照不同的故障类型,对每条故障日志确认故障类型;
故障日志关联模块,用于利用故障日志分析的结果并结合时间窗口进 行故障原因分析,把由同一故障引起的相关故障日志聚合为一类,找到这类故障的根源。
与现有技术相比,本发明的系统具有以下有益效果:
(1)采用了故障关键词矩阵来存储机器学习的结果,可以很方便迅速的对日志进行故障分类,也可以随时修改判断规则和添加新的故障类型。与传统方式相比提高了处理速度,节省了重新学习的时间;
(2)提出了新的日志分类方法,可以准确的对日志按照不同的故障类型进行分类;
(3)采用改进的基于时间的日志关联性分析,利用日志的故障类型来指导关联性分析,提高了分类的准确性,降低了误报率和漏报率;
(4)通过故障关键词矩阵来保存不同故障类型的时间窗口,可以实时的进行修改,提高了对新故障类型的学习能力。
附图说明
图1为本发明实施例的针对多主机环境的基于故障日志的系统故障诊断装置的结构示意图;
图2为本发明实施例的日志故障分类方法的流程图;
图3为本发明实施例的基于时间的故障关联性分析方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明提供了一种适用于大型云平台的系统故障诊断装置。该装置可以搜集整个计算机系统中产生的日志,对日志进行统计和学习,并标注每个日志的故障类型。当有故障发生时,管理员可以点击相应的日志,系统会找到与该日志存在关联的日志,按照故障传播的顺序形成故障树,帮助管理员发现故障诊断故障的根本原因。该装置主要包括三个 组件:
1)故障日志分析模块,对计算机系统中的日志进行实时分析,利用故障关键词矩阵量化人工学习的故障分类结果,按照不同的故障类型,对每条故障日志确认故障类型;
2)故障日志关联模块,利用日志分析的结果并结合时间窗口进行故障原因分析,把由同一故障引起的相关故障日志聚合为一类,并试图找到这类故障的根源。
相应地,本发明实施例的一种基于日志的计算机系统故障诊断方法,包括以下步骤:
(S1)故障日志分析:对计算机系统中的日志进行实时分析,利用故障关键词矩阵量化人工学习的故障分类结果,按照不同的故障类型,对每条故障日志确认故障类型;
(S2)故障日志关联:利用故障日志分析的结果并结合时间窗口进行故障原因分析,把由同一故障引起的相关故障日志聚合为一类,找到这类故障的根源。
如图2所示,本发明实施例的故障日志分析包括以下步骤:
(1)日志预处理
日志预处理包括了两个部分,包括对重复的日志进行过滤和对每条日志中无意义的词语进行过滤。具体包括以下步骤:
(1-1)对在同一进程在某段时间内产生的重复出现的日志进行过滤。
通过对日志的统计可以发现,这种冗余日志产生的时间都是集中在一起的,产生的进程应该都是相同的。所以在进行预处理的时候,过滤同一进程在某段时间内产生的相似日志。具体的时间段根据不同的计算机系统选择不同的阀值。即当检测到某设备产生的日志与上个日志完全一样,并且产生的时间在规定的阀值内,就去掉该日志。如果在时间阀值内出现了不一样的日志或者相同日志超出了时间范围,那么就保留该日志。
在具体应用时,需要对能够合并的时间段选择一个合适的阀值,否则如果时间跨度太大,可能会把不同故障产生的类似日志信息给过滤掉,造成漏报。在本实施例中,由于这里的过滤只是作为预处理,为保证不发生漏报,在判断的时候,可以只把连续出现的完全一样的日志过滤掉,这样过滤的时间阀值就可以设计的比较宽松。
(1-2)对于没有意义的词,使用英文停词表进行过滤,只保留真正有实义的词。
对于英文中的虚词这种没有意义的词,可以使用英文停词表进行过滤,该表包含了英文中的大部分虚词。另外考虑到日志的特殊性,进一步地,还可以过滤大部分的形容词和副词,只保留真正有实义的词。
2)提取日志不变量,也即通过过滤掉日志文本中的变量,来提取日志当中的结构信息。
在对日志进行预处理之后,接下来需要提取日志的模板信息,模板信息是进一步提取日志中和故障相关内容的结果,模板化的日志将用来进行规制的学习,模板化之后,可以减小解空间,使得最后得到的故障关键词矩阵更新精简,另外,模板还会用来匹配系统运行时产生的日志,进行快速分类。
日志中的变量指的是在日志文本当中会发生变化的单词,包括数字、IP地址、内存地址、目录、文件名、程序名、端口等等。
具体而言,提取日志不变量的过程分为两个步骤。
(2-1)采用正则表达式去除日志文本中的数字、目录、IP地址、内存地址。这些是容易去除的部分,其中,被删除的元素采用具有不同意义的符号进行替换。由于在语法上单词存在的前后次序,同时为了区分不同的位置,通过符号替换,更能够反映日志的原始信息,减小提取过程中失真。
(2-2)采用基于词频统计的方法进一步对日志信息进行筛选,留下日志的模板信息。
在本实施例中,所述基于词频统计的方法可以采用改进的TF-IDF计算每个单词占整体日志的重要性,具体过程如下:
这里的词频(term frequency,TF)指的是某一个给定的词语在该设备输出的所有日志中出现的频率。这个数字是对词数(term count)的归一化,以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词数,而不管该词语重要与否。)对于在某一特定设备里的词语ti来说,它的重要性可表示为:
tfi,j=ni,jΣknk,j]]>
以上式子中ni,j是该词在设备dj中的出现次数,而分母则是在设备dj中所有字词的出现次数之和。
逆向文件频率(inverse document frequency,IDF)是一个词语普遍重要性的度量。某一特定词语ti的IDF,可以由该设备dj产生的总日志数目除以包含该词语之日志的数目,再将得到的商取对数得到:
idfi=log|D||{j:ti∈dj}|]]>
其中:
·|D|:该设备产生的总数
·|{j:ti∈dj}|:包含词语ti的日志数目(即ni,j≠0的文件数目)如果该词语不在日志中,就会导致被除数为零,因此一般情况下使用1+|{j:ti∈dj}|,然后:
tfidfi,j=tfi,j×idfi
通过计算TF-IDF可以获得每个单词占整体日志的重要性,之后通过预先设定的阀值,对日志进行筛选。
(3)日志模板信息过滤
在进行人工的分类之前,考虑到模板数量还是比较庞大,本实施例采取了自动聚类的方式对日志进行归类,进一步缩小需要人工判断的空间。
在自动聚类阶段,会把内容和格式相似的日志放到一个分类当中,这样在人工分类的时候只需要对每一类进行判断并进行细微调整就可以了。
自动分类这里采用了DBSCAN算法对日志模板进行自动聚类,该算法最大的好处是可以不用提前设定聚类簇的数量,在进行分类时会根据需要自动的划分簇类。
在选择距离公式时,考虑到日志文本的特殊性,采用了编辑距离来考察两个日志之间的距离。在具体计算的时候,对编辑距离进行了修改:在编辑距离中添加了系数,减小长度对距离计算的影响。定义日志的编辑距离公式(LLD),日志A与日志B之间的距离为:
LLD(A,B)=2×LD(A,B)length(A)+length(B)]]>
其中LD(A,B)是指原始的编辑距离,length()表示日志的长度。
(4)获取故障关键词矩阵
(4-1)对样本中的日志进行人工分类。在这一步,管理员首先把系统自动的标记修改为具有实际意义的标记,然后对每一个分类中的日志模板进行调整,修正自动聚类的结果,保证每一个类型中的日志都是与该类型的标签相关的。
(4-2)对人工分类的结果进行学习,建立故障关键词矩阵。
故障关键词矩阵(矩阵A)是由模板中的单词出现在每种故障类型的概率构成的二维矩阵,如下图所示:
A=a1,1a1,2...a1,na2,1a2,2...a2,n............am,1am,2...am,n]]>
故障关键词矩阵A是一个m×n的矩阵,m表示所有出现在样本日志模板中的不同单词个数,n表示日志故障类型的数量,ai,j表示第i个单词属于第j种故障分类的概率是ai,j。(注:这里的概率只是一个相对的概率系数,不是真实的概率。)
以下详述概率ai,w的求解过程:
ai,w用来判断单词是否属于某种类型,它的值表示的是每个单词在特定故障类型中出现的频率,那么可以认为第i个单词在故障类型w中出现的概率为类型w中单词i的个数与类型w中单词的总个数之比,推出一个基本公式为:
P(i,w)=count(i,w)Σj=1mcount(j,w)]]>
其中P(i,w)表示第i个单词在故障类型w中出现的概率,count(i,w)表示单词i在故障类型w中的出现次数。
之后,对上式进行修正,添加一个比例系数:
K(i,w)=-log(sum(i)-count(i,w)sum(i))+1]]>
其中sum(i)表示单词i在模板库的所有故障类型中出现的次数之和,即:
sum(i)=Σt=1ncount(i,t)]]>
由此,可以得出概率系数ai,w的计算公式为单词的重要程度与出现频率之积,即:
ai,w=P(i,w)×K(i,w)
导入上面两个式子可得:
ai,w=count(i,w)Σj=1mcount(j,w)[-log(1-count(i,w)sum(i))+1]]]>
在此基础上,下面描述利用故障关键词矩阵进行故障类型学习的详细过程:
在获得人工分类的结果之后,根据公式,按照列来计算矩阵A。以求解第w列为例。
a)程序会统计模板库中,属于类型w的单词的总个数,设为T(w),即:
T(w)=Σj=1mcount(j,w)]]>
在本实施例中,为了方便对故障关键词矩阵进行修改和更新,额外添加一项用来保存T(w),减少重复计算的次数。
b)对于在类型w中的每一个单词i,都会计算sum(i),同T(w)类似,为了减少计算次数,也会增加额外的空间用来存储sum(i)。因此,这里对故障关键词矩阵进行了扩充,增加了一行和一列用来保存统计信息,最终的矩阵A为:
A=a1,1a1,2...a1,nsum(1)a2,1a2,2...a2,nsum(2)...............am,1am,2...am,nsum(m)T(1)T(2)...T(n)]]>
c)当计算具体的ai,w时,根据公式,需要计算count(i,w)。考虑到count(i,w)会随着故障关键词矩阵的更新发生变化,因此在实际存储时,矩阵A当中会直接保存count(i,w),在需要使用的时候会计算ai,w,由于用来计算ai,w的变量都已经保存在矩阵A当中,因此这样计算并不会给系统添加额外的开销。
另外,当已经得到故障关键词矩阵后,如果要在系统运行时对分类进行修改,那么就要调整故障关键词矩阵,调整分为以下的三种情况:
a)当需要修改某个模板所属的分类时,系统会扫描该模板中的所有单词,并相应的对矩阵进行修改。
假设模板中存在单词i,在该模板中出现n次,原来该模板属于分类w,现在要改为分类u。这时需要进行如下改动:

b)当需要添加新的模板时,系统会直接修改故障关键词矩阵,具体的方法与人工学习与建立矩阵的方法类似。
c)当需要添加新的模板至新的分类时,系统会添加新的一列存储新的分类(设为u分类),然后对于模板中的每一个单词i,更新sum(i),然后计算T(u),再计算模板中每一个单词的count(i,w)值。
5)故障日志类型判断
有了故障关键词矩阵,就可以很容易的对系统当中的日志进行故障判断。具体的过程如下:
假设需要判断日志L的故障类型,对于日志L中的每一个单词查找故障关键词矩阵A中的对应行,计算日志L属于不同故障类型的概率值,若存在一个最大概率值,则将日志L的故障类型判断为最大概率值所对应的故障类型。下面给出具体计算过程的伪代码:


进一步地,代码中最后的三行用来判断L是否有属于其他类型的可能性。当存在其他的概率值与最大概率值之间的差值小于预定阈值的时候,表明通过当前的故障关键词矩阵无法准确地判断L所属的故障类型。因此必须告诉管理员,让管理在最可能的几种情况中进行选择。系统记录管理员的判断,并利用L的模板和判断结果,按照步骤4中所描述的修正故障关键词矩阵,之后出现类似的故障日志就能够准确地判断出故障类型。
另外,本实施例中,利用故障关联性分析把由同一个故障引起的所有故障日志都聚到一起,形成一棵故障传播树,并按照发生的时间先后顺序排序,为管理员判断故障的根本原因提供帮助。
如图3所示,本发明实施例的改进的基于时间的故障关联性分析方法,包括以下步骤:
(1)通过传统的基于时间的关联性分析对日志进行聚合。这种方法是基于同源的故障都会发生在相近的时间的段内这种想法来实现的。具体的方法是设立一个时间窗口,当故障发生时,按照时间先后顺序扫描每一条日志,如果日志落在同一个时间窗口之内,那么就认为这些日志都属于由同一个故障源而产生的故障日志,归为一类(这里称为“元组”)。
(2)对每个元组内的日志进行人工分析,确定不同故障类型的时间窗口大小。
(3)利用故障关键词矩阵,在矩阵中添加一行,用来存储每种故障类型不同的时间窗口大小。
(4)选择需要进行故障诊断的日志,确认该日志的故障类型后,通过查询故障关键词矩阵找到该故障相应的时间窗口,然后利用时间窗口对日志进行诊断。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

一种基于日志的计算机系统故障诊断方法及装置.pdf_第1页
第1页 / 共14页
一种基于日志的计算机系统故障诊断方法及装置.pdf_第2页
第2页 / 共14页
一种基于日志的计算机系统故障诊断方法及装置.pdf_第3页
第3页 / 共14页
点击查看更多>>
资源描述

《一种基于日志的计算机系统故障诊断方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种基于日志的计算机系统故障诊断方法及装置.pdf(14页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103761173 A (43)申请公布日 2014.04.30 CN 103761173 A (21)申请号 201310740549.X (22)申请日 2013.12.28 G06F 11/22(2006.01) G06F 11/34(2006.01) (71)申请人 华中科技大学 地址 430074 湖北省武汉市洪山区珞喻路 1037 号 (72)发明人 邹德清 金海 秦昊 羌卫中 (74)专利代理机构 华中科技大学专利中心 42201 代理人 朱仁玲 (54) 发明名称 一种基于日志的计算机系统故障诊断方法及 装置 (57) 摘要 本发明公开了一种多主机下的。

2、日志管理与故 障诊断方法及装置, 包括故障日志收集、 故障日志 分析和故障日志关联分析, 故障日志收集用于收 集集群内所有硬件和软件的故障日志, 并统一存 入日志服务器 ; 故障日志分析对故障日志进行过 滤, 提取日志的模板信息, 并对日志按照故障类型 进行分类 ; 故障日志关联分析利用日志分析的结 果并结合时间窗口进行故障原因分析, 把由同一 故障引起的相关故障日志聚为一类, 并试图找到 这类故障的根源。本发明能有效地对系统的运行 状况进行分析和辅助管理员处理系统中的故障, 提高了故障类型判断的准确度。 (51)Int.Cl. 权利要求书 2 页 说明书 8 页 附图 3 页 (19)中华人。

3、民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书8页 附图3页 (10)申请公布号 CN 103761173 A CN 103761173 A 1/2 页 2 1. 一种基于日志的计算机系统故障诊断方法, 包括以下步骤 : (S1) 故障日志分析 : 对计算机系统中的日志进行实时分析, 利用故障关键词矩阵量化 人工学习的故障分类结果, 按照不同的故障类型, 对每条故障日志确认故障类型 ; (S2) 故障日志关联 : 利用故障日志分析的结果并结合时间窗口进行故障原因分析, 把 由同一故障引起的相关故障日志聚合为一类, 找到这类故障的根源。 2. 根据权利要求 1 所述的故障诊。

4、断方法, 其中, 步骤 (S1) 包括以下步骤 : (1) 日志预处理, 包括对重复的日志进行过滤和对每条日志中无意义的词语进行过 滤 ; (2) 提取日志不变量, 也即通过过滤掉日志文本中的变量, 来提取日志当中的结构信 息 ; (3) 日志模板信息过滤 : 采取自动聚类方式把内容和格式相似的日志放到一个分类 中 ; (4) 获取故障关键词矩阵, 其中故障关键词矩阵是由模板中的单词出现在每种故障类 型的概率构成的二维矩阵 ; (5) 利用故障关键词矩阵对日志进行故障判断。 3. 根据权利要求 2 所述的故障诊断方法, 其中, 步骤 (1) 包括以下子步骤 : (1-1) 对在同一进程在某段时。

5、间内产生的重复出现的日志进行过滤 ; (1-2) 对于英文中的虚词, 使用英文停词表进行过滤, 只保留真正有实义的词。 4. 根据权利要求 2 所述的故障诊断方法, 其中, 所述变量指的是在日志文本当中会发 生变化的单词, 包括数字、 IP 地址、 内存地址、 目录、 文件名、 程序名、 端口。 5. 根据权利要求 4 所述的故障诊断方法, 其中, 步骤 (2) 包括以下子步骤 : (2-1) 采用正则表达式去除日志文本中的数字、 目录、 IP 地址、 内存地址 ; (2-2) 采用基于词频统计的方法进一步对日志信息进行筛选, 留下日志的模板信息。 6. 根据权利要求 5 所述的故障诊断方法,。

6、 步骤 (2-2) 中, 所述基于词频统计的方法采用 改进的 TF-IDF 来计算每个单词 ti占整体日志的重要性 tfidfi, j tfi, jidfi, 其中, tfi, j为词语 ti在某一特定设备 dj里的重要性 :式中 ni, j是该词在设备 dj中的出现次数, 而分母则是在设备 dj中所有字词的出现次数之和 ; idfi为该词语ti的逆向文件频率, 由设备dj产生的总日志数目除以包含该词语之日志 的数目, 再将得到的商取对数得到。 7. 根据权利要求 2 所述的故障诊断方法, 其中, 步骤 (4) 包括以下子步骤 : (4-1) 对样本中的日志进行人工分类, 对每一个分类中的日志。

7、模板进行调整, 修正自动 聚类的结果 ; (4-2) 对人工分类的结果进行学习, 建立故障关键词矩阵 A : 其中, m 表示所有出现在样本日志模板中的不同单词个数, n 表示日志故障类型的数 权 利 要 求 书 CN 103761173 A 2 2/2 页 3 量, ai, j表示第 i 个单词属于第 j 种故障分类的概率。 8. 根据权利要求 2 所述的故障诊断方法, 其中, 步骤 (5) 具体为 : 假设需要判断日志 L 的故障类型, 则对于日志 L 中的每一个单词查找故障关键词矩阵 A 中的对应行, 计算日志 L 属于不同故障类型的概率值, 若存在一个最大概率值, 则将日志 L 的故障。

8、类型判断为最大 概率值所对应的故障类型。 9. 根据权利要求 1 所述的故障诊方法, 其中, 步骤 (S2) 包括以下步骤 : (1) 通过传统地基于时间的关联性分析对日志进行聚合 ; (2) 对每个元组内的日志进行人工分析, 确定不同故障类型的时间窗口大小 ; (3) 利用故障关键词矩阵, 在矩阵中添加一行, 用来存储每种故障类型不同的时间窗口 大小 ; (4) 选择需要进行故障诊断的日志, 确认该日志的故障类型后, 通过查询故障关键词矩 阵找到该故障相应的时间窗口, 然后利用时间窗口对日志进行诊断。 10. 一种基于日志的计算机系统故障诊断装置, 包括以下模块 : 故障日志分析模块, 用于。

9、对计算机系统中的日志进行实时分析, 利用故障关键词矩阵 量化人工学习的故障分类结果, 按照不同的故障类型, 对每条故障日志确认故障类型 ; 故障日志关联模块, 用于利用故障日志分析的结果并结合时间窗口进行故障原因分 析, 把由同一故障引起的相关故障日志聚合为一类, 找到这类故障的根源。 权 利 要 求 书 CN 103761173 A 3 1/8 页 4 一种基于日志的计算机系统故障诊断方法及装置 技术领域 0001 本发明属于计算机系统可靠性下的故障分析领域, 更具体地, 涉及一种基于日志 的计算机系统故障诊断方法及装置。 背景技术 0002 随着云计算结构的引入, 计算机系统变得越来越复杂。

10、, 运作在其上的软件也越来 越丰富, 交互更加频繁, 耦合性高, 使得系统故障的原因和种类也难以进行分析。为了解决 一些关键应用对系统处理能力和容错能力的严苛要求, 因此必须对其日常行为进行监视和 记录。以便在出现错误后, 可以及时对故障进行诊断和定位, 找出故障发生的原因, 从而修 复系统的错误、 提高系统的性能, 保证类似的故障不会再次发生。 0003 在一个完整的信息系统中, 日志系统是一个非常重要的组成部分。日志是计算机 系统运行轨迹的真实写照, 它被广泛用于系统调试、 监控和安全检测中。 日志管理和分析是 系统管理和入侵检测的基础设施, 是评估系统运行状况, 检验网络安全策略有效性的。

11、必要 手段。 通过系统日志, 不但可以检测并分析系统故障, 还可以监测系统状况。 优化系统性能, 调整系统行为。 0004 在对日志进行分析的时候通常有 3 个主要的阶段 :(1) 日志过滤, 过滤与故障无关 的日志 ;(2) 日志故障分析, 从日志当中发现故障的类型, 详细了解错误发生的过程 ;(3) 日 志关联分析, 把相同故障来源的日志分到同一组 , 并分析故障在不同节点和组件间的传播 机制。 0005 现有的基于日志的诊断方法存在着一下几方面的问题 : 0006 (1) 需要大量的人工干预。 由于日志的分类的故障诊断都是以人的判断为中心的, 单纯依靠计算机的自动处理很难得到想要的结果。。

12、 因此传统的故障诊断系统往往会依赖专 家系统, 需要通过大量的人工处理为其通过基础数据集, 计算机在经过长时间的学习修正 之后才会产生比较理想的结果, 这浪费了大量系统管理员的时间 ; 0007 (2) 响应速度慢。 目前的分析系统通常是基于一套复杂的判定模式, 很难实时对系 统中的故障进行响应 ; 0008 (3) 精确度低。对于日志进行分类的准确度往往较低, 而且缺乏修正误判的算法。 发明内容 0009 针对现有技术的缺陷, 本发明的目的在于快速地对计算机系统中产生的日志进行 分类, 并且只需要较少的人工干预, 就可以实现高精度的分类。此外, 还可以随时修正分类 的结果, 方便学习新的分类。

13、知识。 0010 为实现上述目的, 本发明提出了一种基于日志的计算机系统故障诊断方法, 包括 以下步骤 : 0011 (S1) 故障日志分析 : 对计算机系统中的日志进行实时分析, 利用故障关键词矩阵 量化人工学习的故障分类结果, 按照不同的故障类型, 对每条故障日志确认故障类型 ; 说 明 书 CN 103761173 A 4 2/8 页 5 0012 (S2) 故障日志关联 : 利用故障日志分析的结果并结合时间窗口进行故障原因分 析, 把由同一故障引起的相关故障日志聚合为一类, 找到这类故障的根源。 0013 本发明还提出了一种基于日志的计算机系统故障诊断装置, 包括以下模块 : 0014。

14、 故障日志分析模块, 用于对计算机系统中的日志进行实时分析, 利用故障关键词 矩阵量化人工学习的故障分类结果, 按照不同的故障类型, 对每条故障日志确认故障类 型 ; 0015 故障日志关联模块, 用于利用故障日志分析的结果并结合时间窗口进行故障原因 分析, 把由同一故障引起的相关故障日志聚合为一类, 找到这类故障的根源。 0016 与现有技术相比, 本发明的系统具有以下有益效果 : 0017 (1) 采用了故障关键词矩阵来存储机器学习的结果, 可以很方便迅速的对日志进 行故障分类, 也可以随时修改判断规则和添加新的故障类型。与传统方式相比提高了处理 速度, 节省了重新学习的时间 ; 0018。

15、 (2) 提出了新的日志分类方法, 可以准确的对日志按照不同的故障类型进行分 类 ; 0019 (3) 采用改进的基于时间的日志关联性分析, 利用日志的故障类型来指导关联性 分析, 提高了分类的准确性, 降低了误报率和漏报率 ; 0020 (4) 通过故障关键词矩阵来保存不同故障类型的时间窗口, 可以实时的进行修改, 提高了对新故障类型的学习能力。 附图说明 0021 图 1 为本发明实施例的针对多主机环境的基于故障日志的系统故障诊断装置的 结构示意图 ; 0022 图 2 为本发明实施例的日志故障分类方法的流程图 ; 0023 图 3 为本发明实施例的基于时间的故障关联性分析方法的流程图。 。

16、具体实施方式 0024 为了使本发明的目的、 技术方案及优点更加清楚明白, 以下结合附图及实施例, 对 本发明进行进一步详细说明。 应当理解, 此处所描述的具体实施例仅用以解释本发明, 并不 用于限定本发明。 0025 如图 1 所示, 本发明提供了一种适用于大型云平台的系统故障诊断装置。该装置 可以搜集整个计算机系统中产生的日志, 对日志进行统计和学习, 并标注每个日志的故障 类型。当有故障发生时, 管理员可以点击相应的日志, 系统会找到与该日志存在关联的日 志, 按照故障传播的顺序形成故障树, 帮助管理员发现故障诊断故障的根本原因。 该装置主 要包括三个组件 : 0026 1) 故障日志分。

17、析模块, 对计算机系统中的日志进行实时分析, 利用故障关键词矩 阵量化人工学习的故障分类结果, 按照不同的故障类型, 对每条故障日志确认故障类型 ; 0027 2) 故障日志关联模块, 利用日志分析的结果并结合时间窗口进行故障原因分析, 把由同一故障引起的相关故障日志聚合为一类, 并试图找到这类故障的根源。 0028 相应地, 本发明实施例的一种基于日志的计算机系统故障诊断方法, 包括以下步 说 明 书 CN 103761173 A 5 3/8 页 6 骤 : 0029 (S1) 故障日志分析 : 对计算机系统中的日志进行实时分析, 利用故障关键词矩阵 量化人工学习的故障分类结果, 按照不同的。

18、故障类型, 对每条故障日志确认故障类型 ; 0030 (S2) 故障日志关联 : 利用故障日志分析的结果并结合时间窗口进行故障原因分 析, 把由同一故障引起的相关故障日志聚合为一类, 找到这类故障的根源。 0031 如图 2 所示, 本发明实施例的故障日志分析包括以下步骤 : 0032 (1) 日志预处理 0033 日志预处理包括了两个部分, 包括对重复的日志进行过滤和对每条日志中无意义 的词语进行过滤。具体包括以下步骤 : 0034 (1-1) 对在同一进程在某段时间内产生的重复出现的日志进行过滤。 0035 通过对日志的统计可以发现, 这种冗余日志产生的时间都是集中在一起的, 产生 的进程。

19、应该都是相同的。所以在进行预处理的时候, 过滤同一进程在某段时间内产生的相 似日志。具体的时间段根据不同的计算机系统选择不同的阀值。即当检测到某设备产生的 日志与上个日志完全一样, 并且产生的时间在规定的阀值内, 就去掉该日志。 如果在时间阀 值内出现了不一样的日志或者相同日志超出了时间范围, 那么就保留该日志。 0036 在具体应用时, 需要对能够合并的时间段选择一个合适的阀值, 否则如果时间跨 度太大, 可能会把不同故障产生的类似日志信息给过滤掉, 造成漏报。在本实施例中, 由于 这里的过滤只是作为预处理, 为保证不发生漏报, 在判断的时候, 可以只把连续出现的完全 一样的日志过滤掉, 这。

20、样过滤的时间阀值就可以设计的比较宽松。 0037 (1-2) 对于没有意义的词, 使用英文停词表进行过滤, 只保留真正有实义的词。 0038 对于英文中的虚词这种没有意义的词, 可以使用英文停词表进行过滤, 该表包含 了英文中的大部分虚词。 另外考虑到日志的特殊性, 进一步地, 还可以过滤大部分的形容词 和副词, 只保留真正有实义的词。 0039 2) 提取日志不变量, 也即通过过滤掉日志文本中的变量, 来提取日志当中的结构 信息。 0040 在对日志进行预处理之后, 接下来需要提取日志的模板信息, 模板信息是进一步 提取日志中和故障相关内容的结果, 模板化的日志将用来进行规制的学习, 模板化。

21、之后, 可 以减小解空间, 使得最后得到的故障关键词矩阵更新精简, 另外, 模板还会用来匹配系统运 行时产生的日志, 进行快速分类。 0041 日志中的变量指的是在日志文本当中会发生变化的单词, 包括数字、 IP 地址、 内存 地址、 目录、 文件名、 程序名、 端口等等。 0042 具体而言, 提取日志不变量的过程分为两个步骤。 0043 (2-1) 采用正则表达式去除日志文本中的数字、 目录、 IP 地址、 内存地址。这些是 容易去除的部分, 其中, 被删除的元素采用具有不同意义的符号进行替换。由于在语法上 单词存在的前后次序, 同时为了区分不同的位置, 通过符号替换, 更能够反映日志的原。

22、始信 息, 减小提取过程中失真。 0044 (2-2) 采用基于词频统计的方法进一步对日志信息进行筛选, 留下日志的模板信 息。 0045 在本实施例中, 所述基于词频统计的方法可以采用改进的 TF-IDF 计算每个单词 说 明 书 CN 103761173 A 6 4/8 页 7 占整体日志的重要性, 具体过程如下 : 0046 这里的词频 (term frequency, TF) 指的是某一个给定的词语在该设备输出的所有 日志中出现的频率。这个数字是对词数 (term count) 的归一化, 以防止它偏向长的文件。 (同一个词语在长文件里可能会比短文件有更高的词数, 而不管该词语重要与否。

23、。 ) 对于在 某一特定设备里的词语 ti来说, 它的重要性可表示为 : 0047 0048 以上式子中 ni, j是该词在设备 dj中的出现次数, 而分母则是在设备 dj中所有字词 的出现次数之和。 0049 逆向文件频率 (inverse document frequency, IDF) 是一个词语普遍重要性的度 量。某一特定词语 ti的 IDF, 可以由该设备 dj产生的总日志数目除以包含该词语之日志的 数目, 再将得到的商取对数得到 : 0050 0051 其中 : 0052 |D| : 该设备产生的总数 0053 |j : ti dj| : 包含词语 ti的日志数目 (即 ni, j。

24、 0 的文件数目) 如果该词语不 在日志中, 就会导致被除数为零, 因此一般情况下使用 1+|j : ti dj|, 然后 : 0054 tfidfi, j tfi, jidfi 0055 通过计算 TF-IDF 可以获得每个单词占整体日志的重要性, 之后通过预先设定的 阀值, 对日志进行筛选。 0056 (3) 日志模板信息过滤 0057 在进行人工的分类之前, 考虑到模板数量还是比较庞大, 本实施例采取了自动聚 类的方式对日志进行归类, 进一步缩小需要人工判断的空间。 0058 在自动聚类阶段, 会把内容和格式相似的日志放到一个分类当中, 这样在人工分 类的时候只需要对每一类进行判断并进行。

25、细微调整就可以了。 0059 自动分类这里采用了 DBSCAN 算法对日志模板进行自动聚类, 该算法最大的好处 是可以不用提前设定聚类簇的数量, 在进行分类时会根据需要自动的划分簇类。 0060 在选择距离公式时, 考虑到日志文本的特殊性, 采用了编辑距离来考察两个日志 之间的距离。在具体计算的时候, 对编辑距离进行了修改 : 在编辑距离中添加了系数, 减小 长度对距离计算的影响。定义日志的编辑距离公式 (LLD) , 日志 A 与日志 B 之间的距离为 : 0061 0062 其中 LD(A,B) 是指原始的编辑距离, length() 表示日志的长度。 0063 (4) 获取故障关键词矩阵。

26、 0064 (4-1) 对样本中的日志进行人工分类。 在这一步, 管理员首先把系统自动的标记修 改为具有实际意义的标记, 然后对每一个分类中的日志模板进行调整, 修正自动聚类的结 果, 保证每一个类型中的日志都是与该类型的标签相关的。 说 明 书 CN 103761173 A 7 5/8 页 8 0065 (4-2) 对人工分类的结果进行学习, 建立故障关键词矩阵。 0066 故障关键词矩阵 (矩阵 A) 是由模板中的单词出现在每种故障类型的概率构成的二 维矩阵, 如下图所示 : 0067 0068 故障关键词矩阵 A 是一个 mn 的矩阵, m 表示所有出现在样本日志模板中的不同 单词个数,。

27、 n 表示日志故障类型的数量, ai, j表示第 i 个单词属于第 j 种故障分类的概率是 ai, j。 (注 : 这里的概率只是一个相对的概率系数, 不是真实的概率。 ) 0069 以下详述概率 ai, w的求解过程 : 0070 ai, w用来判断单词是否属于某种类型, 它的值表示的是每个单词在特定故障类型 中出现的频率, 那么可以认为第 i 个单词在故障类型 w 中出现的概率为类型 w 中单词 i 的 个数与类型 w 中单词的总个数之比, 推出一个基本公式为 : 0071 0072 其中 P(i,w) 表示第 i 个单词在故障类型 w 中出现的概率, count(i,w) 表示单词 i 。

28、在故障类型 w 中的出现次数。 0073 之后, 对上式进行修正, 添加一个比例系数 : 0074 0075 其中 sum(i) 表示单词 i 在模板库的所有故障类型中出现的次数之和, 即 : 0076 0077 由此, 可以得出概率系数 ai, w的计算公式为单词的重要程度与出现频率之积, 即 : 0078 ai, w P(i, w)K(i, w) 0079 导入上面两个式子可得 : 0080 0081 在此基础上, 下面描述利用故障关键词矩阵进行故障类型学习的详细过程 : 0082 在获得人工分类的结果之后, 根据公式, 按照列来计算矩阵A。 以求解第w列为例。 0083 a) 程序会统计。

29、模板库中, 属于类型 w 的单词的总个数, 设为 T(w), 即 : 0084 0085 在本实施例中, 为了方便对故障关键词矩阵进行修改和更新, 额外添加一项用来 保存 T(w), 减少重复计算的次数。 说 明 书 CN 103761173 A 8 6/8 页 9 0086 b) 对于在类型 w 中的每一个单词 i, 都会计算 sum(i), 同 T(w) 类似, 为了减少计算 次数, 也会增加额外的空间用来存储 sum(i)。因此, 这里对故障关键词矩阵进行了扩充, 增 加了一行和一列用来保存统计信息, 最终的矩阵 A 为 : 0087 0088 c)当计算具体的 ai, w时, 根据公式。

30、, 需要计算 count(i,w)。考虑到 count(i,w) 会随着故障关键词矩阵的更新发生变化, 因此在实际存储时, 矩阵 A 当中会直接保存 count(i,w), 在需要使用的时候会计算 ai, w, 由于用来计算 ai, w的变量都已经保存在矩阵 A 当中, 因此这样计算并不会给系统添加额外的开销。 0089 另外, 当已经得到故障关键词矩阵后, 如果要在系统运行时对分类进行修改, 那么 就要调整故障关键词矩阵, 调整分为以下的三种情况 : 0090 a) 当需要修改某个模板所属的分类时, 系统会扫描该模板中的所有单词, 并相应 的对矩阵进行修改。 0091 假设模板中存在单词i,。

31、 在该模板中出现n次, 原来该模板属于分类w, 现在要改为 分类 u。这时需要进行如下改动 : 0092 0093 b) 当需要添加新的模板时, 系统会直接修改故障关键词矩阵, 具体的方法与人工 学习与建立矩阵的方法类似。 0094 c) 当需要添加新的模板至新的分类时, 系统会添加新的一列存储新的分类 (设为 u 分类) , 然后对于模板中的每一个单词 i, 更新 sum(i), 然后计算 T(u), 再计算模板中每一个 单词的 count(i,w) 值。 0095 5) 故障日志类型判断 0096 有了故障关键词矩阵, 就可以很容易的对系统当中的日志进行故障判断。具体的 过程如下 : 00。

32、97 假设需要判断日志 L 的故障类型, 对于日志 L 中的每一个单词查找故障关键词矩 阵 A 中的对应行, 计算日志 L 属于不同故障类型的概率值, 若存在一个最大概率值, 则将日 志 L 的故障类型判断为最大概率值所对应的故障类型。下面给出具体计算过程的伪代码 : 0098 说 明 书 CN 103761173 A 9 7/8 页 10 0099 0100 进一步地, 代码中最后的三行用来判断 L 是否有属于其他类型的可能性。当存在 其他的概率值与最大概率值之间的差值小于预定阈值的时候, 表明通过当前的故障关键词 矩阵无法准确地判断 L 所属的故障类型。因此必须告诉管理员, 让管理在最可能。

33、的几种情 况中进行选择。系统记录管理员的判断, 并利用 L 的模板和判断结果, 按照步骤 4 中所描述 的修正故障关键词矩阵, 之后出现类似的故障日志就能够准确地判断出故障类型。 0101 另外, 本实施例中, 利用故障关联性分析把由同一个故障引起的所有故障日志都 聚到一起, 形成一棵故障传播树, 并按照发生的时间先后顺序排序, 为管理员判断故障的根 本原因提供帮助。 0102 如图 3 所示, 本发明实施例的改进的基于时间的故障关联性分析方法, 包括以下 步骤 : 0103 (1) 通过传统的基于时间的关联性分析对日志进行聚合。这种方法是基于同源的 说 明 书 CN 103761173 A 。

34、10 8/8 页 11 故障都会发生在相近的时间的段内这种想法来实现的。具体的方法是设立一个时间窗口, 当故障发生时, 按照时间先后顺序扫描每一条日志, 如果日志落在同一个时间窗口之内, 那么就认为这些日志都属于由同一个故障源而产生的故障日志, 归为一类 (这里称为 “元 组” ) 。 0104 (2) 对每个元组内的日志进行人工分析, 确定不同故障类型的时间窗口大小。 0105 (3) 利用故障关键词矩阵, 在矩阵中添加一行, 用来存储每种故障类型不同的时间 窗口大小。 0106 (4) 选择需要进行故障诊断的日志, 确认该日志的故障类型后, 通过查询故障关键 词矩阵找到该故障相应的时间窗口, 然后利用时间窗口对日志进行诊断。 0107 本领域的技术人员容易理解, 以上所述仅为本发明的较佳实施例而已, 并不用以 限制本发明, 凡在本发明的精神和原则之内所作的任何修改、 等同替换和改进等, 均应包含 在本发明的保护范围之内。 说 明 书 CN 103761173 A 11 1/3 页 12 图 1 说 明 书 附 图 CN 103761173 A 12 2/3 页 13 图 2 说 明 书 附 图 CN 103761173 A 13 3/3 页 14 图 3 说 明 书 附 图 CN 103761173 A 14 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1