首页> 中国专利> 基于LSTM且融合变量的多维度日志异常检测方法及系统

基于LSTM且融合变量的多维度日志异常检测方法及系统

摘要

本发明属于日志异常检测技术领域,公开一种基于LSTM且融合变量的多维度日志异常检测方法及系统,该系统包括日志项预处理子系统、辅助决策子系统以及基于LSTM的训练/检测子系统;日志项预处理子系统负责将训练日志或者待检测日志,解析成日志事件序列、主体变量序列以及状态变量序列;辅助决策子系统负责根据用户需求,设定具体采用何种或几种检测算法;基于LSTM的训练/检测子系统根据辅助决策子系统的设定,驱动具体的训练/检测模块实施训练和检测。本发明从不同角度将主体变量、状态变量与事件序列相结合,构建不同类型的异常检测算法,从多维度来提高日志异常检测算法的效率和精度。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-09-12

    实质审查的生效 IPC(主分类):G06F11/34 专利申请号:2023106371127 申请日:20230531

    实质审查的生效

说明书

技术领域

本发明涉及日志异常检测技术领域,尤其涉及一种基于LSTM且融合变量的多维度日志异常检测方法及系统。

背景技术

与本发明相似的工作是Deeplog[Du M,Li F,Zheng G,et al.DeepLog:AnomalyDetection and Diagnosis from System Logs through Deep Learning[C]//Computerand Communications Security.ACM,2017.]和LogNL[Zhu B,Li J,Gu R,et al.Anapproach to cloud platform log anomaly detection based on natural languageprocessing and lstm[C]//2020 3rd International Conference on Algorithms,Computing and Artificial Intelligence.2020:1-7.]。Deeplog是采用LSTM实施日志异常检测的代表工作,它将日志模板表述为日志键,并将每个日志键的变量归一化后构建变量向量,作为LSTM的输入进行训练,以实现日志异常检测的目的。LogNL提出了一种基于自然语言处理(NLP)和LSTM的异常检测方法。其使用基于频率的方法TF-IDF获得模板特征表示,然后为不同模板的日志构建变量向量,最后利用基于LSTM网络构建的模式异常检测模型和变量异常检测模型,实现日志的异常检测。这都是利用日志变量的做法,但是我们认为存在两个方面有待改进。首先,如果不识别变量的类型直接分析变量,将会导致变量分析意义减少,比如将代表事件完成者的变量,以及事件完成情况的变量,混合在一起分析,会导致变量分析的相互干扰。其次,我们认为Deeplog对于变量潜能的挖掘不够,可以在多个方面进一步的利用变量辅助日志异常检测。基于这些认识,本发明才提出多种结合日志参数的异常检测算法,从多个维度、结合变量来分析日志。

综上,主流日志异常检测方法一般都只关注于日记所记录的事件,而往往忽略了日志所记录的变量。日志所记录的变量也包含了丰富的信息,可以揭示某些异常信息。典型的,例如日志变量可能记录后续事件跳转的状态信息,如果可以捕捉到这种信息,就可以根据日志变量来判断后续事件是否如预期,从而提高日志异常检测的准确性。现有的一些代表工作也利用了日志变量,但是其挖掘的程度还不够深刻。例如:Deeplog仅仅关注某个事件模板所对应的变量,这种划分方式只关注了变量在某类事件中的作用,而忽略了事件间的交互。

发明内容

本发明针对主流日志异常检测方法一般都只关注于日记所记录的事件,而往往忽略了日志所记录的变量,进而导致日志异常检测效果欠佳的问题,提出一种基于LSTM且融合变量的多维度日志异常检测方法及系统,本发明充分利用日志变量,从多个维度辅助日志异常检测,为了更为准确的利用日志变量,我们将日志变量划分为主体变量、状态变量以及其它不可识别变量。主体变量记录了事件完成者的信息,状态变量记录事件的状态信息。根据两种变量的特点,本发明从不同角度将其与事件序列相结合,构建不同类型的异常检测算法,从多维度来提高日志异常检测算法的效率和精度。

为了实现上述目的,本发明采用以下技术方案:

本发明一方面提出一种基于LSTM且融合变量的多维度日志异常检测系统,包括日志项预处理子系统、辅助决策子系统以及基于LSTM的训练/检测子系统;

所述日志项预处理子系统包括信息解析模块和变量识别模块;所述信息解析模块用于利用Spell和Drain双算法协同的方式,将原始日志信息解析成结构化数据,获取日志中的常量和变量;所述变量识别模块用于从变量中识别出主体变量以及状态变量;

辅助决策子系统包括策略设定模块、反馈评估模块以及策略推荐模块;所述策略设定模块用于确定对各类训练/检测模块是否必选、可选以及不选;所述反馈评估模块用于对设置为可选的训练/检测模块在训练过程中进行评估,并将评估结果推送给策略推荐模块;所述策略推荐模块用于根据反馈的评估结果,修改当前使用的策略;

基于LSTM的训练/检测子系统包括多个训练/检测模块,每个训练/检测模块是一种具体的训练/检测过程,训练检测子系统根据辅助决策子系统的设定,驱动具体的训练/检测模块实施训练和检测。

进一步地,所述信息解析模块具体用于利用Spell算法和Drain算法分别完成对原始日志的挖掘;采用模板匹配,对两类日志模板进行对比,将日志模板划分为相同和相异两类;对于相异的日志模板,采用大数表决的方式再次对相关日志项进行模板挖掘;在得到充分肯定后的日志模板基础上,再次结合原始日志,通过变量提取,将对应日志项的变量部分提取,从而根据原始日志得到日志常量以及变量的集合。

进一步地,所述变量识别模块具体用于采用基于规则和基于特点两个方法识别变量的类型:其中,

基于规则识别变量的类型包括:通过逆向分析解析后的结构化数据,得到待检测日志的格式;判断每条日志是否以时间戳为开头;判断时间戳中是否以符号“-”“/”或无符号隔开,确定时间戳格式;判断时间戳后是否为日志等级信息;判断日志等级信息后是否为主体变量;识别主体变量的第一个单词;根据以上的判断识别结果确定待检测日志的格式;分析日志消息信息,确定日志的事件类型;根据日志格式和事件类型去规则集中匹配相对应的变量提取规则;根据规则集里的变量提取规则提取特定日志的主体变量和状态变量;

基于特点识别变量的类型包括:

识别主体变量的方法:

记录同一个事件所对应变量的值变化情况;如果在k分钟内,变量值出现次数n,满足

识别状态变量的方法:

记录同一个事件所对应变量的值变化情况;如果在日志范围内,该变量值出现次数n,满足n≤p_t,则视其为状态变量,其中p_t为状态变量识别阈值。

进一步地,所述识别状态变量的方法还包括:

编写常见的状态变量值表,记录日志中常见的状态变量值;记录同一个事件所对应变量的值变化情况;查看变量值变化情况,是否与状态变量值表,存在交叉,如果超过半数的变量值均出现在状态变量值表中,则视该变量为状态变量。

进一步地,所述基于LSTM的训练/检测子系统包括同主体变量的事件序列训练/检测模块、同事件的变量序列训练/检测模块以及事件结合变量的序列训练/检测模块;所述同主体变量的事件序列训练/检测模块用于以同主体变量的事件序列作为输入,基于LSTM进行训练和检测;所述同事件的变量序列训练/检测模块用于按照事件的不同,将属于同一个事件的主体变量或者状态变量序列作为输入,基于LSTM进行训练和检测;所述事件结合变量的序列训练/检测模块用于将日志事件结合主体变量和状态变量作为输入,并利用LSTM进行序列训练和检测。

进一步地,所述同主体变量的事件序列训练/检测模块的训练流程包括:根据主体变量将事件序列切分为多个片段;以某个片段为LSTM的输入,通过多个片段的分别输入和反复训练,得到多个事件预测模型;

所述同主体变量的事件序列训练/检测模块的检测流程包括:根据主体变量的不同,将事件序列划分成多个事件序列片段,针对每个事件序列,采用滑动窗口的方式生成事件预测模型的输入数据X;将X中的序列x

进一步地,所述同事件的变量序列训练/检测模块的训练流程包括:根据事件的不同,分别将主体变量序列、状态变量序列以及两个变量结合在一起的序列划分成多个片段;以某个片段为LSTM的输入,通过多个片段的分别输入和反复训练,得到多个变量预测模型;

所述同事件的变量序列训练/检测模块的检测流程包括:根据事件的不同,分别将主体变量序列、状态变量序列以及两个变量结合在一起的序列划分成多个序列片段,针对每个序列通过滑动窗口的方式生成变量预测模型的输入数据X;将X中的序列x

进一步地,所述事件结合变量的序列训练/检测模块的训练流程包括:通过语义转换,将日志事件和日志变量转换为语义向量,再通过线性层将事件和变量建模成线性关系,进而得到包含事件信息的变量语义向量;在经过语义向量处理的变量序列和事件序列的基础上,根据训练/检测需要,将其转换为事件和变量相融合的序列;将上述序列输入至LSTM网络中进行反复训练和最终验证,得到多种序列预测模型;

所述事件结合变量的序列训练/检测模块的检测流程包括:针对待检测日志的事件结合变量的序列,采用滑动窗口的方式生成序列预测模型的输入数据,其由多个窗口序列组成;将其中一个序列输入序列预测模型中进行预测,没有激活函数的输出层输出一个真实的值向量,用均方误差来衡量预测值和观测值之间的差距;设置高斯分布置信区间范围,如果预测与观测值向量之间的误差在上述高斯分布的高水平置信区间内,则认为传入日志条目的参数值向量是正常的,否则认为是异常的。

本发明另一方面提出一种基于LSTM且融合变量的多维度日志异常检测方法,包括:

首先将待检测原始日志解析成变量和常量;然后在识别规则引导下,对提取的变量进行类型识别,以获得主体变量和状态变量;最终形成日志事件序列、主体变量序列以及状态变量序列;基于用户预先设定的策略,抽取相应的日志事件和变量,形成LSTM的输入,并驱动相应的日志异常检测方法进行检测;当评估周期到达,或者检测结束时,考察检测结果的有效性,并将结果进行推送;根据评估结果以及历史经验,推荐新的策略,在用户同意或者自动更新策略的基础上,继续后续检测;保留检测结束时的策略,并将其记录入策略集中,以备后用。

进一步地,所述日志异常检测方法包括同主体变量的事件序列检测、同事件的变量序列检测及事件结合变量的序列检测;其中,

所述同主体变量的事件序列检测以同主体变量的事件序列作为输入,以LSTM作为基本检测算法,对日志实施序列检测,以判断在软件工作流中,某个实体的工作内容是否存在异常;

所述同事件的变量序列检测按照事件的不同,将属于同一个事件的主体变量或者状态变量序列作为输入,以LSTM作为基本检测算法,对日志实施序列检测,以判断在软件工作流中,参与同一个事件的实体及其状态变化是否存在异常;

所述事件结合变量的序列检测将日志事件结合主体变量和状态变量作为输入,以语义向量来挖掘变量和事件之间的交互关系,并利用LSTM进行序列检测。

与现有技术相比,本发明具有的有益效果:

日志异常不仅表现在序列顺序上,还表现有不规则的变量值,为充分考虑日志变量对日志的影响,本发明将日志变量划分为主体变量和状态变量,通过从多个角度融合不同的特征,利用LSTM网络学习这些特征并进行异常检测,同时针对不同类型的日志,辅助决策子系统会根据训练检测效果制定出最适合当前日志的检测决策。本发明最终可以实现:给出一种日志,本系统能够自动识别并挖掘特征,自行选择异常检测算法,取得最佳的异常检测效果。

附图说明

图1为本发明实施例一种基于LSTM且融合变量的多维度日志异常检测系统的架构示意图;

图2为本发明实施例日志预处理示意图;

图3为本发明实施例信息解析示意图;

图4为本发明实施例变量识别流程示意图;

图5为本发明实施例Hadoop日志示意图;

图6为本发明实施例构建SiEv事件预测模型流程示意图;

图7为本发明实施例SiEv利用模型进行异常检测流程示意图;

图8为本发明实施例构建SiPi变量预测模型示意图;

图9为本发明实施例SiPi利用模型进行异常检测流程示意图;

图10为本发明实施例构建AlEa序列预测模型示意图;

图11为本发明实施例AlEa利用模型进行异常检测流程示意图。

具体实施方式

为了便于理解,对本发明的具体实施方式中出现的部分名词作以下解释说明:

LSTM:长短期记忆网络(Long-Short Term Memory,LSTM),它适合于处理和预测时间序列中间隔和延迟非常长的长期依赖事件。而日志序列前后有很大的相关性,符合时间序列的特征。正因为此,LSTM经常被用于日志异常检测方面。

Deeplog:2017年文献《DeepLog:Anomaly Detection and Diagnosis fromSystem Logs through Deep Learning》所提出的,有代表性也是较早使用LSTM实施异常检测的工作。其中一项内容是利用LSTM来预测同一个事件下的变量变化情况,这点与本发明出发点相似。

日志事件和日志变量:日志中记录了大量的信息,但核心是日志事件,所以当前的日志异常检测往往也是集中于日志事件。不可忽视的是,日志变量也是重要的信息,例如:日志记录了发生什么事(即日志事件),但是事情完成状态(即日志变量),如“成功、失败、暂停”也很重要。由于日志变量并非日志记录的必选项,从整体来看日志参数是有缺失的,所以日志变量并不能完全替代日志事件。

Keras深度学习框架:Keras是一个由Python编写的开源人工神经网络库,可以作为Tensorflow、Microsoft-CNTK和Theano的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化。本发明利用它来实现LSTM算法。

下面结合附图和具体的实施例对本发明做进一步的解释说明:

出于性能的考虑,传统的日志异常检测往往以日志事件序列为检测算法的输入。但是,日志中不仅记录了事件序列信息,还记录了其它信息,变量就是其中十分重要的内容。因为日志变量并非日志记录的必选项,且日志变量输出没有统一标准约束,这造成日志变量种类繁多,变化剧烈,格式风格相异,有时还存在缺漏,所以分析日志变量的难度通常要难于分析日志事件。然而,日志变量通常记录了事件序列所不能反映的信息,如底层系统状态和性能状态,因此有必要对其进行分析和利用,从而提高日志异常检测的效率和精度。为此,本发明提出一种基于LSTM且融合变量的多维度日志异常检测系统,将日志变量与日志事件结合起来,利用LSTM算法从多个维度实施异常检测。

系统架构如图1所示。系统主要分为日志项预处理子系统、辅助决策子系统以及基于LSTM的训练/检测子系统。日志项预处理子系统包括信息解析模块和变量识别模块,它们负责将训练日志或者待检测日志,解析成日志事件序列、主体变量序列以及状态变量序列。辅助决策子系统包括策略设定模块、反馈评估模块以及策略推荐模块,负责根据用户需求,设定具体采用何种或几种检测算法。基于LSTM的训练/检测子系统包括SiEv等多个训练/检测模块,每个训练/检测模块是一种具体的训练/检测过程。基于LSTM的训练/检测子系统将根据辅助决策子系统的设定,驱动具体的训练/检测模块实施训练和检测。

训练流程如下所述。训练流程包括日志预处理、辅助决策和基于LSTM训练,其中辅助决策和基于LSTM训练两个环节存在循环交互。预处理过程是训练日志首先被解析成变量和常量;然后在识别规则引导下,对提取的变量进行类型识别,以获得主体变量和状态变量;最终形成日志事件序列、主体变量序列以及状态变量序列。基于用户预先设定的策略,抽取相应的日志事件和变量,形成LSTM的输入,并驱动相应的训练模块(如:SiEv)去训练;当评估周期到达,或者训练结束时,辅助决策子系统的反馈评估模块会考察训练结果有效性,并将结果推送给策略推荐模块;策略推荐模块会根据评估结果以及历史经验,推荐新的策略(如:停止某个训练模块),在用户同意或者自动更新策略的基础上,继续后续训练。辅助决策和基于LSTM训练两个环节相互协同完成训练流程,同时保留训练结束时的策略(用Policy_F),并将其记录入策略集中,以备后用。

检测流程如下所述。类似训练流程,检测流程包括日志预处理、辅助决策和基于LSTM检测三个环节。与训练流程相同,日志预处理将原始日志转换为结构化的事件序列等。策略设定模块设定Policy_F作为当前策略,并驱动相应的检测模块完成检测(值得说明的是:SiEv等模块即可以作为训练用途,也可以作为检测用途)。在检测流程中,不对检测结果评估以及调整策略。

1日志项预处理子系统

日志项预处理子系统的主要组成如图2所示,其分为信息解析模块和变量识别模块2个部分。信息解析模块利用现有的日志模板挖掘算法,将原始日志信息解析成结构化数据,获取日志中的常量和变量。信息解析模块采用Spell和Drain双算法协同的方式来提高信息解析的准确性。变量识别模块则通过本发明所提出变量识别算法,尽可能从变量中识别出主体变量以及状态变量。

1.1信息解析模块

信息解析模块负责将原始日志转换为日志模板(常量)以及变量。传统的日志模板挖掘算法已经能够提取日志模板,而将日志中附带的变量丢弃。为此,本发明利用现有模板挖掘算法来提取日志模板,并基于日志模板,再次从原始日志中提取变量,形成日志模板(常量)序列以及变量序列(提示:日志模板(常量)就是日志事件)。由于变量对于本发明的重要性,而不同模板挖掘算法又存在一定误差,所以本发明采用Spell和Drain双算法协同来共同挖掘日志模板,并利用POP算法实施校验。

如图3所示,信息解析主要分为模板挖掘、模板匹配、模板校验和变量提取四个过程。模板挖掘利用Spell算法和Drain算法分别完成对原始日志的挖掘。模板挖掘会获得两个不同日志模板挖掘结果。由于Spell算法和Drain算法所得到的日志模板,大概率并不会完全相同,为了消除分歧,本发明采用模板匹配,对两类日志模板进行对比,将日志模板划分为相同和相异两类。对于相异的日志模板,模板校验再次对相关日志项进行模板挖掘,采用大数表决的方式(即多数认为模板相同,则最终结果认为其相同)。在得到充分肯定后的日志模板基础上,再次结合原始日志,通过变量提取,将对应日志项的变量部分提取,从而根据原始日志得到日志模板(常量)以及变量的集合。

1.2变量识别模块

主体变量是标识日志动作参与者的变量,其可能是一个内嵌的服务模块,也可能是一个外置的服务主机。对于Hadoop这样的日志,其主体变量是内嵌的服务模块,例如Hadoop的一条日志“2015-08-21 11:16:08,204 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl:Scheduled snapshot period at 10 second(s).”,其主体变量相对固定,就是等级“INFO”后面的“org.apache.hadoop.metrics2.impl.MetricsSystemImpl”服务模块。对于Zookeeper系统的日志,其主体变量是外置的服务主机,例如Zookeeper的一条日志“2015-07-29 19:15:17,618-INFO[/10.10.34.11:3888:QuorumCnxManager$Listener@493]-Received connection request/10.10.34.11:45479”的主体变量为“[/10.10.34.11:3888:QuorumCnxManager$Listener@493]”服务主机。

状态变量是日志动作所引起的环境变化的变量。例如hdfs的一条日志“2015-08-21 11:08:15,242INFO org.apache.hadoop.ipc.Server:IPC Server listener on50020:starting”和“2015-08-21 11:08:15,242 INFO org.apache.hadoop.ipc.Server:IPC Server listener on 50020:stopped”,其中“starting”和“stopped”是表示服务开启状态的状态变量。

变量识别模块的目的是判定主体变量和状态变量。识别流程如图4所示。在传统日志模板挖掘算法的帮助下,日志被分为常量和变量两个部分。通常情况下,常量部分的内容作为事件,成为异常检测分析的主要数据源,而变量部分往往则被丢弃。为了增加异常检测的准确性,识别变量的类型成为必要。我们采用基于规则和基于特点两个方法识别变量的类型。

基于规则识别变量类型的方法如下。原始日志文件经过日志解析后变成有规律的结构化数据,通过分析这些结构化数据的规律特点而确定产生的日志的格式。例如,Hadoop的一条日志如图5所示。

经过解析后形成的结构化数据为:

[日期]:2015-08-21,

[时间]:11:16:08,204,

[类型]:INFO,

[主体变量]:org.apache.hadoop.metrics2.impl.MetricsSystemImpl,

...

进一步分析可得到日志的格式:

||<产生该日志的主体变量>|

通过逆向分析得到的日志文件的格式以及其中的参数值,我们就可以从中分离出主体变量和状态变量。我们可以通过预先确定规则,来确定主体变量和状态变量。由于日志类型的众多,变量规则的数量也会很多。本发明只对Hadoop等少量日志制定相应的规则(如表1所示)。不对其它日志或者其它规则作特殊要求。

表1 Hadoop主体变量和状态变量提取规则

基于特点识别变量类型的原理如下。主体变量用于记录事件参与主体,所以主体变量往往在日志中一个较短时间范围内呈一致性。例如:日志中记录主体A在1分钟内完成事件x和事件y。状态变量往往记录与事件相关的状态,在较短时间内呈连续变化,尤其对于某个主体变量相关事件而言,且变化状态往往呈少量几个状态,如“up、ok、fail”,也可能是特定的数值等。

识别主体变量的方法如下。(1)记录同一个事件所对应变量的值变化情况;(2)如果在k分钟内,变量值出现次数n,满足

识别状态变量的方法一如下。(1)记录同一个事件所对应变量的值变化情况;(2)如果在日志范围内,该变量值出现次数n,满足n≤p-t,则视其为状态变量,其中p_t为状态变量识别阈值。p_t默认设置为10,一般而言,事件的状态不会超过10种。同样的,本发明也不致力发现所有的状态变量,而是只发现满足条件的部分状态变量。

识别状态变量的方法二如下。(1)用户编写常见的状态变量值表,记录日志中常见的状态变量值,如“up、down、ok”等;(2)记录同一个事件所对应变量的值变化情况;(3)查看变量值变化情况,是否与状态变量值表,存在交叉,如果超过半数的变量值均出现在状态变量值中,则视该变量为状态变量。

表2Hadoop状态变量值表

2辅助决策子系统

本发明采用多算法协作的方法来实施异常检测,但是不同算法有不同适用背景,难以用一种策略来涵盖所有场景。而且,不同的日志用特定的算法会表现出较好的检测效果。所以,本发明设计了辅助决策子系统,在初始策略的引导下,根据日志类型,对不同算法的训练结果进行评估,以考量算法是否适用,并推荐新的策略给用户进行决策。

2.1策略设定模块

策略设定的内容是各类训练/检测模块是否必选、可选以及不选三种情形。训练/检测子系统包含SiEv等多个训练/检测模块。这些模块从不同维度来考察日志,而不同日志并不适合所有类型的检测。所以,对于某次训练/检测任务,并非所有模块都是必选的。然而,用户也并非能够对日志和检测工具有足够的认识,所以可以通过设定不同类型的策略来适应不同的检测任务,而策略所记录的信息就是本次检测任务需要哪些训练/检测模块。

对于指定训练/检测模块的设定,将关系后续是否对其进行评估。对于设定为必选的模块,辅助决策子系统认定用户已经设定好,后续反馈评估环节以及策略推荐环节,不再对其进行处理。对于设定为可选的模块,辅助决策子系统认为用户不清楚该模块是否适用当前检测任务,所以需要后续反馈评估和策略推荐,完成对该模块的考察,从而决定是否在后续检测任务中,让该模块继续参加工作。

策略集记录了默认的策略。策略集的基本元素是二元组(日志类型,策略),其中日志类型标识日志来源,如Hadoop日志,策略则对应检测Hadoop日志所需要的策略。策略集由用户维护,可以事前由用户输入,也可以在每次检测任务完成后,用户根据当前检测效果,认为当前策略符合当前检测任务,那么也可以将其录入策略集。在策略集中,同一个日志类型只存在一个策略。如果用户对于一个日志类型输入多个策略,那么后入的策略将覆盖前入的策略。

2.2反馈评估模块

根据策略,某个训练/检测模块(值得说明的是:这里所述训练/检测模块是指SiEv等实际的训练/检测模块,并非本子系统的反馈评估模块、策略设定模块等)被设置为可选,那么就需要在其训练过程中(只在训练过程中进行反馈评估,在检测过程中不进行上述操作),进行评估。反馈评估模块将根据每个训练/检测模块的阶段性训练成果,分析其是否适合于当前的检测任务。一旦反馈评估模块认定其适应或者不适应当前检测任务,就将评估结果推送给策略推荐模块。

训练/检测模块的评估指标为精度,即正确预测的事件占所有事件的比例。在这里我们用到了验证集和测试集两个评估集合,在验证集评估模型是否达到最优状态(即无过拟合和欠拟合),在测试集上计算出模型的精度。如果在对测试集评估时,所计算出的精度不够高(小于0.8),那么我们认为该训练/检测模块不适用当前检测任务。当然在验证集上也能得到模型精度,但此时得到的精度是模型学习了验证集后的结果,无法客观的评估,因此必须在全新的测试集上计算评估指标精度。

2.3策略推荐模块

策略推荐模块根据反馈的评估结果,修改当前使用的策略。反馈评估模块在每个评估周期或者整个评估完成后,会推送反馈评估结果。根据反馈评估结果,策略推荐模块会将当前使用策略中的可选模块,置为不选或者必选,从而形成针对此日志的策略。检测时将使用此策略实施检测,并在检测结束后,由用户决定是否将此策略作为此类型日志的默认策略。

3基于LSTM的训练/检测子系统

在识别日志变量类别的基础上,我们采用不同方法对其加以利用,基于LSTM构建多维度检测算法。如前所述,日志变量通常存在缺失等问题,直接加以分析存在困难,所以有必要结合其它方法对其挖掘。基于我们的认识,我们将日志变量相关的检测算法分成以下几个方面。

(1)同主体变量的事件序列(简称SiEv)检测

SiEv检测以主体变量为划分准则,将事件序列划分为多个片段,对每个片段实施检测。SiEv检测核心考察在软件工作流中,某个实体的工作内容是否存在异常。

(2)同事件的变量序列(简称SiPi)检测

SiPi检测以事件为划分准则,将属于同一个事件的变量提取,形成待检测的数据集。SiPi检测核心考察在软件工作流中,参与同一个事件的实体及其状态变化是否存在异常。SiPi检测存在三种变形,包括SiPi-1、SiPi-2和SiPi-3,分别考察同一个事件的主体变量、状态变量以及上述两种变量。三种变形工作流程类似,所以归为一类。

(3)事件结合变量的序列(简称AlEa)检测

AlEa检测将日志事件结合主体变量和状态变量,以语义向量来挖掘变量和事件之间的交互关系,其从多个角度考虑到了日志变量对日志事件的影响因素,能够帮助对日志事件的预测。AlEa检测根据事件结合的变量的不同存在三种变形,AlEa-1、AlEa-2和AlEa-3,分别考虑不同变量对日志事件的影响作用。

3.1SiEv训练/检测模块

SiEv以同主体变量的事件序列作为输入,以LSTM作为基本检测算法,对日志实施序列检测。通过主体变量,可以根据不同实体,将日志划分为多个片段。由于每个片段的主体变量相同,即每个动作是由同一个实体所完成的。在这个片段内部,事件与事件具有强烈的相关性。这种提前的分片,有助于加快LSTM训练过程,减少非相关事件的干扰。

SiEv可以发现日志中某个实体所完成事务是否正常,对于实体间的事务则难以检测。因为SiEv的输入是分片后的日志信息,只包含单个实体的事件序列,所以无法检测实体间的事件序列是否异常。所以,SiEv不适应强交互性软件的日志异常检测,但是可以作为辅助来发现单实体的异常。

SiEv构建事件预测模型流程如图6所示。经过预处理的正常执行日志转换为结构化的变量序列和事件序列,我们根据主体变量将事件序列切分为多个片段;以某个片段为LSTM的输入,通过大量数据的输入和反复训练,得到事件预测模型。所谓事件预测模型,是指在特定事件序列后,预测下一个事件的类别以及出现的概率。事件预测模型将是实施异常检测的依据。

给出SiEv训练过程。

SiEv利用模型进行异常检测的流程如图7所示。针对每个待检测片段,采用滑动窗口的方式生成事件预测模型的输入数据X;将X中的序列x

给出SiEv检测过程。

3.2SiPi训练/检测模块

SiPi按照事件的不同,将属于同一个事件的主体变量或者状态变量序列作为输入,基于LSTM进行训练和检测。同一个事件的变量分布和取值变化,都存在一定的规律可查,SiPi就是利用这一点,对其进行检测。不同于SiEv的划分方法,SiPi考察同一个事件内部的变量异常情况。SiEv和SiPi是从两个不同角度,考察日志事件序列异常和变量异常情况。

由于变量的多样性,本发明采用One-Hot编码方式。One-Hot编码是处理分类数据的最常用技术之一,因此经常应用于事件类型或标记值中。形式上,对d个值的有序列表中的值i进行一次编码是一个长度为d的向量,其中第i个元素为1,其他元素均为0。

SiPi存在三种变形。SiPi-1以属于同一个事件的主体变量作为LSTM的输入进行训练和检测。SiPi-2以属于同一个事件的状态变量作为LSTM的输入进行训练和检测。SiPi-3以属于同一个事件的主体变量和状态变量作为LSTM的输入进行训练和检测。三种变形考察角度略有不同。SiPi-1分析同一个事件参与主体的异常情况,SiPi-2考察同一个事件的状态变化的异常情况,SiPi-3则将两类变量结合起来,分析主体以及与之相关的状态变化的异常情况。由于本质上均以变量为输入,所以本发明将其归入一类,其工作流程类似。后续以SiPi-3工作流程为代表论述。

SiPi的发现变量预测模型的流程如图8所示。在结构化的变量序列和事件序列的基础上,根据训练/检测需要,将其转换为同事件的主体变量序列以及同事件的状态变量序列;根据进一步的划分,可以根据SiPi-1、SiPi-2或者SiPi-3来组织LSTM的输入数据;将数据输入至LSTM进行反复训练和最终验证,得到变量预测模型;当变量符合变量预测模型,则认为其正常,否则认定其异常。

提示:SiPi和现有工作Deeplog的出发点是一样的,都是考察同一个事件内部的变量规律,虽然两者都是利用LSTM来作为基本算法,但是在如何将变量转换为输入,如何根据输出实施检测等方面,均存在差异。

SiPi工作流程如下:

SiPi利用变量预测模型进行异常检测的流程如图9所示。待检测序列通过滑动窗口的方式生成变量预测模型的输入数据X;将X里的序列x

给出SiPi的检测流程如下:

3.3AlEa训练/检测模块

AlEa将日志事件结合主体变量和状态变量作为输入,并利用LSTM进行序列训练和检测。我们观察到,有些日志异常不是显示为偏离正常日志事件序列,而是显示为异常的变量序列。同一个日志事件的不同状态变量值可能会导致不同的异常结果。一个工作流的主体变量序列在分布上也有一定的规律。为此,有必要将事件序列与变量序列结合起来实施检测。

AlEa的主要挑战在于构造LSTM的输入。变量在特定的事件中才会有特定的含义,脱离事件的变量是毫无意义的,如何挖掘事件和变量之间的交互关系是AlEa的关键。本发明所采用的方法是通过语义转换,将日志事件和日志变量转换为语义向量,再通过线性层将事件和变量建模成线性关系,进而得到包含事件信息的变量语义向量,这样利用语义就能充分表示多个参数之间的交互关系。

AlEa存在三种变形。AlEa-1将日志事件、主体变量和状态变量作为LSTM的输入进行训练和检测。AlEa-2日志事件和主体变量作为LSTM的输入进行训练和检测。AlEa-3将日志事件和状态变量作为LSTM的输入进行训练和检测。三种变形考察角度略有不同。AlEa-1强调主体变量和状态变量对事件的影响,AlEa-2考察主体变量对事件的影响,AlEa-3则考察状态变量对事件的影响。由于本质上均以多特征为输入,所以本发明将其归入一类,其工作流程类似。

AlEa的训练序列预测模型的流程如图10所示。在经过语义向量处理的变量序列和事件序列的基础上,根据训练/检测需要,将其转换为事件和变量相融合的序列AlEa-1、AlEa-2和AlEa-3;将它们输入至LSTM网络中进行反复训练和最终验证,得到序列预测模型;当变量符合序列预测模型,则认为其正常,否则认定其异常。

AlEa工作流程如下:

AlEa利用模型进行异常检测的流程如图11所示。针对待检测日志的事件结合变量的序列,采用滑动窗口的方式生成模型的输入数据In_X,其由多个窗口序列(in_x

本发明还提出一种基于LSTM且融合变量的多维度日志异常检测方法,包括:

首先将待检测原始日志解析成变量和常量;然后在识别规则引导下,对提取的变量进行类型识别,以获得主体变量和状态变量;最终形成日志事件序列、主体变量序列以及状态变量序列;基于用户预先设定的策略,抽取相应的日志事件和变量,形成LSTM的输入,并驱动相应的日志异常检测方法进行检测;当评估周期到达,或者检测结束时,考察检测结果的有效性,并将结果进行推送;根据评估结果以及历史经验,推荐新的策略,在用户同意或者自动更新策略的基础上,继续后续检测;保留检测结束时的策略,并将其记录入策略集中,以备后用。

进一步地,所述日志异常检测方法包括同主体变量的事件序列检测、同事件的变量序列检测及事件结合变量的序列检测;其中,

所述同主体变量的事件序列检测以同主体变量的事件序列作为输入,以LSTM作为基本检测算法,对日志实施序列检测,以判断在软件工作流中,某个实体的工作内容是否存在异常;

所述同事件的变量序列检测按照事件的不同,将属于同一个事件的主体变量或者状态变量序列作为输入,以LSTM作为基本检测算法,对日志实施序列检测,以判断在软件工作流中,参与同一个事件的实体及其状态变化是否存在异常;

所述事件结合变量的序列检测将日志事件结合主体变量和状态变量作为输入,以语义向量来挖掘变量和事件之间的交互关系,并利用LSTM进行序列检测。

综上,日志异常不仅表现在序列顺序上,还表现有不规则的变量值,为充分考虑日志变量对日志的影响,本发明将日志变量划分为主体变量和状态变量,通过从多个角度融合不同的特征,利用LSTM网络学习这些特征并进行异常检测,同时针对不同类型的日志,辅助决策子系统会根据训练检测效果制定出最适合当前日志的检测决策。本发明最终可以实现:给出一种日志,本系统能够自动识别并挖掘特征,自行选择异常检测算法,取得最佳的异常检测效果。

以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号