基于集成学习的系统日志异常检测方法

文档序号:30606669发布日期:2022-07-01 22:38阅读:346来源:国知局
基于集成学习的系统日志异常检测方法

1.本发明涉及计算机技术领域,更具体说是涉及一种基于集成学习的系统日志异常检测方法。


背景技术:

2.随着计算机技术和人工智能的发展,互联网产生了大量拥有各种功能的系统,大规模系统被应用于各行各业中,所能提供的服务也变得多样化,服务的质量极大地影响了用户的使用体验。然而,计算机软硬件存在不稳定性,系统在运行过程中会产生各种各样的错误导致宕机。另一方面,当前的网络环境极其复杂,各种新式的针对计算机系统的攻击事件层出不穷,在遭受外部攻击时网络安全员无法及时采取有效的预防和补救措施,导致系统崩溃。这两种情况都会对服务提供商造成不可估量的损失。越来越多的机构和研究致力于通过计算机系统中现有信息来检测系统是否存在异常情况,以便及时采取有效的措施进行规避风险。系统日志异常检测能够发现系统的异常行为,是建立可靠的计算机系统的重要任务,在系统故障诊断、问题诊断、软件开发和软件正常运行等领域起到关键作用。因此,系统日志异常检测越来越具有挑战性和重要意义。
3.系统日志异常检测主要包括日志采集、日志解析、特征提取和异常检测。日志采集、日志解析和特征提取已得到了很好的研究。在本发明中,着重讨论了异常检测集成的细节。异常检测算法根据是否有带标注的训练数据分为有监督异常检测和无监督异常检测。有监督的异常检测模型准确度往往依赖训练数据的标注数量和准确,常见的监督方法有逻辑回归、决策树(decisiontree)和支持向量机(svm)等。无监督的异常检测方法包括各种聚类方法、关联规则挖掘、主成分分析(principalcomponentsanalysis,pca)和logcluster方法等。近年也有学者将深度学习应用于异常检测领域,基于长短时记忆网络(lstm)的深度学习模型deeplog、loganomaly。本发明选择decisiontree模型,isolationforest模型, invariantsminer模型,logclustering模型作为我们的基本模型,然后使用投票融合方法。选择这些方法背后的原因是它们的易于实现。最重要的是,将这些方法进行集成似乎比其他方法更有效。
4.目前国内外尚无使用多个简单的系统日志异常检测模型组合来提升准确率,为此,设计了基于集成学习的系统日志异常检测方法。该系统通过多项日志检测模型分别对系统的日志数据进行检测,并对多个检测结果进行投票融合,从而能够及时发现系统日志中记录的异常模式。提升了模型的准确率,降低了人工成本和时间成本,帮助人们快速的发现异常,具有实现意义和良好的应用前景。


技术实现要素:

