程思强,李晓戈,2,李显亮
1(西安邮电大学 计算机学院,西安 710000) 2(西安邮电大学 陕西省网络数据分析与智能处理重点实验室,西安 710000) 3(浪潮软件科技有限公司,济南 250000)
在云计算高速发展的时期,计算机软件系统开始依赖以大型服务器集群为中心的分布式环境,导致服务器数量高速增长,运维压力不断增大.系统的崩溃或延迟可能会产生严重的后果,造成重大的经济损失.因此,准确、及时的异常检测可以帮助操作人员快速[1]、构建安全可靠的计算机系统.系统日志记录着计算机系统状态和各个关键点上的重要信息,例如时间戳(系统两次操作的时间间隔)和日志内容(通常是非结构化的自由文本).日志在计算机安全方面发挥着重要作用,是异常检测最有价值的数据源之一[2].日志异常通常意味着数据异常,执行路径异常或者时延异常.然而随着系统的规模和复杂性不断增加,通过工作人员手动分析大型且复杂的日志数据集是一项繁琐且容易出错的任务,因此对于自动化的进行日志异常检测的需求越来越迫切.
基于日志的异常检测是通过系统运行产生的日志数据作为信息来源对系统进行异常检测,进而确定异常类型.基于日志的异常检测方法大致分为利用有监督学习的方法和无监督学习的方法,有监督的异常检测模型准确度往往依赖训练数据的标注数量和准确,从而消耗昂贵的经济成本.因此,许多无监督学习模型被广泛用于日志异常检测.例如Qiu等[3]提出的日志多维度的无监督异常检测算法,通过对日志的不同维度进行异常检测提升异常检测的精度.Xu等[4]提出基于主成分分析的方法来日志异常检测,通过统计定长窗口内每个事件模板出现的次数作为矩阵特征向量,利用主成分分析模板出现次数明显异常的集合来进行异常检测.Lin等[5]设计了一种名为LogCluster的基于聚类的方法来识别在线系统问题,通过聚类的方法将事件计数向量生成正常聚类和异常聚类两类,通过计算距离两类质心的距离进行异常检测.Lou等[6]将不变量挖掘应用于日志异常检测,认为系统正常执行的多个日志事件之间存在线性关系,通过是否遵循不变量进行异常检测.然而,传统的机器学习模型,虽然在特定的系统中有较高检测异常效果,但是其存在对特征工程的高度依赖和普适性差等问题.由于在大数据的时代下,推动着深度学习的快速发展,各种深度学习模型被广泛运用于系统的异常检测[7]中,并且减少了对特征工程的高度依赖.Pande等[8]将词嵌入技术应用于异常分类,通过识别日志中的异常特征来进行异常检测.Brown等[9]利用词袋模型生成自然语言序列,使用引入注意力机制的长短期记忆(Long Short-Term Memory,LSTM)[10]网络进行模型训练,根据日志的异常得分进行异常检测.Du等[11]提出的Deeplog模型对日志中的事件序列和参数序列分别训练对应的LSTM模型,从多个角度进行日志异常检测.Meng等[12]提出的LogAnomaly运用自然处理的方法通过加入正反义词来训练DLCE词向量,并同时对序列异常和定量异常进行异常检测.基于深度模型的方法在海量数据的处理上相较于手工提取特征的传统方法有着明显的优势.但是传统的异常检测方法是将日志的不同特征(例如:路径异常,定量异常,时间异常,参数异常等)分开训练相应的学习模型,而忽略了日志不同特征之间的关联性.并且传统的日志事件模板采用ID进行独立表示,而忽略了模板内容之间的语义信息.
日志异常通常是由多种特征共同决定的,例如执行路径异常,定量异常[12]和时延异常[13]等.路径异常是由于系统运行的路径偏离正常执行的路径造成的,定量异常是系统执行过程中因违背序列中的线性关系造成的(例如文件打开和关闭存在一种对应关系),而时延异常是系统请求或响应超时造成的.所以本文提出了一种基于预训练的日志多特征融合的异常检测方法.本文的主要工作如下:
1)设计了一种通过BERT[14]预训练模型对日志模板进行预处理的方法,动态获取日志模板中的语义和语法信息,用于日志的异常检测.
2)提出了一种融合日志多特征的异常检测模型LMFF,该模型使用Transformer-Encoder[15]和LSTM并行处理日志的多特征融合,实现自动检测日志的序列异常.
3)通过消融实验,测评对模板进行预训练的向量表示结构和日志的多特征融合在LMFF模型中发挥的作用,并在同一实验环境下对LMFF、Deeplog和LogAnomaly异常检测模型的时耗进行对比分析.
本文针对传统的异常检测方法在日志解析中忽略了模板内容之间的语义信息,以及在异常检测中忽略了日志不同特征之间的关联性而影响异常检测的精度等问题.本文利用BERT预训练语言模型来保留日志消息的语义,并将其映射到日志向量中,为了克服基于RNN的模型的局限性,引入Transformer和LSTM神经网络,通过融合日志的事件序列特征,时延特征和计数序列特征增强日志间不同特征间的关联性,进而更好理解日中的异常.
通过在数据集HDFS[4]和OpenStack[11]的实验结果表明,本文所提出的异常检测方法在两个测试数据集上均有较好的表现.
计算机系统通常使用日志记录系统运行时的状态,被广泛应用于日志异常检测.通过分析日志数据发现:1)日志模板是由开发人员用于描述系统中发生的重要事件,并且这些输出文本存在着语义信息;2)系统中的程序在执行中存在着事件序列,计数序列和时延序列多种特征,可用于日志的多特征融合的异常检测.日志中的异常是由其存在的多种因素共同决定的,例如事件序列特征引起的执行路径异常和时间序列特征引起的时延异常.
路径异常是系统中经常存在的一种异常,路径异常表现为日志事件序列中的某一处位置偏离了正常的事件序列,可能出现的异常类型为重复执行某一事件或者跳过某一事件.具体异常如图1所示.
图1 日志序列异常示意图Fig.1 Examples of log sequence exception
假设一正常事件序列为:{k1,k2,k3,k4},如果某次执行产生的日志对应的事件序列变为:{k1,k2,k4},则在事件4位置可能发生的异常类型为跳过某一事件的路径异常;如果事件序列变为:{k1,k1,k1,k1},则事件1可能发生的异常类型为重复执行某一事件的路径异常.
时延序列是根据两条日志间的输出时间间隔产生与事件序列相对应的序列.日志是由系统程序经过严格的流程产生的重要事件的输出,两事件之间的时间间隔会存在一定的分布形式.具体异常如图2所示.
图2 时延异常示意图Fig.2 Examples of time delay exception
假设正常事件序列对应的时延序列为{0,1,1,0}.如果某次事件的时延序列变为:{0,30,1,0},在事件2的位置时间间隔超出了正常序列执行的时间范围,则在事件2的位置存在的异常类型为时延异常.
本文提出了一种融合引起日志异常的多个特征的方法进行日志异常检测,用于检测日志中的序列异常,该异常检测方法包含以下3个步骤:
1)事件模板的预训练表示及序列生成:通过日志解析[16]将无结构的日志解析为半结构化的事件模板,通过预训练模型对模板进行向量表示,提取模板的语义信息,通过相邻两事件的时间间隔提取时间信息,最终生成事件序列、计数序列和时间序列.
2)多特征融合的学习模型:构建并训练基于预训练的日志多特征并行处理学习模型,通过特征融合学习日志的事件序列、计数序列和时间序列特征.
3)日志异常检测:通过对日志的不同特征设计相应的特征提取方法,利用并行处理学习模型进行日志的异常检测.
针对大规模无标注数据,LMFF利用Transformer和LSTM分别对日志不同特征的序列进行特征提取融合,检测潜在模式偏离正常日志序列,最终实现无监督日志异常检测.LMFF主要由三部分组成(如图3所示),日志数据的预处理部分,包括日志解析和模板的预训练m1、日志多特征向量的生成部分m2和对日志特征的提取融合部分m3.
图3 LMFF日志异常检测示意图Fig.3 Log anomaly detection framework of LMFF
大型服务器通常在系统运行期间会产生大量的日志数据用于故障诊断.日志数据记录了系统运行时的重要事件和运行状态.通过分析日志,操作人员可以更好地了解系统的状态,并对故障系统进行诊断.
如图4所示,该内容是由HDFS(Hadoop Distributed File System)生成的原始日志片段.原始日志是半结构化文本,包含了时间戳,消息级别,进程和组件等信息,日志内容由日志键和部分日志参数组成.日志解析通过删除变量参数(用<*>表示)并保留常量参数,并将每个日志消息转换为特定的事件模板.本文采用的日志解析算法为FT-Tree[17],是目前最先进的日志解析方法之一,在模板提取方面具有较高的准确性.
图4 LMFF日志异常检测示意图Fig.4 Example of HDFS logs and parsed results
由于大多数系统日志都是由系统的某些程序“print”出来的半结构化文本,可以利用或改进自然语言处理中的方法来检测日志异常.现有的无监督的方法是采用模板索引或者Word2Vec[18]的方法进行异常检测.如果只使用日志模板索引,可能会丢失有价值的信息,因为它们不能揭示日志的语义关系,而为了获取语义信息,现有的方法是利用Word2Vec将日志内容的单词进一步转换为向量,然后根据单词向量计算每个句子的表示向量.然而,Word2Vec对同一个单词产生了相同的嵌入.在很多情况下,一个单词根据它的位置和上下文可以有不同的意思.BERT是目前较好的一种深度学习表示模型,在大量的自然语言语料库上进行了预训练,充分利用了无标注语料的信息获得上下文语义.在本文的方法中,利用预先训练的BERT的特征提取函数来获取日志消息的语义信息.
如图5所示,通过日志解析得到日志模板之后,利用BERT模型将模板语句编码为具有固定特征的向量表示.该模型包含12层的Transformer编码器和每层的768个隐藏单元.本文中使用BERT的最后一层编码器产生的词嵌入,然后,通过计算一条日志模板的词嵌入累加之后的平均值来表示相应的模板嵌入,用于生成LMFF检测模型的输入.
图5 日志文本预训练示意图Fig.5 Pre-training of log texts
系统日志是由遵循严格的逻辑和控制规则生成的,而日志的序列是由系统运行产生的日志通过不同特征的解析得到相应的日志序列.
如图6所示,事件序列包含着日志的主要内容信息及执行路径信息,通过事件模板匹配原始日志内容得到相应的事件,通过滑动窗口划分数据生成训练和测试数据.计数序列是通过统计相应的窗口事件中每个事件出现的次数.事件序列的长度为窗口大小的值,而计数序列的长度为模板集合的长度值,系统某次运行的事件序列和计数序列分别为S={k1,…,kw,…,kw}和C={c1,…,ci,…cT}.其中kw∈K,kw表示序列的第w个事件,W为事件序列的长度,K为日志模板集合.ci为统计该事件序列下对应日志模板出现的次数,I为日志模板的长度.系统一次运行对应的时间序列由日志条目中的时间戳组成[13].对于时间戳组成的序列T={t1,…,tw,…,tw},通过取相邻两事件的时间差生成时间序列T′={0,…,tw-tw-1,…,tw-tw-1}.
图6 日志序列、时间序列和计数向量示例的示意图Fig.6 Example of log sequence,time sequence and Log count vector
本文从日志序列中的序列,定量和时延多个特征同时对系统进行异常检测,进而增强不同异常之间的关联关系,例如不同事件序列中存在某种恒定的统计关系对计数序列的影响,或者是不同时延对事件序列预测的影响,决定着异常检测的效果.
RNN由于其可以很好的保留历史信息,在序列检测中发挥着重要的角色,但是RNN的对于长距离的信息获取和并行处理都存在一定的问题.Transformer-Encoder和LSTM都是为了克服了基于RNN的模型的局限性而引入的.如图7所示,LMFF通过对事件模板利用预训练模型BERT来获取日志消息的语义信息,为了更好的理解日志的语义信息和序列信息,该方法利用Transformer-Encoder对日志事件向量进行特征提取,LSTM分别对计数序列和时间序列进行特征提取,然后拼接融合向量后输入分类器进行模型的训练.本节中简要介绍了新引入的的基于Transformer的特征提取模型,包括位置编码、Transformer的编码器以及LSTM特征提取器.
图7 LMFF模型结构图Fig.7 Model structure of the LMFF
3.4.1 Transformer-Encoder编码层
利用3.2节提出的模板预训练将解析后的模板映射为向量矩阵,即将模板映射为固定长度L的向量,则事件序列映射为N×L大小的向量矩阵,其中具有相似含义的日志模板彼此之间更接近.其中N为10即事件序列的长度,L为768.但是,这些向量不包含日志消息在日志序列中的相对应的位置信息,因此引入了位置编码来表示序列之间的位置信息.具体原理公式见公式(1)、公式(2):
PE(pos,2i)=sin(pos/100002i/d)
(1)
PE(pos,2i+1)=cos(pos/100002i/d)
(2)
其中,pos表示的是事件序列中模板的位置;i表示的是模板向量值的索引;d表示位置向量的特征.
LMFF对事件序列采用Transformer-Encoder模型进行特征提取,其中包含多头自注意力层和前馈神经网络层.通过多头注意力层计算每个具有不同注意力模式的日志信息的注意力评分矩阵,通过训练注意力层的Q和K来计算注意力分数,得到更多的上下文信息,然后通过前馈神经网络层得到不同注意力评分组合.多头注意力机制具体公式见公式(3)~公式(5):前馈神经网络层具体见公式(7):
(3)
(4)
Multihead(Q,K,V)=concat(headi)Wo
(5)
Transformer-Encoder通过残差连接和层归一化(Norm[19])加速模型收敛,然后通过前馈神经网络.计算公式见公式(6):
L=LayerNorm(X+Xattention)
(6)
F=Linear(ReLu(Linear(L)))
(7)
其中,残差连接是X+Xattention,X表示输入序列,Xattention表示X经过多头注意力处理后特征,LayerNorm为层归一化函数.
3.4.2 LSTM编码层
LSTM通过设置输入门、遗忘门、输出门3种门控机制很好的解决了RNN的长序列训练过程种的梯度消失和梯度爆炸问题.
利用3.2节得到的时间序列和计数序列分别作为LSTM的输入,每一个LSTM神经单元都有隐状态 和细胞状态 都被传入到下一个单元初始化其状态.通过门控机制得到原始序列向量的特征向量.具体公式见公式(8)~公式(13):
遗忘门:
ft=σ(Wf*[ht-1,xt]+bf)
(8)
其中,ft为遗忘门时刻的输出,t为门激活函数,σ为门激活函数,Wf为输入层到遗忘门的权重向量,ht-1为上一时刻隐藏层的状态,xt为t时刻网络的输入,bf为遗忘门的偏置,*代表卷积.
输入门:
it=σ(Wi*[ht-1,xt]+bi)
(9)
(10)
细胞状态更新:
(11)
其中,Ct为当前时刻细胞单元的的输出,×为向量元素相乘.
输出门:
ot=σ(W0*[ht-1,xt]+bo)
(12)
ht=ot×tanh(Ct)
(13)
其中,ot为输出门t时刻的输出,Wo为输入层到输出门的权重向量,bo为输出门的偏置,ht为时间序列和计数序列的隐藏层状态.
3.4.3 特征融合和分类层
特征融合主要是拼接通过Transformer-Encoder和LSTM特征提取后得到的3种特征向量,并采用Transformer-Encoder的思想设计的前馈神经网络来增强特征融合度和模型拟合能力,具体公式见公式(14)、公式(15):
ht=concat(hv,hc,ht)
(14)
H=Linear(ReLU(Linear(hi)))
(15)
其中H为经过前馈神经网络的输出,concat为拼接函数,hi为日志的多特征向量的拼接向量,hv为事件序列经过Transformer-Encoder提取的特征向量,hc为计数序列经过LSTM提取的特征向量,ht为时间序列经过LSTM提取的特征向量.
在分类层通过计算上一层的特征向量,将该特征向量转换为不同模板类别的概率,其公式见公式(16):
(16)
其中,kj表示序列的标签,也就是模板的类别,v,c,t分别表示事件序列,计数序列和时间序列,w表示模型的训练参数,n表示上一层特征的数量.
由于系统日志是由遵循严格的逻辑和控制规则生成的,因此正常的日志会有一定的顺序模式并且其下一个模板是可预测的.LMFF通过融合影响日志的路径,时延,定量中的多个特征进行日志的异常检测.具体步骤为:
训练阶段需要系统训练一小部分正常的日志数据,将其建模为多分类任务,其流程为:
第1步.对日志进行日志解析,通过预训练模型BERT得到具有语义信息的日志模板向量Sk={k1,…,kw,…kW}.
第2步.利用3.2节序列生成的方法得到事件序列Sk={k1,…,kw,…,kW}和时间序列St={t1,…,tw,…,tW}.则事件序列的模板向量为Vk={s1,…,sw,…,sW},sw是模板向量M中对应的向量,即sw=vw,vw∈M;时间序列St={t1,…,tw,…,tW}是事件序列相邻两模板间的时间差值.
第3步.通过滑动窗口h生成检测事件序列和对应的时间序列,即第2步的事件序列和时间序列的子序列,Hk={kw,…,kw+1,…,kw+h-1}和Ht={tw,tw+1,…,kw+h-1}.例如,假设一条正常日志事件序列为{k1,k2,k3,k4,k5},其时间序列为{t1,t2,t3,t4,t5},设窗口h大小为3,生成模型的输入和输出为{k1,k2,k3→k4,t1,t2,t3→t4},{k2,k3,k4→k5,t2,t3,t4→t5}.
第4步.生成与事件序列的子序列Hk相对应的预训练向量Hv={sw,sw+1,…,sw+h-1}和计数向量Hc={c1,c2…,cI}.假设模板的长度为5,事件子序列为{k1,k2,k1},则生成的计数向量为{2,1,0,0,0}.
第5步.将Hv,Ht,Hc输入LMFF,输出下一个位置kw+h的每一个模板向量vi∈M发生的概率值.
异常检测阶段的流程为:
第1步.因为程序的执行流程一般都是固定的,所以其下一个位置的值是可预测的.按照训练阶段的第1步至第4步生成模型所需输入的向量.
第2步.模型对输入的序列进行预测,给出每一个模板向量在该位置出现的概率,并对其进行排序.确定排序最高的N个模板,N是由模型训练得到的.
第3步.进行日志异常检测,即判断实际发生的事件kw+h是否在预测模板的topN中,如果不存在则认为日志出现异常.
本节介绍LMFF深度异常检测模型在日志异常检测方面的可行性.实验以主流的日志异常检测模型为基准实验,使用HDFS和OpenStack两个数据集作为实验数据,验证模型的准确率和适用性.实验所涉及深度学习模型均基于Pytorch编程框架实现.
本文选取了2个日志数据集,分别为HDFS数据集和OpensStak数据集,通过数据集的实验结果来验证模型的实用性.
HDFS是基于Hadoop的map-reduce作业产生的日志数据集,包含了从Amazon EC2平台的Hadoop分布式文件系统收集的11,175,629条日志信息,每条信息包含时间戳(年月日,时分秒)、PID,消息内容等字段.HDFS系统中的程程序执行通常会涉及到日志块(Block),每组会话对应着一个日志块,数据集中有575061块日志块,其中16838块被Hadoop领域专家标记为异常.日志经过日志解析后共包含49个模板.本文将正常的日志数据经过数据处理后提取出事件序列,计数序列和时间序列,并将其打乱,其中6%作为训练数据,其余的94%和异常的日志数据共同作为测试数据.由于数据集是经过人工标注的,因此可以以这些标注作为评价的依据.
OpenStack数据集是在CloudLab上产生的日志数据集,包含207820条日志信息.主要内容为执行虚拟机相关任务,与HDFS相似,OpenStack数据集中通过instance_id进行会话的划分.数据集中有2043条日志实例,其中198条被作为异常数据.日志经过日志解析后共包含19个模板.与HDFS的处理方式一样,将20%的数据作为训练数据,其余80%的和异常数据集作为测试据,用于模型的验证.
由于正常日志数据要远远大于异常日志数据,为了避免出现对全部测试数据预测为正常而导致高准确的现象,本文所采用的评价指标主要有如下几种:
1)精准率(Precision,P)表示实际为异常的日志数据占检测出异常的日志数据的比例,计算公式如公式(17)所示:
(17)
2)召回率(Recall,R)表示正确检测出异常的日志数据占异常的日志数据的比例,计算公式如公式(18)所示:
(18)
3)F1值(F-measure)是精确率和召回率的调和平均数,综合评价异常检测的整体性能,计算公式如公式(19)所示:
(19)
其中,TP表示异常数据被正确的检测为异常的数量,TN表示正常数据被正确的检测为正常的数量,FP表示异常数据被错误的检测为正常的数量,FN表示正常数据被错误的检测为异常的数量.
本节设计分析基于预训练的日志多特征异常检测模型检测异常能力的两组对比实验:将基于预训练的日志多特征融合的异常检测模型和PCA、deepLog和LogAnomaly在HDFS和OpensStak数据集上的异常检测效果的实验进行比较;对基于预训练的日志多特征异常检测模型进行消融实验.
实验 1.将基于预训练的日志多特征融合的异常检测模型和PCA、Deeplog和LogAnomaly在HDFS数据集和OpenStack数据集上的异常检测效果的实验进行比较;如表1所示为 PCA、DeepLog、LogAnomaly和基于预训练的日志多特征异常检测模型在数据集上的异常检测效果.从Recall中可以发现,本文模型在检测异常日志数据中有较好的效果,相较于传统的PCA模型和深度学习模型在HDFS数据集上分别提高了36%和6%,OpenStack数据集上分别提高了20%和6%.从Precision中可以看出,DeepLog在HDFS和OpenStack数据集上分别约为96%和98%.从F1中可以看出,本文模型在4种方法中获得了最好的F1值,在HDFS和OpenStack数据集上的平均得分分别约为96%和99%,PCA在日志异常检测方面的性能较差.PCA和DeepLog都是利用日志模板的索引(忽略了模板的语义信息)来学习日志的正常模式和异常模式.本文模型利用BERT模型对日志模板进行预训练来增强模板间的语义信息,并从日志的事件序列,计数序列和时间序列多个特征进行日志异常检测,最终获得较高的F1值,说明了本模型进行序列异常检测的有效性.
实验 2.对基于预训练的日志多特征异常检测模型进行消融实验.为了评价本文模型相较于其它模型的优势,通过消融本文模型的部分结构以研究其对于模型的价值,本文对HDFS的数据集进行消融实验分析:
1)通过基于日志模板ID的模型和基于日志模板预训练的模型的实验对比,实验结果如表2所示.
表2 模板预训练对异常检测准确率的影响Table 2 Influence of template pretraining on anomaly detection accuracy
结果分析,经过预训练的模板向量的模型召回率和F1值指标分别高于自然编码模板向量3%和1%,由此可见模板的预训练对模型的性能存在着积极影响.本文模型采用模板预训练来学习日志模板间的语义信息,有效的减少了日志的误报,这是因为基于Transformer-encoder的预训练模板向量相较于模板索引向量更能凸显日志语料的信息特征,适合本模型的输入.
2)通过基于事件序列的模型,基于事件序列、时间序列的特征融合模型和基于事件序列、计数序列的特征融合模型的实验对比,实验结果如表3所示.
表3 日志的部分特征融合对异常检测准确率的影响Table 3 Influence of log partial feature fusion on anomaly detection accuracy
由结果分析,基于事件,时间序列的模型的召回率和F1值要高于事件序列模型,由此可见时间序列特征对模型的性能存在着积极影响,时延异常也是日志异常中存在的一种异常.基于时间,计数序列的模型的召回率和F1值要高于事件序列模型,虽然没有加时间序列的模型影响大,但是也反映了日志中存在的定量(计数向量表示)异常.
由于模型多特征的加入,模型进行异常检测的覆盖面会增加,所以模型的召回率会提升.而模型在精确率上均略低于模板ID的模型,分析存在的可能是:1)加入特征后,特征维度升高,提高预测难度,而造成精确率降低;2)由于时间间隔都很小,对数值比较敏感,而造成误判导致精确率降低.针对精确率降低的原因,可以通过降维和设置阈值降低时间数值灵敏度而提升精确率,这也是本文以后继续研究的问题.
本文改进了以上两组实验结果表明,相较于同等深度学习模型,基于预训练的日志多特征融合的异常检测模型达到了较好的效果,从而验证模型的有效性.
实验 3.基于HDFS数据集进行Deeplog、LogAnomaly和LMFF的时耗性能对比分析.本实验所采用的实验操作系统为Ubuntu 18.04.3 LTS,GPU为Tesla V100-SXM2-16GB,滑动窗口为10.为保证时耗的一直性,Deeplog、LogAnomaly和LMFF将在同一实验环境下进行.本实验将基于HDFS数据集进行时耗性能分析,本实验对524730条日志进行异常检测.实验结果如表4所示.
表4 模型进行异常检测的时耗对比Table 4 Time consumption comparison of anomaly detection in the model
结果分析,LMFF的日志处理速度要低于Deeplog和LogAnomaly.LogAnomaly处理速度Deeplog的原因是由于引入计数向量,导致模型的训练参数增大,而导致模型对于日志的处理速度减慢.LMFF处理日志的速度低于两者的主要原因有如下几点:1)模型的输入由于BERT的引入由1维向量变为768维增大了模型的参数;2)模型引入计数向量和时间向量导致训练参数增大;3)Transformer-encoder中的参数和其多头注意力机制导致模型参数远大于lstm中的参数.
LMFF虽然在指标评估上高于Deeplog和LogAnomaly,但是在日志的处理时效上要低于Deeplog和LogAnomaly.因此LMFF适用于对日志处理指标高的任务,在对日志处理时耗要求高的任务中存在不足,也是本文以后继续需要改进和研究的问题.
当下深度学习技术发展迅速,借于诸多学者关于深度学习技术在日志异常检测领域的研究基础[20],本文提出一种基于预训练的日志多特征异常检测模型(LMFF),可以同时检测系统日志中的序列异常,定量异常和时延异常.该方法利用BERT预训练语言模型提取日志模板的语义信息,进而增强日志信息间的联系;通过序列生成的方法分别生成事件序列,计数序列和时间序列,经过特征提取器对日志的事件序列、时间序列和计数序列进行特征提取,进而从日志的多个特征进行异常检测.实验结果表明本文的模型在异常检测方面取得了较好的效果.在下一步的工作中考虑日志参数的异常对日志模型存在的影响,同时改进模型针对日志文本的表征使其可以更全面的检测日志中的异常.