计算机工程与设计
COMPUTER ENGINEERING AND DESIGN
Apr. 2020Vol. 41 No. 4改进的基于日志聚类的异常检测方法冯士龙12,台宪青3+,马治杰1(1.中国科学院物联网研究发展中心 数据与服务研发中心,江苏无锡214135; 2.中国科学院大学
微电子学院,北京101407; 3.中国科学院电子学研究所苏州研究院地理空间信息系统研究室,
江苏苏州215121)摘 要:针对基于日志聚类的异常检测方法(LogCluster)处理的日志类型单一的问题,提出一种改进的基于LogCluster
的日志异常检测方法,SW-LogCluster。通过使用滑动窗口(sliding window)的方式将日志划分为日志序列,将划分后的 a志序列向量化来进行特征提取,使其既能检测带标记符的a志,也能检测不带标记符的a志,扩展原始方法的应用范
围。实验结果表明,SW-LogCluster方法能对所有类型的非结构化a志进行检测,有效扩展了 LogCluster方法的适用性。关键词:异常检测;滑动窗口; a志序列划分;a志聚类;a+向量化中图法分类号:TP309
文献标识号:A 文章编号:1000-7024 (2020) 04-1087-06doi: 10. 16208/j. issnl000-7024. 2020. 04. 031Improved log clustering-based anomaly detection methodFENG Shi-long12, TAI Xian-qing3+ , MA Zhi-ie1丄 Research and Development Center of Data and Service, Research and Development Center for Internet of Things ,
Chinese Academy of Sciences , Wuxi 214135 , China; 2. School of Microelectronics , University of Chinese
Academy of Sciences , Beijing 101407 , China; 3. Laboratory of Geospatial Information Systems ,Institute of Electronics , Chinese Academy of Sciences , Suzhou 215121 , China)Abstract: Regarding the problem that the log type resolved using the log clustering-based anomaly detection (LogCluster) is too
simple , an improved LogCluster-based log anomaly detection method , SW-LogCluster , was proposed. Logs were divided into log seIuencesusingaslidingwindow andthedividedlogseIuenceswerevectorizedforfeatureextraction sothatboththelabledlog and the non-labled log were detected , which extended the scope of application of the original method. Experimental results show
that the SW-LogCluster method can detect all types of unstructured logs , which effectively extends the applicability of the LogCluster methodKey words: anomaly detection; sliding window; log sequence division; log clustering; log vectorization究重点。基于机器学习的日志异常检测方法包括基于监督学习
2引言现如今,随着分布式系统规模的不断扩大,其复杂性
和基于无监督学习两种。基于监督学习的方法的优点是
也越来越高,因此给运维人员维护系统正常运行带来了严 峻的挑战m。系统运维人员通常利用系统产生的运行日志 来定位异常,但由于分布式系统产生的日志量较大,并且 不同的系统会采用不同的容错机制)],人工检索的方法耗
检测精确,但是需要使用提前进行标记的训练集进行模型 的训练,不适合实际生产环境。在无监督学习的方法中, 基于主成分分析 (principal components analysis, PCA)9*
和Invariants Mmg)0*是两种比较典型的方法。然而,由于
时耗力。近些年随着非结构化日志解析方法)35*和机器学习 前者对数据非常敏感,导致其检测的精度随数据集的不同
的发展,基于机器学习的日志异常检测方法成为了一个研 变化差异比较大;而后者是一种能够保证异常检测准确度收稿日期:2019-0213;修订日期:2019-04-02基金项目:中国科学院战略性先导科技专项(A类)基金项目(XDA 19080201)作者简介:冯士龙(1993 -) &男&河北石家庄人,硕士研究生&研究方向为大数据分析;+通讯作者:台宪青(1966 -) &男,北京人, 博士,研究员,研究方向为大数据与信息安全;马治杰(1987-),男&河南郑州人,博士,助理研究员,研究方向为物联网与大数据(
E-mail: taixianqing@ciotc.og・1088・计算机工程与设计骤,然后分析该方法的局限性。2020 年的方法,但是其检测过程十分耗时。因此,这两种方法在 实际
测中效果并不理想。LogCluster2是一种基于日测方法。
1.1方法概述志聚类 处理大量日志数据,该方法只
LogCluster方法主要分为两个阶段:构建阶段和生产 阶段,总体结构如图1所示。构建阶段和生产阶段均包含4
也能保证异常检测的精度的检测。但是LogCluster方法使
窗口的方 标
志 分组,
。测个步骤:日志解析、特征 、日志聚类和代表 志序志,限制了方法 。构建 通过 表 志 建知识志提取岀代表针对LogCluster方法的局限性,本文提岀了一种改进 的基于LogCluster
库。在生产阶段将实际生产环境中采集
志 ,然后
是否已经存
测方法,通过 窗口的识库中,如果方案反馈给 师,方式对日志进行划分,扩展 方法 范围,并且对识库中已经存在,那么将
改进的方法进行了相关的实验验证。否则将 识库 更新。1 LogCluster 介绍本节首先介绍LogCluster方法的整体结构以及主要步& 图1
别介绍日志解析、特征
LogCluster整体结构,我们分、日志聚类、代表 志 提取和重复性检查5个步骤。图1 LogCluster整体结构1.1.1日志解析现代系统的运行日志一般是指由系统生成的非结构化
日志文本& 志解析
静态消息和动态参 字段& 静
态消息字段也叫日志事件,表示每条日志的事件类型。日
目的是 始日志 志事件。LogCluster中日志解析采用基于聚类的日志关键字提
取技术(log key extraction, LKE)。图 2 展示了 LKE 方 法
析效果。图中上方为原始日志信息,下方分别为日志事件文本和标 与日志事件 结构化日志文本。1.1.2特征提取特征 并
temporary/ task 200811101024 m 000011 00011.blk_904791815409399662-0010 _ _ -O/part- 03:40:59 Receiving block blk 904791815409399662 src:/22008-11-1110.251.43.210:55700 dest: /10.251.43.210:50010 03:41:01 Receiving block blk 904791815409399662 src: /32008-11-1110.250.18.114:52231 dest: /10.250.18.114:50010 PacketResponder 0 for block blk_904791815409399662 42008-11-1103:41:48terminating2008-11-11 03:41:48 Received block blk 904791815409399662 of size 67108864 5from/10.250.18.114 03:41:48 PacketResponder 1 for block blk_904791815409399662 62008-11-11terminating2008-11-11 03:41:48 Received block blk 904791815409399662 of size 67108864 7from/10.251.43.210 —82008-11-1103:41:48 BLOCK* NameSystem.addStoredBlock: blockMap updated:10.251.43.210:50010 is added to blk_904791815409399662 size 67108864 BLOCK* NameSystem.addStoredBlock: blockMap updated:92008-11-1103:41:4810.250.18.114:50010is added to blk_904791815409399662 size 67108864102008-11-11 08:30:54 Verification succeeded for blk 9047918154093996621Log Events12008-11-11 03:40:58 BLOCK* NameSystem.allocateBlock: /user/root/randtxt4/
Raw Log Messages是将解析后的日志特征进行分析提取,志聚类。该
矢量化, 志划分将解析后的划分和日志矢量化两部分。日志
日志划分为多个日志序列。日志矢量化主要分为两步,首
先将日志 转化为日志事件计数向量,然后对向量进行
加权。日志特征提取流程如图3所示。日志序列划分:为了提取特征,首先需要将日志数据 分成
。 该方法
Event1Event2Event3Event4EventsEvent6BLOCK* NameSystem.allocateBlock: *Receiving block * src: * dest: *PacketResponder * for block * termiratingReceived block * of size * from *BLOCK* NameSystem.addStoredBlock:blockMap updated: * is added to * size *Verification succeeded for *12345678910Strutured Logsblk.904791815409399662 Eventlblk_904791815409399662 Event2bl<904791815409399662 Event2blk_904791815409399662 Event3blk_904791815409399562 Event4blk_904791815409399662 Event3blk_904791815409399662 Event4blk_904791815409399662 Eventsblk_904791815409399662 Eventsblk_904791815409399662 Event6窗口 将 志 为图2日志解析效果第41卷第4期冯士龙,台宪青,马治杰:改进的基于日志聚类的异常检测方法・1089・结构化日志1blk_904791815409399662blk_904791815409399662blk_904791815409399662算与知识库中存储的日志序列之间的相似度,如果知识库 中已经存在&那么将该日志序列对应的异常解决方案进行
EventlEvent2Event2反馈。将知识库中不存在的日志序列进行人工判断,然后
日志序列划分45blk_904791815409399662blk_904791815409399662blk_904791815409399662Event4Event6日志向量冏加权事件计数向量对知识库进行更新,从而减少人工检查的日志序列的数量。1.2局限性67EventlOEvent3blk_904791815415648154blk_904791815415648154blk_904791815415648154LogCluster方法虽然能有效的进行异常检测,并减少 人工检查的工作,但是在特征提取步骤采用了会话窗口的
89Even13方式进行日志序列的划分,这种方法使得LogCluster方法 只能处理带有标记符的日志。而对于日志本身不带有标识
图3日志特征提取的日志序列。会话窗口基于标识符,标识符用于标记某些 日志数据中的执行轨迹。例如,带有block—id的HDFS日
志会记录某些块的读写等操作。依据带有同一标记符的日 志代表同一会话的相关性,将日志根据标记符进行分组& 其中每一个会话窗口都有唯一的标记符。如图3中所展示
的,图中的日志都拥有相同的block_id,所以将含有blk_
904791815409399662 和含有 blk_904791815415648154 的日 志行都链接到一起,形成多组日志序列。日志矢量化:将日志事件序列转化为事件计数向量,
即日志事件序列中的每个日志事件岀现的次数。然后使用 基于 IDF)2* (inverse document frequency)和基于对比的方
法对事件计数向量进行加权,形成加权事件计数向量,如 图3所示。(1) 基于IDF的事件权重:如果一个日志事件频繁的
岀现在多个日志序列中,那么它的判别能力就低于只岀现 在少数日志序列中的事件。(2) 基于对比的事件权重:在实验环境和生产环境都
岀现了的事件对异常识别的判别能力不如只岀现在生产环
境中的事件,仅在生产环境岀现的事件更有可能反映异常, 因此应该具有更高的权值。1.1.3 志 V日志聚类主要是将特征提取步骤得到的加权事件计数
向量进行聚类。LogCluster计算日志序列之间的相似度, 然后采用层次聚类对相似的日志序列进行聚类,形成正常 和异常两种集群。1.1.4 表 志表 志
将 和 集群代表性日志序列,构建知识库。对于每个集群,通过选择 集群的质心来作为代表性日志序列。计算每个日志序列距 离集群内其它日志序列的平均距离,选择平均距离最小的
作为每个集群的代表性日志序列。1.1.5生产 产 生 志
表日志序列与知识库中的日志序列进行对比。采集生产阶段 产生的日志经过上述4个步骤后提取代表性日志序列,计
符或者无法后期为日志增加标记符的日志类型,该方法无 法进行特征提取。特征提取步骤的局限性影响了 LogClus
ter 方法的适用性。2 SW-LogCluster 介绍针对LogCluster异常检测方法的局限性,本文提岀了 一种改进的基于LogCluster的日志异常检测方法,即SW
(Sliding Window) —LogCluster。SW-LogCluster 通过采用 滑动窗口代替LogCluster的会话窗口,可以有效扩展Log- Cluster 方法的适用性。图4展示了 LogCluster与SW-LogCluster 方法的对比,SW-LogCluster采用与LogCluster相 同的整体结构,关键的区别在特征提取部分。特征提取分
为日志序列划分和日志矢量化两个步骤,LogCluster使用 会话窗口的方式进行日志序列划分窗口 方 志 划分(,而SW-LogCluster使
图 4 SW-LogCluster 与 LogCluster 方法对比滑动窗口方法是一种基于时间戳的序列划分方法,时
间戳记录每条日志产生的时间。窗口由两个属性组成:窗
口大小%T和步长 t %T表示每个窗口包含的时间间隔, F表示窗口每次滑动的时间间隔,如图5所示。窗口以步
长大小的时间段向后滑动。一般来说,我们设置步长小于
窗口大小,这样每次窗口滑动会形成不同窗口之间的重叠,
可以增加划分岀的日志序列,减少窗口覆盖不均匀产生
的误差。SW-LogCluster采用合适的窗口大小以及步长对日志・1090・计算机工程与设计2020 年3评估指标Ar1「I]「「「, __________本文主要采用Precision (精准率)、Recall (召回率)
和F_measure (综合评价标准)来作为评估指标。Precision表示检测岀来的正确异常占检测岀来的所有 异常的比例,计算公式为Precision *(A? ---------
冲+盯)
⑴Ar其中,TP为检测岀来的正确异常的数量;FP为将非异常 检测为异常的数量。Precision的值越高,说明异常检测方
图5滑动窗口进行划分&将同一个滑动窗口时间段内产生的日志划分为
一组日志序列,然后生成事件计数向量。图6为一个使用 滑动窗口划分日志序列并生成事件计数矩阵的实例,图中 左边为原始日志经过解析后生成的结构化日志,每个日志
行代表日志生成的时间和该行对应的日志事件。假设滑动 窗口的窗口大小为6 h,步长为lh,第一个窗口产生的 日志序列S1为第1行日志的时间到之后6 h内的日志行 代表的日志事件,即日志序列图中的第一行(由于事件
太多,没有完全展示)。第二个窗口根据步长向后滑动
1h, 产 生 第 个 志 S2 为 第 4 志 时 之后6 h内的日志行代表的日志事件,即日志序列图中 的第二行。然后进行日志向量化&将日志序列转换为事
件计数矩阵。图6滑动窗口划分日志序列实例通过我们的方法,能够有效的将原始日志解析后的结 构化日志进行划分,产生多组日志序列,进而应用到日志
向量化的步骤中。由于滑动窗口方法基于时间戳的特性, SW-LogCluster方法不仅可以应用于LogCluster方法针对
的带标记符的日志,还能有效的对不带标记符的日志进行 异常检测,在扩展LogCluster方法适用性的基础上保证异
常检测的效果。法检测岀的正确异常的准确率越高。Real表示检测岀来的正确异常占实验数据中所有异
比 , 计算 为Rppoll — ____(TP______
+FN %⑵其中,FN为将异常检测为非异常的数量。Recall的值越
高,说明异常检测方法将异常漏掉的比例越低。F_measure表示Precision和Recall两项指标的相对重
要程度,是Precision和Recall的加权调和平均)3*,是最重
要的一个评估指标。F_measure可通过如下公式计算F_measure(1 斗 律%$ 乂 $Precision Precision X + Recall Recall
(3)其中,$是参数。当0 $ 1时,精准率有更大的影响,当$〉1时,召回率有更大的影响。在本文的异常检测方法 中,既要保证非异常不能检测成异常(精准率),又要保证 异常不能检测为非异常(召回率)。假设Precision和Recall& $* 1& (3) 可表示为F_measure *2 Y Precision X Recall
Precision + Recall(4)4仿真验证本文实验使用Python语言进行LogCluster方法以及 SW-LogCluster方法的实现,实验日志数据采用了 HDFS
和BGL (BlueGene/L)日志集皿。每个实验分别进行20 次,并对实验结果评估指标取平均值。接下来,我们首先使用SW-LogCluster和LogCluster 方法对带标记符的日志(HDFS)进行对比实验,然后再验
证 SW-LogCluster 志 测 方 法
标 志(BGL)上的检测效果。通过两组实验验证SW-LogCluster
方法是否有效扩展了原方法的适用性。最后验证了滑动窗
口属性对SW-LogCluster方法的影响,并讨论窗口大小和
步长对SW-LogCluster方法产生的影响。4.1 LogCluster 与 SW-LogCluster 的对比实验采用50万条的HDFS日志的样本数据,分别使用 LogCluster方法和SW-LogCluster方法进行异常检测的平
均 Precision、Recall 和 F_measure 结果如图 7 所示。图 7 展示了各项指标(Precision, Recall, F_measure)第41卷第4期冯士龙,台宪青,马治杰:改进的基于日志聚类的异常检测方法后 方法 效 展 方法
・1091・。07 06 50 40 30 20 100
4・3滑动窗口对SW-LogCluster方法的影响本实验将研究滑动窗口中窗口大小和步长对SW-Log-
Cluster异常检测方法精度的影响。实验选取50万条的
BGL日志 作为 。实验结果解释 。图9展示了不同窗口大小对F_measure值的影响。在该
评估指标■I LogCluster = SW-LogCluster实验中,步长设为lh。由这幅图 可 ,随着窗口大小的不断增大,异常检测的综合指标F_measure的值越来
越大。这是因为在一定范围内,窗口越大就可以覆盖越多的 图 7 LogCluster 和 SW-LogCluster.
率 &召回率和F_measure方面的实验结果对比在使用LogCluster和SW-LogCluster方法时的平均值。由 图7我们可以看岀,SW-LogCluster方法在Precision和
F_measure两项指标上比LogCluster方法略小,但是在 Recall指标上稍大。SW-LogCluster方法的3项指标与Log- Cluster方法相差不多。实验结果表明SW-LogCluster方法
在带有标记的日志(HDFS)上基本能达到LogCluster方 法
测效果。4・2 SW-LogCluster方法验证本实验通过使用SW-LogCluster方法对不同规模BGL
日志集进行异常检测,以此来验证SW-LogCluster方法在
Precision Recall和F_measure这3项指标上的实验效果。图 8 展示了各项指标(Precision, Recall, F_measure)
在不同日志样本集规模(50万条,100万条,200万条和
400万条)时的平均值。由图8我们可以看岀,随着日志样
本集 断 ,3项指标 略微 ,并且 '在一个较为稳定的区间。3项指标的值与LogCluster方法在
HDFS日志上的实验结果基本相同。实验结果表明SW- LogCluster 在不带标记符的日志(BGL)上依然能达到 LogCluster
测效果。—♦— Precision —匚|— Recall —▲— F_measure图8 SW-LogCluster测试结果结合第4. 1节进行的实验,改进后的SW-LogCluster 方法 达 方法 测的效果,而且 测不带
标 志类型时也能达到理 测结果,说明改进信息,
一些小窗口覆盖信息
全的情况,提升日志划分效果,进而发现更准 测模式。实验结果表明,当步长固定时,窗口越大,
测的效果越好。图9 窗口大小对检测精度的影响图10展示了不同步长对F_measure值的影响。在该实
验中,窗口大小保持在6h。由这幅图我们可以看岀,随着 步长的变化,F_measure的值基本保持不变。这是因为步
窗口覆盖信息 必然 。实验结果表明,当窗口 固定时, 测的结果。图10步长对检测精度的影响5结束语本文针对LogCluster方法处理日志类型单一的问题,一 基 Cluster&SW-LogCluster 方法
志
测方法SW-Log-窗口 方法
・1092・计算机工程与设计2020 年话窗口对日志进行划分,能够将更多类型的日志划分为
的设计与实现)*•信息网络安全,2017, 17 (6): 6267」[7* AbdalahI, DertimanisV, MylonasH, etal\\Faultdiagnosis
ofwindturbinestructures using decisiontreelearning algo-
日志序列&方法的适用性得到扩展。本文对SW-Log- Chiser方法进行了设计实现和实验验证&结果表明&
SW-LogCluster 方法的 3 项评估指标(Precsion, Recall,
F_measure)与 LogCluster 方法相差不大,说明 SW-Log
rithmswithbigdata [J*\\Safetyand Reliability-SafeSocieties
inaChanging World, 2018: 3053-3061\\Cluster 方法在保证异常检测效果的基础上&有效扩展了
[8* TuncerO, AtesE, Zhang Y, etal\\Diagnosingperformance
variationsin HPCapplicationsusing machinelearning [C*// InternationalSupercomputingConference, 2017: 355-373\\原方法的适用性。参考文献:[9* Juvonen A, Sipola T, Hamalainen T, Online anomaly detcc-
tion using dimensionality reduction techniques for HTTP log
FuQ, Zhu J, Hu W, et al. Where do developers log? An empirical study on logging practices in industry [C* //Companion
Proceedingsofthe36thInternationalConferenceon Software
Engineering, ACM, 2014: 24-33,[2* Lin Q, Zhang H, Lou JG, et al. Log clustering based prob
lem identification for online service systems [C* //IEEE/ACM
InternationalConferenceonSoftwareEngineering Companion」 IEEE, 2016: 102111.[3* GaoY, HuangS, ParameswaranA\\Navigatingthedatalake
with datamaran\"Automatical y extracting structure from log datasets [C*//ProceedingsoftheInternationalConferenceon
ManagementofData\\ACM, 2018\"943-958\\[4* HeP, ZhuJ, ZhengZ, etal\\Drain\"Anonlinelogparsing
approachwithfixeddepthtree [C*//IEEEInternationalCon- ferenceon WebServices\\IEEE, 2017\\[5* HamooniH, DebnathB, XuJ, etal\\LogMine\"Fastpatern
recognitionforloganalytics [C*//CIKM\\ACM, 2016\\[6* ZHANG Xuebo, LIU Jinghao, FU Xiaomei\\Designandim-
plementationofantiWebDDoSatackmodelbasedonimproved Logisticregressionalgorithm [J*\\Information NetworkSecu
rity, 2017, 17 (6): 62-67 (in Chinese),[张雪博,刘敬浩,
付晓梅.基于改进Logistic回归算法的抗Web DDoS攻击模型analysis J*」ComputerNetworks, 2015, 91: 46-56」10* LouJG, QiangFU, YangS, etal」 Mininginvariantsfrom
console logs for system problem detection )C*//Proceedings
oftheUSENIXConferenceonUSENIXAnnualTechnicalCon- ference, 2010: 24」11* FuQ, LouJG, WangY, etal」Executionanomalydetection
in distributed systems through unstructured log analysis
)C* //9th IEEE International Conference on Data Mining」IEEEComputerSociety, 2009」12* CAOShan」Shorttextclassification methodbasedonTF-IDF
featureextraction J*」IndustrialControlComputer, 2018,
31 (4): 109-110 (in Chinese).[曹姗.基于 TF-DF 特征提
取的短文本分类方法)*」工业控制计算机,2018, 31 (4):
109110」[13* XIEJuanying, ZHOU Ying, WANG Mingzhao, etal\\New
indexesforclusteringefectivenessevaluation [J*\\Journalof InteligentSystems, 2017, 12 (6): 873-882 (in Chinese)\\[谢娟英,周颖&王明钊,等.聚类有效性评价新指标)*」
智能系统学报,2017, 12 (6): 873882」[14* ZhuJ, HeS, LiuJ, etal\\Toolsandbenchmarksforauto-
matedlog parsing [J*\\arXiv preprintarXiv: 1811.03509,
2018: 111.
因篇幅问题不能全部显示,请点此查看更多更全内容