5.本发明目的是提供一种系统日志异常检测的方法,以解决如何根据系统现有日志及时发现异常,帮助人工完成快速的异常筛查的问题,以便满足维护系统的软件开发和正常运行的需求,解决如何提高检测异常的准确性的问题。
6.为了解决以上所述问题,本发明提出了一种基于集成学习的系统日志异常检测方法,结合四种简单的异常检测模型,对四种模型的输出进行投票融合然后输出最终的检测结果,充分利用了四种模型的优势,使的最终的检测结果的误差小于它们任何一个模型,提高了检测准确度。包括:
7.步骤1:解析获取到的原始日志数据,得到需检测的日志序列,并划分训练集。
8.步骤2:将系统日志解析完的日志数据特征化为数字形式的特征向量,也就是将字符串转化为可量化的数字,从而构造矩阵作为特征向量。
9.步骤3:采用decision tree模型对完成特征提取的训练集进行训练,把训练好的模型保存为模型一,用模型一进行检测,得到检测结果,保存为检测结果一。
10.步骤4:采用isolation forest模型对完成特征提取的训练集进行训练,把训练好的模型保存为模型二,用模型二进行检测,得到检测结果,保存为检测结果二。
11.步骤5:采用invariantsminer模型对完成特征提取的训练集进行训练,把训练好的模型保存为模型三,用模型三进行检测,得到检测结果,保存为检测结果三。
12.步骤6:采用logclustering模型对完成特征提取的训练集进行训练,把训练好的模型保存为模型四,用模型四进行检测,得到检测结果,保存为检测结果四。
13.所述步骤3、步骤4、步骤5和所述步骤6顺序不分先后。
14.步骤7:对系统日志异常检测模型输出的结果一、结果二、结果三和结果四进行投票融合,并输出系统日志异常检测的结果。
15.可选的,所述步骤1中,得到需检测的系统日志序列方法包括:drain算法。
16.可选的,所述步骤1中使用drain算法时,树的深度设置为4,相似性阈值设置为 0.5。
17.可选的,所述步骤2中,将数据特征化为数字形式的特征向量的方法包括:tf-idf 算法。
18.可选的,所述步骤3、步骤4、步骤5和步骤6中使用的是同样的数据集划分的训练集,然后使用decision tree模型、isolation forest模型、invariantsminer模型和 logclustering模型并行运行分别得到结果一、结果二、结果三和结果四。
19.可选的,所述步骤3中使用decision tree模型时,创建一个树形结构图,使用每个分支来说明每个实例的分类结果。
20.可选的,所述步骤4中使用isolation forest模型时,也需创建一个树形结构,但其树形结构过程比创建步骤3中的要容易,是一个完全随机的过程。在构建isolation forest中树的时候,异常点距离根节点较近,而正常点距离根节点较远。设置contamination=0.03(数据集中异常值的比例)可以提高准确性。
21.更可选的,所述步骤5中使用invariantsminer模型时,需要寻找正常日志的不变量,根据不变量来判断新输入的日志数据是否为异常点。设置percentage=0.98(满足条件的样本百分比),epsilon=0.5(估计不变量空间的阈值)用于寻找不变量。
22.更可选的,所述步骤6中使用logclustering模型时新建一个集合用于存放频繁词,设置max_dist=0.3(停止聚类过程的阈值),anomaly_threshold=0.3(异常检测的阈值)用于保留异常日志数据。
23.更可选的,所述步骤7中投票融合方法使用的少数服从多数的原则,若2个及以上
模型认为该条系统日志为异常,则系统认定为异常,反之则为正常。
24.与现有的技术相比,本发明的提升和优势在于:
25.一、对现有的系统日志异常检测技术进行创新,吸取decisiontree模型, isolationforest模型,invariantsminer模型,logclustering模型的优势,进一步提高了预测结果的准确性。
26.二、应用于系统日志的异常检测中,满足了维护系统开发和正常运行的需求,能够及时发现系统日志中的异常,以便对系统的异常进行部署,帮助人工完成快速的异常筛查,节约了人力成本和时间成本,具有很好的实用价值和应用前景。
附图说明
27.为了更清楚的说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,可以获得更多其他的附图。
28.图1为本说明书实施例提供的一种系统日志异常检测方法的流程图。
29.图2为本说明书实施例系统日志解析过程的数据展示图例。
30.图3为本说明书实施例机器学习的决策树结构图。
31.图4为本说明书实施例isolationforest中建立的itree结构图。
32.图5为本说明书实施例invariantsminer模型的流程图。
33.图6为本说明书实施例logclustering模型的流程图。
34.图7为本说明书实施例遵循的检测方法流程图。
具体实施方式
35.下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述。此处所描述的具体实施例仅用以解释本发明的实施,不限定本发明。
36.在可选的实施例中,图1示例性地展示了一种基于集成学习的系统日志异常检测方法流程。
37.1.日志数据收集
38.首先获取系统的日志数据,目标数据可以来自任何需要进行系统日志异常检测的系统。本说明书实施例选用的是从分布式系统收集的hdfs数据。
39.2.日志解析,并建立训练集和测试集
40.系统日志本身是半结构的文本,日志分为日志常量和日志变量。日志常量即日志键由固定文本字符串组成,是消息日志的模板。日志变量即日志参数,日志参数记录了一些系统属性。日志解析的目的是从事件中提取变量,然后将其余常量部分保留为模板。日志解析部分我们使用了目前性能比较好的drain算法,一个在线的日志模板提取方法。drain的核心思想是基于日志数据构建一个固定深度的解析树,这个树里蕴含了具体的模板提取规则。
41.样本带有标签,其中,训练集的日志数据均为正常情况下的日志,测试集中的日志数据存在异常。
42.3.特征提取
43.在系统日志解析完成后,已经得到系统的结构化日志,但是此时日志键还只是字符串的形式,参数列表元素也还是字符串,无法直接作为深度学习模型的输入,所以还需要将其特征化为数字形式的特征向量。特征提取的过程就是将字符串中转换为可量化的数字,从而构造矩阵作为特征向量。
44.当前业内存在多种提取策略,本发明采用较为常用的tf-idf方法。tf-idf是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。tf-idf向量只用了简单的统计和计算便表示出了词在文章中的重要性权重。
45.下一步就是进行模型的构架,分别是decisiontree模型,isolationforest模型,invariantsminer模型和logclustering模型的构建,在此过程中,它们的进行并无必须要求的先后顺序。为了清晰的表现出该发明的具体流程以及为了更好的表达,该实施例拟定了先后顺序:(步骤一)decisiontree模型构建、训练和测试;(步骤二)isolationforest模型的构建、训练和测试;(步骤三)invariantsminer模型构建、训练和测试;(步骤四) logclustering模型构建、训练和测试。
46.4.(步骤一)decisiontree模型构建、训练和测试
47.如图3所示为实施例构建的机器学习的决策树模型,使用系统日志数据作为输入,经过分类器,最终输出系统日志的标签结果。该实施例选用decisiontreeclassifier作为分类器。决策树是最简单的机器学习算法,它易于实现,可解释性强,完全符合人类的直观思维,有着广泛的应用。预测时,在树的内部节点处用某一属性值进行判断,根据判断结果决定进入哪个分支节点,直到到达叶节点处,得到分类结果。这是一种基于if-then-else规则的有监督学习算法,决策树的这些规则通过训练得到,而不是人工制定的。
48.5.(步骤二)isolationforest模型的构建、训练和测试
49.isolationforest算法(后面简称iforest算法)得益于随机森林的思想,与随机森林由大量决策树组成一样,iforest森林也由大量的二叉树组成,iforest中的树叫isolation tree,简称itree,itree树和决策树不太一样,其构建过程也比决策树简单,是一个完全随机的过程。
50.需要说明的是,假设数据集有n条数据,构建一颗itree时,从n条数据中均匀抽样(一般是无放回抽样)出n个样本出来,作为这棵树的训练样本。在样本中,随机选出一个特征,并在这个特征的所有值范围内(最小值和最大值之间)随机选一个值,对样本进行二叉划分,将样本中小于该值的划分到节点的左边,大于等于该值的划分到节点的右边。由此得到一个分裂条件和左右两边的数据集,然后分别在左右两边的数据集上重复上面的过程,直到数据集只有一条记录或者达到了树的限定高度。
51.如图4所示,展示了模型的itree结构图,深灰色表示标签正常的系统日志,浅灰色色的表示标签异常的系统日志,本说明书实施例用相同的数据集在iforest模型上进行实验,输入系统日志数据,然后预测该日志的标签是否异常。
52.需要说明的是,由于异常数据较小且特征值和正常数据差别很大。因此,构建itree 的时候,异常数据离根更近,而正常数据离根更远。一颗itree的结果往往不可信,iforest 算法通过多次抽样,构建多颗二叉树。最后整合所有树的结果,并取平均深度作为
最终的输出深度,由此计算数据点的异常分支。
53.6.(步骤三)invariantsminer模型构建、训练和测试
54.图5所示为实施例invariantsminer模型的流程图。首先输入到模型中正常的系统日志,会自动发现一组参数是否对应于相同的程序变量。然后,将包含相同程序变量的相同值的日志消息分组在一起。例如,包含相同请求id值的日志消息将被分组在一起。如上所述,将日志消息划分为一些密切的与内部相关的组可以大大降低计算成本。对于每个消息组,计算每个消息类型的日志消息数,以获得用于进一步处理的消息计数向量。接下来,尝试为每种类型的日志消息组找到一个紧凑的稀疏整数不变集。根据相同的程序变量提取的消息组被认为是相同类型的组。应用所得到的不变量集来检测异常情况。
55.模型创建好后,输入测试集,测试集中违反不变量的对数序列被标记为异常,最后输出测试结果。
56.7.(步骤四)logclustering模型构建、训练和测试
57.图6所示为实施例logclustering模型的流程图。其中,l=[l1,l2...ln]是文本事件日志,由n行组成,每行li(1《=i《=n)是事件的完全表征,i是行唯一标识;每行li是k 个词的序列,li=(wi1,wi2,...wik)。logclustering模型使用支持阈值 max_dist(0《=max_dist《=1)作为输入参数,将日志划分到c1,c2,...cm簇中,每簇至少 max_dist
×
n条日志,o 是离群簇。该模型使用划分好的训练集进行训练创建频繁词集合,并根据频繁词集合创建日志聚类候选簇;然后将测试集的日志作为输入,经过训练好的logclustering模型,可得到未聚类的日志;最终输出检测结果。
[0058]
需要注意的是,在创建频繁词集合时,该模型考虑日志中的每个词但是不包括位置信息。未聚类的日志即为异常日志。
[0059]
8.投票融合,并输出结果
[0060]
本说明书实例设计了如下公式:
[0061]
yt=x1+x2+x3+x4[0062]
其中,x1为检测结果一、x2为检测结果二、x3为检测结果三、x4为检测结果四、yt 表示预测值。本说明书实施例将加载x1、x2、x3、x4,输出最终的检测结果yt并保存。
[0063]
综上所述,本发明的具体流程如图7,首先获取系统的日志数据数据,其次进行日志解析并划分训练集和测试集;然后进行特征提取;之后依次在decisiontree模型、 isolationforest模型、invariantsminer模型和logclustering模型上进行训练,然后用测试集分别在训练好的模型上测试,并分别保存预测结果为结果一、结果二、结果三和结果四;最后进行投票融合并输出检测结果。通过计算证明,这种结合多种简单系统日志异常检测的方法对比单个系统日志异常检测,其预测准确度都有进一步的提升。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1