检测日志序列异常的方法、装置及计算机存储介质
技术领域
本发明涉及数据挖掘
技术领域
,特别是涉及一种检测日志序列异常的方法、装置及计算机存储介质。背景技术
现代系统在运行时通常会生成大量的系统日志,以文本的形式记录系统的运行信息,并映射了系统在不同关键点的重要活动状态。日志异常检测有助于异常定位和原因分析,从而减少错误时间,保证系统正常运行。日志按执行时间顺序排列,形成日志序列。异常日志序列可能不包含异常日志,因为可能存在所有单个日志都正常的情况,但日志序列的异常执行顺序或不完整的执行模式会导致异常。因此,日志具有上下文,我们需要从日志序列的角度来检测日志异常,而不是单个的日志。日志序列异常一般包括三种,执行顺序异常、操作异常以及不完整异常。目前,日志序列异常检测方法大致可分为三类:基于事件计数向量的方法(如逻辑回归、支持向量机、主成分分析、不变量挖掘、日志聚类、LSTM-AE等)、基于日志键序列的方法(如Deeplog,logkey2vec等)和基于日志语义的方法(例如LogAnomaly,LogRobust等),其中利用基于日志语义的方法对日志数据进行异常检测是目前的研究热点。但是这些现有方法存在以下三个问题。
(1)现有方法都需要使用日志解析器,将非结构化日志数据转换为结构化日志模板或日志键。但是,由于不同系统中日志格式的多样性,日志解析器并不适合所有日志类型。此外,日志解析器的健壮性和准确性会影响异常检测的性能。更糟糕的是,日志解析器的使用会导致文本语义信息的丢失。
(2)基于事件计数向量的方法不考虑日志之间的执行顺序,而基于日志键序列的方法只考虑下一个日志是否适合发生,忽略了日志序列的完整性。这两种方法既不了解日志序列在执行什么,也不同时检测到上述三种异常。
(3)现有的基于日志语义的方法简单地采用词嵌入技术将词映射到词向量中,然后将这些向量相加作为日志的语义表示。由于日志是由单词组成的,所以单词的语义和上下文决定了日志的语义。但是,同一个词在不同的日志下会表达不同的意思,词的重要程度会影响日志的语义表达。现有的基于日志语义的方法没有考虑词序和重要度对日志语义的影响。
发明内容
本发明针对上述问题,提供了一种检测日志序列异常的方法、装置及计算机存储介质。
本发明的第一方面,提供了一种检测日志序列异常的方法,包括:
从数据源中收集原始的日志序列数据;
根据所述日志序列数据中日志序列的层次结构依次提取每一层的语义信息,生成每一层固定维度的语义向量;
根据所述日志序列的语义向量利用SoftMax函数计算所述日志序列的概率分布,选择最大条件概率对应的结果作为输出类别。
进一步的,所述根据所述日志序列数据中日志序列的层次结构依次提取每一层的语义信息,生成每一层固定维度的语义向量,具体包括:
将所述日志序列的层次结构根据词、日志、日志序列分别对应为词层、日志层以及日志序列层;
所述词层根据词性和词频的重要度将所述日志中的每个单词表示为词语义向量WordVec,所述日志层根据所述日志每个单词的语义向量WordVec生成日志语义向量LogVec,所述日志序列层根据所述日志序列每个日志语义向量LogVec生成日志序列语义向量LogSeqVec。
进一步的,所述词层根据词性和词频的重要度将所述日志中的每个单词表示为语义向量WordVec,具体包括:
日志序列预处理,包括对所述日志序列进行分词和无义词去除,所述分词是将所述原始的日志序列中每个日志分割成一个个的单词或令牌,所述无义词去除是在经过所述分词后,去除没有意义的符号;
词嵌入,包括将日志序列预处理后的每个单词映射到一个向量,将单词经过嵌入处理后生成向量其中表示第i个日志序列的第j条日志的第k个单词;
重要度计算,包括词性权重计算和词频权重计算,所述词性权重计算根据自然语言处理库标记每个单词的词性,并为每个词性赋予相应的权重;所述词频权重计算根据词频-逆文档频率法计算每个词的词频权重,具体为:将词经过词频-逆文档频率法计算后的权重记为文档频率为逆文档频率为计算公式分别为:
其中,|Si|表示第i条日志序列包含的日志数量;表示第i条日志序列中含有的日志数量;|S|代表日志序列数据S中日志序列的总数量;表示S中包含的日志序列数量;
词语义向量WordVec生成,具体将词嵌入与重要度计算结合,为单词生成对应的语义向量WordVec,计算公式为:
其中,表示单词生成对应的语义向量WordVec,α和β是调解和的权重因子,且α+β=1。
进一步的,所述日志层根据所述日志每个单词的语义向量WordVec生成日志语义向量LogVec,具体包括:
接收词层输入的所述日志每个单词的语义向量WordVec,形成一个WordVec序列其中表示第i个日志序列的第j条日志的第m个单词的语义向量WordVec;
利用基于注意力机制的Bi-LSTM模型从WordVec序列中提取语义特征,生成日志语义向量LogVec,具体包括:
将在前向LSTM中t时刻的隐藏层的状态记为在后向LSTM中t时刻的隐藏层的状态记为和的计算公式和通过拼接的方式获取Bi-LSTM模型在t时刻的输出表达式为将通过全连接网络生成的隐藏表示通过计算与上下文向量uij的相似度衡量的重要性,利用SoftMax标准化计算重要度权重将与相乘累加获得日志语义向量计算公式分别为:
其中,Wij和bij为随机初始化的向量和偏置。
进一步的,所述日志序列层根据所述日志序列每个日志语义向量LogVec生成日志序列语义向量LogSeqVec,具体包括:
接收日志层输入的所述日志序列每个日志语义向量LogVec,形成一个LogVec序列其中表示第i和日志序列的第n条日志的语义向量LogVec;
利用基于注意力机制的Bi-LSTM模型获取LogVec序列中的上下文信息,具体包括:
和分别表示为在t时刻前向LSTM和后向LSTM的隐藏层状态,和的计算可以分别被简化为和通过拼接的方式获取Bi-LSTM模型在t时刻的输出表达式为
自动学习和调整日志对于日志序列语义表达的重要程度,生成日志序列语义向量LogSeqVec,具体计算公式为:
其中,Wi和bi为随机初始化的权值向量和偏置,是通过单层全连接网络生成的隐藏表示,是通过SoftMax函数归一化生成的重要度权重,ui是随机初始化参数,svi是与相乘累加得到的日志序列语义向量LogVec。
进一步的,所述一种检测日志序列异常的方法还包括将所述日志序列数据存储到数据库中。
进一步的,所述一种检测日志序列异常的方法还包括对输出类别进行展示,当输出类别为异常,根据异常发生时间和位置对异常进行定位。
本发明的第二方面,提供了一种检测日志序列异常的装置,包括:数据获取模块:用于从数据源中收集原始的日志序列;语义向量生成模块:用于根据所述日志序列的层次结构提取每一层的语义信息,生成每一层固定维度的语义向量;异常检测模块:用于根据所述日志序列的语义向量利用SoftMax函数计算所述日志序列的概率分布,选择最大条件概率对应的结果作为输出类别。
进一步的,所述语义向量生成模块包括:词层:所述词层用于根据词性和词频的重要度将所述日志中的每个单词表示为词语义向量WordVec;日志层:所述日志层用于根据日志每个单词的语义向量WordVec生成日志语义向量LogVec;日志序列层:所述日志序列层用于根据所述日志序列每个日志语义向量LogVec生成日志序列语义向量LogSeqVec。
本发明的第三方面,一种检测日志序列异常的装置,包括:处理器;以及存储器,其中,所述存储器中存储有计算机可执行程序,当由所述处理器执行所述计算机可执行程序时,执行上述检测日志序列异常的方法。
本发明的第四方面,提供了一种计算机可读存储介质,其上存储有指令,所述指令在被处理器执行时,使得所述处理器执行上述检测日志序列异常的方法。
本发明提供的提供了一种检测日志序列异常的方法、装置及计算机存储介质,首先从数据源中收集原始的日志序列数据,根据所述日志序列数据中日志序列的层次结构依次提取每一层的语义信息,生成每一层固定维度的语义向量,不使用日志解析器,不需要考虑日志类型,因此,所述数据源可以是系统服务器、应用服务器、数据库等,根据所述日志序列数据中日志序列的层次结构依次提取每一层的语义信息,生成每一层固定维度的语义向量;通过日志按照执行的先后顺序形成日志序列,考虑了日志之间的执行顺序以及日志序列的完整性,能够同时检测到三种日志序列异常情况:执行顺序异常、操作异常以及不完整异常,另外,词嵌入技术充分考虑到单词的语义和上下文决定了日志的语义,在词嵌入基础上进行了词性权重计算和词频权重计算,最终达到的有益效果是:与已有的日志序列异常检测方法及系统相比,本发明提供的一种检测日志序列异常的方法、装置及计算机存储介质能够从单词、日志和日志序列中提取更加丰富的语义特征,从而使装置能够学习更加准确的层次语义表达,达到更佳的检测效果,从而进一步提高了检测三种不同异常的能力。
附图说明
图1是本发明实施例的检测日志序列异常的装置结构示意图;
图2是本发明实施例的检测日志序列异常的方法流程示意图;
图3是本发明实施例中日志序列层次结构示意图;
图4是本发明实施例中计算机设备的架构。
具体实施方式
为进一步对本发明的技术方案作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的步骤。
本发明实施例针对一种检测日志序列异常的方法、装置及计算机存储介质,参考图1-4所示,图2是本发明实施例的检测日志序列异常的方法流程示意图,具体实施步骤为:
S01、数据采集:从数据源中收集原始的日志序列数据,其中,数据源包括但不限系统服务器、应用服务器、数据库。
S02、数据存储:将采集到的日志序列数据存储到指定存储介质中,存储介质包括线上和线下两个部分,也可不对数据进行存储,跳过此步骤进行下一步骤。
S03、原始日志序列队列:日志按照执行的先后顺序形成日志序列,多个日志序列排列形成日志序列队列,能够保证系统能并行处理多个日志序列数据。
S04、日志序列异常检测LayerLog:根据所述日志序列数据中日志序列的层次结构依次提取每一层的语义信息,生成每一层固定维度的语义向量;根据所述日志序列的语义向量利用SoftMax函数计算所述日志序列的概率分布,选择最大条件概率对应的结果作为输出类别。
S05、结果展示与异常定位:对输出类别进行展示(正常或异常),根据异常发生时间和位置对异常进行定位。
日志序列是按照日志执行时间的先后顺序进行排列的。在检测日志序列时,保留和记录日志的执行时间,一旦发生检测出异常,便可根据该执行时间和日志序列位置进行异常定位。
将所述日志序列的层次结构根据词、日志、日志序列分别对应为词层、日志层以及日志序列层;所述词层根据词性和词频的重要度将所述日志中的每个单词表示为词语义向量WordVec,所述日志层根据所述日志每个单词的语义向量WordVec生成日志语义向量LogVec,所述日志序列层根据所述日志序列每个日志语义向量LogVec生成日志序列语义向量LogSeqVec。
所述S04日志序列异常检测LayerLog的具体实施方式为:日志序列由日志组成,日志由单词组成,形成了三层的层次结构,且每一层的语义都会影响最终日志序列的语义向量表达,将单词、日志和日志序列所在的层次分别命名为词层(WordLayer)、日志层(LogLayer)和日志序列层(LogSeq Layer),将日志序列的层次结构命名为称为“词-日志-日志序列”层次结构,如图3所示。
假设第i个日志序列由n条日志组成,第j条日志由m个单词组成,用Si表示第i个日志序列,用表示第i个日志序列的第j条日志,用表示第i个日志序列的第j条日志的第k个单词,其中j∈[1,n],k∈[1,m],日志序列的组成可表示为且
S04日志序列异常检测LayerLog是在获取原始日志序列之后,提取日志数据每一层的语义信息,生成固定维度的语义向量,然后通过日志序列语义向量来判断日志序列是否异常。实施例中将词层、日志层和日志序列层对应的语义向量分别命名为WordVec、LogVec和LogSeqVec。更具体地,将单词的语义向量WordVec表示为将日志的语义向量LogVec表示为将日志序列Si的语义向量LogSeqVec表示为svi。
在词层,考虑到词性和词频的重要性,LayerLog将其和重要度计算结合起来,为每个词生成相应的语义向量WordVec。然后将日志中的所有WordVec传递到日志层,形成一个WordVec序列,通过基于注意力机制的Bi-LSTM模型生成相应的日志语义向量LogVec。接着,将日志序列中每一条日志的LogVec传输到LogSeq层,形成LogVec序列,利用基于注意力机制的Bi-LSTM模型生成相应的LogSeqVec。LayerLog通过生成的LogSeqVec判断日志序列是否异常。
所述词层根据词性和词频的重要度将所述日志中的每个单词表示为语义向量WordVec,具体地,词生成语义词向量的步骤如下:
S041、日志序列预处理,结合日志序列的文本特征来处理原始日志序列数据,包括对所述日志序列进行分词和无义词去除,所述分词是将所述原始的日志序列中每个日志分割成一个个的单词或令牌,由于英文文本格式的日志数据以空格作为单词之间的间隔,因此可以将空格符号作为分隔符来分割日志;所述无义词去除是在经过所述分词后,去除没有意义的符号,所述无意义的符号包括但不限于标点符号和分隔符,它们对日志的语义表达没有积极的影响。与普通文本数据(如新闻文本、评论文本等)不同,日志记录系统运行状态的异构文本数据,它具有其独特的领域特性,在对日志数据进行预处理时,设计了两种特殊处理手段:(1)尽管介词(如“from”,“to”等)和量词(如“a”,“the”等)在自然语言理解方面往往没有意义,但仍然保留它们,因为在日志分析中,所有的词都有语义信息,只是它们的重要程度不同。(2)复合词(例如“PackeResponder”、“addStoredBlock”等)不会被刻意分割,而是被视为一个特殊的词,因为分割复合词会导致语义损失,因此通过构造相应的WordVec来保留复合词的整个语义。
S042、词嵌入,包括将日志序列预处理后的每个单词映射到一个向量,将单词经过嵌入处理后生成向量其中表示第i个日志序列的第j条日志的第k个单词,实施例中具体使用Word2Vec来生成词嵌入表示,其中Word2Vec利用单层神经网络(CBOW或Skip-Gram)将独热编码形式的稀疏向量映射到某个维度的密集向量中。
S043、重要度计算,日志数据中词的重要性程度是不同的,主要表现在以下两个方面:一是词性不同,在一条日志中,内容词往往具有主导性,而功能词具有辅助性,即内容词的重要性通常大于功能词。二是同一个单词在某些日志序列中更为重要,但在其他日志序列中则不那么重要,这取决于单词上下文及其所属的日志序列。因此,利用两种相应的方法来计算单词的重要度。包括词性权重计算和词频权重计算,所述词性权重计算使用宾夕法尼亚大学设计的NLTK(Natural Language Toolkit)自然语言处理库,来标记单词的词性,并为每个词性赋予相应的权重。在赋予权重时,按照内容词(动词、名词、形容词和副词)对语义表达的影响比辅助词(连接词、限定词和介词)要大的这样一个设定,来给对应的词性赋予相应大小的权重。词性权重越大的单词就越重要,对日志语义的影响就越大。单词在经过词性标注后,词性的相应权重如表1所示。其中,POS指词性,Abbr是词性的缩写,表示词经过词性标注后的权重。越大,越重要。
表1:词性对应的权重
所述词频权重计算根据词频-逆文档频率法(Term Frequency-Inverse DocumentFrequency,TF-IDF)计算每个词的词频权重,对于三层结构的日志序列,TF-IDF基于这样一个假设:如果一个单词在一个日志序列中频繁出现,而在其他日志序列中很少出现,则该单词具有更高的区分性和重要性。具体为:将词经过词频-逆文档频率法计算后的权重记为文档频率为逆文档频率为计算公式分别为:
其中,|Si|表示第i条日志序列包含的日志数量;表示第i条日志序列中含有的日志数量;|S|代表日志序列数据S中日志序列的总数量;表示S中包含的日志序列数量,越大,越重要。
S043、词语义向量WordVec生成,具体将词嵌入与重要度计算结合,为单词生成对应的语义向量WordVec,计算公式为:
其中,表示单词生成对应的语义向量WordVec,α和β是调解和的权重因子,且α+β=1。
以上步骤为每个词生成相应的语义向量WordVec,然后将日志中的所有WordVec传递到日志层,形成一个WordVec序列。
所述日志层根据所述日志每个单词的语义向量WordVec生成日志语义向量LogVec,日志层的目标是为日志生成一个语义向量表示LogVec,引入基于注意力机制的Bi-LSTM来从WordVec序列中提取语义特征,这样能够捕获单词之间的上下文信息,自动学习和调整单词对于日志语义表达的重要性权重。
LSTM是RNN的一个变种,引入三个门控机制来缓解梯度消失问题。Bi-LSTM是前向LSTM和后向LSTM的结合,可以对双向序列信息进行编码,非常适合于序列数据的建模。日志由单词组成,而日志中每个单词的WordVec构成了WordVec序列,Bi-LSTM能较好地捕获WordVec序列的双向语义依赖性。具体步骤为:
S044、接收词层输入的所述日志每个单词的语义向量WordVec,形成一个WordVec序列其中表示第i个日志序列的第j条日志的第m个单词的语义向量WordVec;
S045、利用基于注意力机制的Bi-LSTM模型从WordVec序列中提取语义特征,生成日志语义向量LogVec,具体包括:将在前向LSTM中t时刻的隐藏层的状态记为在后向LSTM中t时刻的隐藏层的状态记为和的计算公式和通过拼接的方式获取Bi-LSTM模型在t时刻的输出表达式为并非所有的词都对日志的语义表示有同等的贡献。为了更准确地表达日志语义,引入注意机制来提取对日志语义表示有重要意义的词。将通过全连接网络生成的隐藏表示通过计算与上下文向量uij的相似度衡量的重要性,利用SoftMax标准化计算重要度权重将与相乘累加获得日志语义向量计算公式分别为:
其中,Wij和bij为随机初始化的向量和偏置。
所述日志序列层根据所述日志序列每个日志语义向量LogVec生成日志序列语义向量LogSeqVec,由于日志序列是由日志按时间顺序组成的,日志之间存在一定的关系,涉及到日志的数量、类型和操作内容。这种关系反映在日志序列的语义中,因此需要从LogVec序列中生成日志序列的语义表示,再利用基于注意力机制的Bi-LSTM模型,来获取LogVec序列中的上下文信息,并自动学习和调整日志对于日志序列语义表达的重要程度。需要注意的是,日志层和日志序列层的两个基于注意力机制的Bi-LSTM在设计上是不同的,它们不能共享同样的参数,但都是在LayerLog中一起训练。具体步骤为:
S046、接收日志层输入的所述日志序列每个日志语义向量LogVec,形成一个LogVec序列其中表示第i和日志序列的第n条日志的语义向量LogVec;
S047、利用基于注意力机制的Bi-LSTM模型获取LogVec序列中的上下文信息,和分别表示为在t时刻前向LSTM和后向LSTM的隐藏层状态,和的计算可以分别被简化为和通过拼接的方式获取Bi-LSTM模型在t时刻的输出表达式为日志对日志序列的语义表达有不同的影响,因此再次引入注意机制,自动学习和调整日志的重要程度,以形成更精确的日志序列的语义表示,具体计算公式为:
其中,Wi和bi为随机初始化的权值向量和偏置,是通过单层全连接网络生成的隐藏表示,是通过SoftMax函数归一化生成的重要度权重,ui是随机初始化参数,svi是与相乘累加得到的日志序列语义向量LogVec。
从日志序列层的输出中提取到日志序列的语义向量LogSeqVec,然后将日志序列的异常检测看作是一个二元分类问题,利用SoftMax函数计算日志序列的概率分布,然后选择最大条件概率对应的检测结果作为输出类别。计算过程如下:
其中,w和b为随机初始化的权值向量和偏置,代表日志序列Si的条件概率分布,yi是Si的检测类别。
以下,参照图1来描述根据本公开实施例的与图2所示的方法对应的系统,一种检测日志序列异常的装置100,包括:数据获取模块101:用于从数据源中收集原始的日志序列;语义向量生成模块102:用于根据所述日志序列的层次结构提取每一层的语义信息,生成每一层固定维度的语义向量;异常检测模块103:用于根据所述日志序列的语义向量利用SoftMax函数计算所述日志序列的概率分布,选择最大条件概率对应的结果作为输出类别。
所述语义向量生成模块102包括:词层:所述词层用于根据词性和词频的重要度将所述日志中的每个单词表示为词语义向量WordVec;日志层:所述日志层用于根据日志每个单词的语义向量WordVec生成日志语义向量LogVec;日志序列层:所述日志序列层用于根据所述日志序列每个日志语义向量LogVec生成日志序列语义向量LogSeqVec。
一种检测日志序列异常的装置100的具体工作过程参照上述一种检测日志序列异常的方法的描述,不再赘述。
此外,根据本发明实施例的装置也可以借助于图4所示的计算设备的架构来实现。图4示出了该计算设备的架构。如图4所示,计算机系统201、系统总线203、一个或多个CPU204、输入/输出组件202、存储器205等。存储器205可以存储计算机处理和/或通信使用的各种数据或文件以及CPU所执行的程序指令。图4所示的架构只是示例性的,在实现不同的设备时,根据实际需要调整图4中的一个或多个组件。
本发明实施例也可以被实现为计算机可读存储介质。根据实施例的计算机可读存储介质上存储有计算机可读指令。当所述计算机可读指令由处理器运行时,可以执行参照以上附图描述的根据本发明实施例的方法。
本发明实施例基于以上所述一种检测日志序列异常的方法、装置及计算机存储介质,在HDFS和BGL数据集上进行了实施例比对。这两个数据集的详细信息如下。(1)HDFS数据集:HDFS数据集包含Hadoop生成的11,175,629条日志,这些日志来自200多个Amazon EC2节点。HDFS数据集中的每条日志都含有“blockID”标识符,因此选用会话窗口划分日志序列。将具有相同“blockID”标识符的日志按时间执行的先后顺序组合在一起,从而形成日志序列。在11,175,629条日志中,共合成了575,061个日志序列。Hadoop领域专家已经对这些日志序列的正常或异常标签进行了标记,其中正常日志序列数为558,223,约占97.1%;异常日志序列数为16,838,约占2.9%。(2)BGL数据集:BGL数据集由一台由128K处理器组成的Blue Gene/L超级计算机生成。BGL数据集包含4,747,963条日志,其中异常348,460条。与HDFS数据集不同,BGL的日志不包含特定的标识符,因此采用固定窗口或滑动窗口对BGL数据集进行日志序列的划分。不同窗口大小和步长大小的选取会影响日志序列的长度和对日志序列正常或异常的判断。对应划分好的日志序列,如果出现了异常日志条目,则该日志序列被视为异常。利用精确率、召回率和F1评分来衡量LayerLog对日志序列异常检测的有效性。精确率Precision(P)是在所有检测到的异常中检测到的真实日志序列异常的百分比,P=TP/TP+FP。召回率Recall(R)是在所有异常中实际检测到的真实日志序列异常的百分比,以及R=TP/TP+FN。F1评分是精确性和召回率的调和平均数,F1=2*P*R/P+R。TP是正确检测到的异常日志序列数。FP是错误检测为异常的正常日志序列数。FN是错误检测为正常的异常日志序列数。
实施例编写语言为python版本3.5.2,基于Tensorflow版本1.13.1深度学习框架编写。CPU为I99820X,内存为48GB,显卡为2080Ti,固态容量为520GB,操作系统为LinuxUbuntu 16.04.6LTS。系统的参数设置及解释如下表2所示。
表2:系统参数设置
参数
取值
解释
α
0.6
生成词向量的影响因子
β
0.4
生成词向量的影响因子
hidden_size
50
Bi-LSTM每一层的节点数目
atten_size
50
Attention机制每一层的节点数目
embedding_size
50
语义向量的维度
在HDFS和BGL数据集上验证了LayerLog的性能,并与LR、SVM、PCA、IM、LogClustering、LSTM-AE(基于事件计数向量的方法)、DeepLog(基于日志键序列的方法)和LogAnomaly(基于日志语义的方法)进行了比较。表3和表4显示了HDFS和BGL数据集的比较结果。
表3:在HDFS数据集上实验结果
P
R
F1
LR
0.98
0.86
0.92
SVM
1.00
0.86
0.93
PCA
1.00
0.65
0.79
IM
0.86
0.82
0.84
LogCluster
1.00
0.46
0.63
LSTM-AE
0.89
0.88
0.88
DeepLog
0.95
0.93
0.94
LogAnomaly
0.96
0.94
0.95
LayerLog
0.99
0.98
0.99
表4:在BGL数据集上实验结果
从实施例比对结果可以看出,LayerLog的性能优于其他方法。它的F1在HDFS数据集上的得分达到了0.99,在BGL数据集上的得分达到了0.98。然而,基于事件计数向量的方法不能同时达到高精度和高召回率。例如,在HDFS数据集上,支持向量机、主成分分析和LogCluster的精度很高,甚至高达1,而它们的召回率相对较低,分别为0.86、0.65和0.46,导致F1得分较低。同时,由于两个数据集上的评价标准具有很强的区分性,基于事件计数向量的方法的鲁棒性较差。例如,HDFS数据集上LR的F1得分为0.92,而BGL数据集上LR的F1得分仅为0.82。LSTM-AE。虽然这两个数据集对LSTM-AE的评价标准没有显著差异,但它们的F1分数没有超过0.9。
基于日志键序列的方法通常比基于事件计数向量的方法具有更好的性能。DeepLog在两个数据集上的F1得分均在0.9以上,说明了日志执行顺序的必要性,验证了DeepLog在日志序列异常检测中具有较好的鲁棒性。
基于日志语义的方法取得了最好的结果,说明从语义的角度理解日志序列的执行内容可以提高检测三种不同异常的能力。LayerLog的性能优于LogAnomaly,其F1在HDFS数据集上的得分比LogAnomaly高4个百分点,在BGL数据集上的得分比LogAnomaly高2个百分点。证实了LayerLog能够从单词、日志和日志序列中提取更加丰富的语义特征,从而使LayerLog能够学习更加准确的层次语义表达,达到最佳的准确性。
现代系统将在运行期间生成新的日志。由于训练模型从训练数据中学习到一个固定的日志序列语义模式,因此在检测新的日志序列时可能会降低准确性。因此,为了评估模型对新日志数据的适应能力,对BGL数据集进行了在线测试。按时间顺序执行的BGL数据集的前50%用作训练集,后50%用作测试集,在不提供任何反馈的情况下进行评估。与DeepLog和LogAnomaly对比,具体结果见表5。
从实施例结果可以看出,LayerLog对新数据有较强的适应能力,其三个评价指标分别为0.9944、0.9187和0.9550。由于DeepLog和LogAnomaly都使用日志分析器,当系统产生新的日志事件时,日志分析器无法正常工作,导致日志序列异常检测性能显著下降。相比之下,LayerLog不使用日志解析器,避免了日志解析器带来的负面影响。在对原始日志数据进行预处理时,只去除无意义的符号(如标点符号、分隔符等),最大限度地增加了日志文本的语义信息。此外,在训练阶段还可以自动学习单词、日志和日志序列的语义。因此,基于层次语义的LayerLog框架能够更好地适应新的数据,更适合于在线日志序列异常检测。
表5:对BGL数据集的在线评估结果
P
R
F1
DeepLog
0.3817
0.9768
0.5489
LogAnomaly
0.8039
0.9319
0.8632
LayerLog
0.9944
0.9187
0.9550
系统日志是进行异常检测和故障分析的重要资源。日志数据的三层结构,即“词-日志-日志序列”层次结构,提出了一种基于日志数据层次语义的日志序列异常检测框架LayerLog。在预处理阶段不需要日志解析器,LayerLog可以有效地从每一层提取语义特征。此外,LayerLog还可以端到端同时检测日志序列的执行顺序异常、操作异常和不完全异常。对两个公共数据集的评估证实了LayerLog比现有的方法有更好的性能。
综合上述各实施例提供的检测日志序列异常的方法、装置及计算机存储介质,与已有的日志序列异常检测方法及装置相比,本发明提供的一种基于层次语义的检测日志序列异常的方法、装置能够从单词、日志和日志序列中提取更加丰富的语义特征,从而使装置能够学习更加准确的层次语义表达,达到最佳的准确性,从而进一步提高了检测三种不同异常的能力。
在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的步骤、方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种步骤、方法所固有的要素。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。