本发明属于操作系统或软件系统中日志异常检测,特别涉及一种融合序列与模板语义的无监督日志异常检测方法。
背景技术:
1、随着现代计算机和通信技术的发展,网络规模逐渐扩大,同样各种系统也层出不穷,伴随而来的是网络攻击手段也变得越来越隐蔽和高级化。系统日志数据作为系统运行状态的记录文件,记录了各种系统组件的运行情况、用户操作行为、网络流量等重要信息。因此对日志数据信息的挖掘和分析变得越来越重要。通过分析这些日志数据,可以帮助管理员和工程师及时发现系统潜在的问题、异常行为或安全威胁,从而采取相应的措施,维护系统的稳定、减少系统宕机、服务中断和性能问题。大规模的日志数据对异常检测发起了挑战,需要高效的日志异常检测技术来应对这个挑战。
2、传统的日志异常检测技术,主要依靠开发人员利用自身的领域知识,手动地检查系统日志排查系统异常。系统日志中通常包含时间戳、组件信息、进程号、具体内容、参数值等信息。这个时候,完全依靠手动进行正则匹配或者字符串查找是不现实的,因此,目前基于机器学习和深度学习的日志异常检测方法凭借着高效的检测效率和准确性,应用越来越广泛。
3、现有文献中日志异常检测算法大多数考虑日志数据的单一特征,通过从海量的日志数据中提取日志模板,对日志模板进行编号构建模板序列。挖掘日志信息中的单一特征,如序列特征或者语义特征。其次对于语义信息的利用,不能充分利用日志的上下文信息,其中对单个模板语义信息提取不充分而且没有综合考虑日志模板与日志模板之间的局部与全局的语义相关性。
4、如deeplog中对日志索引进行建模,采用lstm神经网络学习正常日志序列之间的关系来进行异常检测,这种对日志索引进行建模的方式忽视了日志本身的语义信息。logrobust运用了语义信息,使用fasttext结合tf-idf获得整个日志模板的向量表示,使用基于注意力机制的bi-lstm模型进行异常检测。这种方式采取的是静态词向量表示,无法解决日志中一词多义的问题。同时没有充分利用日志模板序列语义信息,提取了日志模板序列的全局上下文特征,没有综合考虑日志模板序列语义信息的局部依赖特征与全局上下文特征。在系统发生异常时,产生的异常类别可能是单条日志异常或者执行流的序列异常,现实中系统可能受到攻击导致某个事件的连续发生就会产生连续相同的日志消息,这个时候需要提取局部依赖特征才能捕捉到该异常。或是只有在日志序列中开头和结尾同时出现某日志才会发生异常,这个时候需要考虑全局上下文特征。此时logrobust就不能充分考虑到日志模板序列间的局部异常。此外现有技术大都存在对语义信息利用不充分的问题,这在一定程度上会对异常检测的性能产生影响。
技术实现思路
1、针对现有技术的不足,本发明拟解决的技术问题是,提供一种融合序列与模板语义的无监督日志异常检测方法,以便满足维护系统的软件开发和正常运行的需求,提高异常检测性能。
2、本发明解决所述技术问题采用的技术方案是:
3、一种融合序列与模板语义的无监督日志异常检测方法,所述检测方法的过程是:
4、获取原始日志数据,并进行日志解析提取日志模板,采用窗口技术对日志进行分组提取序列特征,获取日志模板的模板id序列向量,同时采用预训练的bert模型进行日志模板序列语义的提取,获得模板序列语义向量;
5、构建日志异常检测模型,所述日志异常检测模型包括第一tcn网络、第二tcn网络、bi-gru网络、注意力模块,第一tcn网络的输入为模板id序列向量,输出为序列特征;第二tcn网络和bi-gru网络的输入均为模板序列语义向量,分别用于提取模板序列语义向量的局部特征和全局特征,局部特征和全局特征经注意力模块进行特征融合后,再与序列特征进行特征拼接操作,之后经全连接层和softmax处理后,进一步获得异常检测结果。
6、进一步地,所述注意力模块对局部特征m与全局特征h进行加权求和,以强化对重要特征的关注,具体过程是:对于全局特征的注意力分配权重αh公式为:
7、αh=vhtanh(ωh*h+b)
8、其中,vh表示查询向量,ωh表示权重矩阵,b为偏置项;
9、同理求得局部特征m的注意力分配权重αm以及拼接特征hsem的交互注意力权重αhm,其中,拼接特征hsem=concat(h,m);
10、然后将这三个权重按照下式进行归一化操作:
11、
12、其中,ph表示日志模板语义全局特征的注意力分数,pm表示日志模板语义局部特征的注意力分数,phm表示全局和局部特征交互的注意力分数;
13、将这三部分进行加权求和得到最后的日志模板序列语义特征表示s:
14、s=phh+pmm+phmhsem
15、最后的日志模板序列语义特征表示s记为hs。
16、进一步地,所述第一tcn网络采用堆叠五层残差块进行特征提取;所述第二tcn网络采用堆叠三层残差块进行特征提取;
17、所述残差块包含两层膨胀卷积层和两层gelu非线性映射,在每个膨胀卷积层后都有一个权重归一化层和dropout层用来正则化网络,残差块的输入分成两个分支,第一个分支依次经膨胀卷积层、权重归一化层、gelu非线性映射、dropout层、膨胀卷积层、权重归一化层、gelu非线性映射、dropout层获得第一个分支的输出;第二个分支经过1×1卷积处理后与第一个分支的输出进行残差连接,获得一个残差块的输出。
18、进一步地,采用无监督的方式,使用正常的日志序列数据进行训练,在训练阶段,训练用的标签在划分日志序列时,将每个正常日志序列的下一条日志模板类别作为训练的标签;设定epoch,通过最小化loss来进行模型训练学习日志的正常模式;
19、在预测阶段,将经过数据预处理和分组后日志向量化后的日志序列输入训练好的日志异常检测模型,对输入序列进行预测,给出输入序列下一位置中每个日志模板类别的预测概率,并按预测概率进行排序,确定排序最高的a个日志模板为预测模板,因为程序并发性的特点,正常的日志序列的下一条日志可能有多种可能;
20、然后判断实际发生的日志事件是否在top-a的预测模板中,如果存在则判断其是正常的日志事件,且当前序列是正常的日志序列,如果不存在则认为日志发生异常且日志序列也为异常;
21、采用交叉熵函数作为计算训练的损失函数,
22、l=linear(relu(linear(hi)))
23、p=softmax(w*l+c)
24、
25、其中,hi为序列特征和日志模板序列语义特征表示拼接后的结果;linear代表的是线性层,relu表示激活函数;l表示全连接层的输出,p代表输入的日志序列属于某类日志模板的概率,w表示softmax层的权重参数,c表示softmax层的偏置项;n表示一个批次内日志的总数,yi表示第i个日志序列的标签,pi表示预测的第i个日志序列属于某类日志模板的概率。
26、进一步地,日志序列是用日志模板的id对应原始日志条目的id组成的序列。
27、与现有技术相比,本发明的有益效果是:
28、本发明分别提取日志的序列特征与语义特征,采取第一tcn网络提取日志序列特征,采用第二tcn网络和bi-gru网络并行处理联合提取日志模板语义特征,有助于缓解原始tcn出现不可逆的信息损失,使得损失信息更少且模型更平滑,并使得语义特征的提取更充分,综合考虑了日志模板序列的全局上下文依赖特征与短距离尺度上的局部依赖特征,更细粒度的表征了语义特征。本发明不仅对单个日志模板的语义特征进行了提取,同时提取了日志模板之间局部与全局的语义相关性,充分利用了日志的语义信息,增强了日志语义信息的表征,提高了日志异常检测的可靠性和准确性。
1.一种融合序列与模板语义的无监督日志异常检测方法,其特征在于,所述检测方法的过程是:
2.根据权利要求1所述的检测方法,其特征在于,所述注意力模块对局部特征m与全局特征h进行加权求和,以强化对重要特征的关注,具体过程是:对于全局特征的注意力分配权重αh公式为:
3.根据权利要求1所述的检测方法,其特征在于,所述第一tcn网络采用堆叠五层残差块进行特征提取;所述第二tcn网络采用堆叠三层残差块进行特征提取;
4.根据权利要求1所述的检测方法,其特征在于,采用无监督的方式,使用正常的日志序列数据进行训练,在训练阶段,训练用的标签在划分日志序列时,将每个正常日志序列的下一条日志模板类别作为训练的标签;设定epoch,通过最小化loss来进行模型训练学习日志的正常模式;
5.根据权利要求1所述的检测方法,其特征在于,日志序列是用日志模板的id对应原始日志条目的id组成的序列。