第49卷第4期2022年4月
Vol.49,No.4
Apr.2022湖南大学学报(自然科学版)
Journal of Hunan University(Natural Sciences)
面向不稳定日志的一致性异常检测方法
刘春波1,梁孟孟2,侯晶雯2,顾兆军1,王志3†
(1.中国民航大学信息安全测评中心,天津300300;
2.中国民航大学计算机科学与技术学院,天津300300;
3.南开大学网络空间安全学院,天津300350)
摘要:系统日志被用作系统异常检测的主要数据源.现有的日志异常检测方法主要利用从历史日志中提取的日志事件数据构建检测模型,即假设日志数据随时间的推移其分布规律
具有稳定性.然而,在实践中,日志数据往往包含以前未出现过的事件或序列.这种不稳定性
有两种来源:1)日志发生了概念漂移;2)日志处理过程中引入了噪声.为缓解日志中出现的不
正则匹配到第一个关键字就停止稳定问题,设计了基于置信度协同多种算法的异常检测模型EBCAD(Ensemble-Based Confor⁃
mal Anomaly Detection).首先,用统计量p值度量日志之间的不一致性,选择多个合适的集成算
法作为不一致性度量函数计算不一致性得分进行协同检测;然后,设计了基于置信度的更新
机制来缓解日志不稳定问题,将新日志的不一致性得分添加到已有得分集,更新日志异常检
测的经验;最后,根据协同检测得到的置信度与预设置信水平大小来判断不稳定日志是否异
常.实验结果表明,在HDFS日志数据集中,当不稳定数据注入率从5%增加到20%时,EBCAD
模型的F1值仅从0.996降低到0.985;在BGL_100K日志数据集中,当不稳定数据注入率从5%
增加到20%时,EBCAD的F1值仅从0.71降低到0.613.证明EBCAD在不稳定日志中可以有效
检测到异常.
关键词:异常检测;日志分析;不稳定日志;置信度;不一致性度量;更新
中图分类号:TP391文献标志码:A
Conformal Anomaly Detection Method for Unstable Logs
LIU Chunbo1,LIANG Mengmeng2,HOU Jingwen2,GU Zhaojun1,WANG Zhi3†
(1.Information Security Evaluation Center,Civil Aviation University of China,Tianjin300300,China;
2.College of Computer Science and Technology,Civil Aviation University of China,Tianjin300300,China;
3.College of Cyber Science,Nankai University,Tianjin300350,China)
Abstract:System logs are used as the primary data source for system anomaly detection.Existing log anomaly detection methods mainly use log event data extracted from historical logs to build detection models,that is,the distri⁃bution of log data is assumed to be stable over time.However,in practice,log data often contains events or se⁃
∗收稿日期:2021-10-01
基金项目:国家自然科学基金资助项目(61872202,61601467),National Natural Science Foundation of China(61872202,61601467);民航安全能力建设项目(PESA2019073,PESA2019074,PESA2020100),Civil Aviatio
n Safety Capacity Building Foundation of China (PESA2019073,PESA2019074,PESA2020100);中国科学院重点部署项目(KFZD-SW-440),Key Research Program of the Chinese Aca-demy of Sciences(KFZD-SW-440);天津市自然科学基金项目(19JCYBJC15500),Natural Science Foundation of Tianjin(19JCYBJC15500)作者简介:刘春波(1976—),男,天津人,中国民航大学讲师
†通信联系人,E-mail:****************
文章编号:1674-2974(2022)04-0089-11DOI:10.16339/jki.hdxbzkb.2022272
湖南大学学报(自然科学版)2022年quences that have not occurred before.The instability comes from two sources:1)conceptual drift occurs in logs;2) noise is introduced during log processing.In order to alleviate the problem of instability in logs,an anomaly detec⁃tion model called Ensemble-Based Conformal Anomaly Detection(EBCAD)based on confidence degree and multiple algorithms is designed.Firstly,the p-value statistics are used to measure the non-conformity between logs,and mul⁃tiple appropriate ensemble algorithms are selected as the non-conformity measure functions to calculate the non-conformal scores for collaborative detection.Then,an update mechanism based on confidence is designed to allevi⁃ate the problem of log instability.By adding scores of new logs into existing sets,the experiences of log anomaly de⁃tection are updated.Finally,according to the confidence degree and the preset significance level obtained by collab⁃orative detection,the unstable log is judged to be abnormal.The experimental result
s show that when the unstable data injection rate increases from5%to20%in HDFS log data set,the F1-score of EBCAD model only decreases from0.996to0.985.In the BGL_100K log data set,when the unstable data injection rate increases from5%to20%, the F1-score of EBCAD decreases only from0.71to0.613.This proves that EBCAD can effectively detect anomalies in unstable logs.
Key words:anomaly detection;log analysis;unstable log;confidence;non-conformity measure;update
日志数据详细记录了系统的所有状态和行为,
特别是在大规模分布式系统和工业物联网(IIoT)中.
管理员可以从大规模日志数据中发现和识别系统异
常[1],跟踪系统行为[2],防御恶意攻击[3].基于日志的异常检测[4-6]将帮助管理员快速定位和解决事故问
题,构建安全可信的系统.但传统方法往往使用关键
字搜索或正则表达式匹配,这往往需要领域知识,人
工检查效率低.因此,高效、实时的基于日志的异常
检测算法具有一定的理论和实际应用价值.
但是,概念漂移或模型老化[7]往往会出现在动
态变化和不稳定的环境中.有些系统需要7×24小时
运行来支持广泛的智能应用程序和在线服务.各种
各样的运行程序将生成比以前更复杂和可变的日
志.如果以往日志训练的模型、超平面或分类器等概
念不随日志数据的分布而变化,这些算法就不能正
确识别异常事件.因此,基于日志的异常检测算法面
临着不稳定问题,表现为在系统剧烈变化环境下的
精度降低现象.根据Zhang等人[8]的分析结果,日志
数据不稳定的原因主要来自两个方面:1)日志语句
受软件升级和外部环境影响而自然发生的变化,即
概念漂移;2)日志数据在采集和解析过程中所引入
的噪声.
尽管许多算法在实际环境中取得了良好的性
能,如支持向量机[9](Support Vector Machine,SVM)、
朴素贝叶斯[10](Naive Bayes,NB)、决策树[11](Deci⁃sion Tree,DT)、随机森林[12](Random Forest,RF)等.但在处理不稳定日志时仍面临许多挑战,为应对不稳定问题,它们经常使用周期性的再训练,但这往往需要领域知识且效率低下,并不能解决问题.这些算法以粗粒度检测异常,而不考虑同类型日志数据的差异或日志数据之间的不一致性;另外日志训练出来的模型、超平面、分类器等概念不随日志数据的分布而变化,缺乏动态更新以前经验的机制.
为减少日志不稳定问题对基于日志的异常检测算法的干扰,本文设计了一个基于置信度的动态日志多算法协同异常检测模型EBCAD(Ensemble-Based Conformal Anomaly Detection).它使用多种学习算法进行协同检测.首先,设计了集成多种算法的不一致性度量模块,计算统计值p值;其次,构建了基于置信水平的预测集,通过动态调整置信水平来标记一个可信标签;然后,将包含标签、不一致性得分和待检测日志置信度的结果反馈到包含相应标签的得分集中,作为已有的经验来计算后续检测中的p 值;最后,根据协同检测得到的置信度与预设显著性水平大小来判断不稳定日志的新样本是
否异常.
本文的结构如下:首先介绍了日志中的不稳定问题,其次对模型EBCAD进行了详细介绍,然后展示了实验结果并对其进行了分析,最后对论文进行了总结.
90
第4期刘春波等:面向不稳定日志的一致性异常检测方法
1问题描述
1.1日志不稳定问题
1.1.1日志的概念漂移
随着软件升级和外部环境变化,一些旧的日志
事件将会发生部分变化或者不复存在.图1给出了微软在线服务系统日志事件的变化[8].
{“result ”:*”BaseHash ”:*”UploadHash ”:*”TipHash ”:*”
NewTipHash ”:*}场景2:
场景1:
MiniMerge :{“result ”:*”BaseHash ”:*”UploadHash ”:*”TipHash ”:*”NewTipHash ”:*}
Creating and opening new *channel factory
Creating and opening new *channel factory for bindingId *图1微软在线服务系统日志事件的变化[8]
Fig.1Evolving log events in Microsoft online service system [8]
场景1:原始日志事件后面增加“for bindingId ”作为补充说明.
场景2:原始日志事件前面添加关键字“Mini-
Merge ”,说明程序执行阶段.
1.1.2日志处理过程中产生的噪声
在日志数据的采集过程中,不可避免地会引入
一定程度的噪声,例如由于网络错误、系统吞吐量有限、存储不足等问题导致日志丢失、重复或混乱现象发生而引入噪
声.另一种重要的噪声来源是日志解析.不准确的日志解析会影响异常检测模型[13]的性能.He 等人[14]、Zhu 等人[15]对SLCT [16]、IPLoM [17]、LKE [18]、LogSig [19]等常用的日志解析器进行了评估,指出现有的日志解析器如LogSig 存在处理某些数据集时不够准确的问题.He 等人[14]还指出解析过程中4%的错误甚至会导致异常检测的性能下降一个数量级,这是因为异常检测分类器对一些关键事件较为敏感,但日志解析器对这些关键事件进行了错误解析.图2显示了微软在线服务系统日志解析过程中出现错误的案例[8].场景1:与真实日志事件相比,日志解析器遗漏
了关键字“resize ”.
场景2:日志解析器错误地将参数“rtc ”作为日志事件的关键字.
HttpRequestAsync::EnsureBuffer-allocated:*resize:*场景1:
场景2:
Skipping update of with app alias [rtc]
Skipping update of with app alias [*]HttpRequestAsync::EnsureBuffer-allocated:*图2微软在线服务器X 解析错误日志[8]
Fig.2Mis-parsing logs in Microsoft online server X
1.2现存算法面临挑战
动态日志随着时间的推移而变化,仅仅基于以前的检测模型很难做出准确的决策.这就要求检测模型可以根据动态日志进行动态调整.然而,以往基于日志的异常检测算法(SVM 、LR 、DT 等)的决策往往仅分析新日志是正常的还是异常的,而不考虑算法是如何确定选择的,忽略了新日志和已有日志的不一致性.例如支持向量机通常忽略了测试对象距离超平面的距离,仅仅根据在超平面的哪一侧做决策.统计评估则利用这个距离检测待测对象的不一致性并用来判断是否属于别的类.此外,统计评估还告诉我们,与同一类中的旧日志相比,已提交的新日志是如何属于某个类的,以及与同一事件中的其他日志相比,新日志是属于正常事件还是异常事件.然而,基于概率的传统度量,如准确率、召回率和F 1不能评估分类器的决策,只能表明一个新日志属于正常事件或异常事件的可能性有多大.
幸运的是,Vovk 等人[20]基于统计评估的一致性预测(Conformal Predictor ,CP )理论,可以利用以前的经验来确定新的预测的精确置信水平.因此,我们将使用这种方法将新日志和历史日志联系起来,并根据数据分布的变化更新以前的经验.在一致性预测[21]中,我们可以得到一个统计量p 值,它可以用来计算置信度,并指导算法进行决策或评估.它还可以输出具有可信度和置信度的二分类预测,或给出固定置信度下的预测集.通过将之前的数据引入决策中,可以有效减少数据分布变化引起的数据集不稳定问题.
2模型框架
在本节中,我们将详细描述EBCAD 的每个步骤.如图3所示,EBCAD 主要包括三个步骤:数据预
91
湖南大学学报(自然科学版)
2022年
处理、不一致性度量、异常检测.我们首先将非结构化原始日志预处理为结构化特征矩阵.在置信度的指导下,我们选择多个集成算法来组成不一致性度量模块,这里选择的集成算法分别是AdaBoost 和RF ,分别记为CP-AB 和CP-RF.最后,我们调整显著
性水平,将检测到的日志序列标记为一个标签同时附加置信度,并反馈给相应的类作为后续检测的经验.
2.1数据预处理日志数据预处理的详细过程见图4.
2.1.1日志数据
现代大型系统通过日志来记录系统的运行情
况,每条日志包含无结构化的数据,例如时间戳、日志优先级、系统组件和日志序列.通常,日志消息用一组字段记录特定的系统事件.从Amazon EC2平台的日志中提取了8行日志(图4),为了便于表示,这里省略了一些字段.2.1.2日志解析
日志是无结构的,包含自由文本.日志解析的目
的就是提取一组事件模板,从而可以结构化原始日志.每一条日志消息被解析为一个事件模板(常量部分)和一些具体的参数(变量部分),正如图4所展示的那样,第一条日志消息被解析为事件模板“Event 1”:PacketResponder *for blocking *terminating.对于自动化日志解析器的有效性,可以用解析准确率[22]来评估,即成功解析的日志事件在全部日志消息中所占比例.解析后,每个日志消息都有一个事件模板,该事件模板对应于同一模板的一组消息.当且仅当日志消息的事件模板与真实数据对应的日志消息
日志数据
12008-11-0920:55:54PacketResponder for
block blk_321terminating 22008-11-0920:55:54Received block blk_321of size 67108864from/10.251.195.7032008-11-0920:55:54PacketResponder 2for block blk_321terminating 42008-11-0920:55:54Peceived blk_321of size 67108864from/10.251.126.552008-11-0921:56:5010.251.126.5:50010:Got exception while serving blk_321to/10.251.127.243
62008-11-1003:58:04verification succeeded for blk_321
72008-11-1010:36:37Deleting block blk_321file/mnt/hadoop/dfs/data/current/subdir1/blk_321
82008-11-1010:36:50Deleting block blk_321file/mnt/hadoop/dfs/data/current/subdir51/blk_321
日志解析
Event Templates:
Event 1:PacketResponder *for blocking *
terminating
Event 2:Received block *of size *from *Event 3:*:Got exception while serving *Event 4:Verification succeeded for *Event 5:Deleting block *file *Log Events :
Log 1→Event 1Log 2→Event 2Log 3→Event 1Log 4→Event 2Log 5→Event 3Log 2→Event 4Log 7→Event 5Log 2→Event 5
特征提取
Blk_3:[Event 4,Event 5,Event 7,...,Event 22]Blk_6:[Event 7,Event 5,Event 5,...,Event 5]…
Blk_112:[Event 3,Event 6,Event 8,...,Event 21]Blk_3Blk_6…
Blk_112
1201200102021221…
20310231
图4日志数据预处理Fig.4Log data preprocessing
图3EBCAD 模型组成Fig.3Composition of EBCAD model
数据预处理
待测日志序列
训练日志序列
日志解析
特征提取
120002020762130012230023
CP-RF
CP-AB
不一致性度量正常得分集
异常
得分集正常
p 值异常p 值
待测日志得分正常得分集异常得分集待测日志得分
异常p 值
正常p 值带置信度的标签
带置信度的标签
添加
异常检测
错误结果的正常(异常)得分检测结果(0,1,0,1,…)(1,0,1,0,…)(0,0,1,0,…)(1,1,0,1,…)
基于置信度确定待测样本标签
特征向量
92
第4期刘春波等:面向不稳定日志的一致性异常检测方法
组相同时,日志消息被认为正确解析.例如,一个日志序列是[E1,E2,E3],如果经过日志解析后变为[E1,E3,E2],那么解析正确率即为1/3.经过比较,本文采用Drain 作为日志解析器,因为在13种常见的日志解析器中,Drain 的解析准确率最高[15].尽管Drain 也会引入不同程度的噪声,但是本文提出的EBCAD 模型可以缓解因解析器不够准确带来的日
志不稳定问题.2.1.3特征向量提取
这个步骤的主要目的是从日志事件中提取有价
值的特征,这些特征可以提供给异常检测模型.特征提取的输入为日志解析步骤中生成的日志事件,输出为事件计数矩阵.在每个日志序列中,将每个日志事件的发生次数计数到日志解析器中,以形成事件计数向量.例如,如果事件计数向量为[0,0,2,3,0,0,0],则意味着在这个日志序列中,事件3发生了两次,事件4发生了三次.最后,构造全部的事件计数向量构成事件计数矩阵A ,其中序列A ij 记录了事件j 在第i 个日志序列中发生的次数.2.2一致性预测2.2.1不一致性度量
不一致性度量模块是一个接口和算法独立的模
块,在显著性水平的指导下,使用适当的算法作为不一致性度量,计算不一致性分数.通过一致性预测,我们将得到一个统计量p 值.与概率不同的是,p 值是基于具有相同标签的所有分数计算的.p 值越大,则新日志与具有相同标签的旧日志的一致性越高.许多先前得分较低的日志将证明新的日志更接近这个类.因此,我们可以检测新的日志消息是否异常,并获得一个有置信度的标签.
不一致性度量模块作为EBCAD 的核心,可以利用以往的经验来确定新的预测的精确置信水平,并考虑以往数据与检测数据之间的关系,而不考虑算法的内部细节和实现.我们首先选择多种算法的评分函数作为不一致性度量来计算不一致性得分.评分函数记为:
αl *
=A D (L ,)
l *
(1)
式中:l *代表新的日志消息,D 代表数据集中的训练
集,L 代表具有相同标签的一组日志.
我们使用公式(1)来计算所有日志的不一致性得分.对于日志训练数据集,每种算法将得到两个不一致性得分集:正常得分集和异常得分集.对于日志检测序列,也将通过每种算法获得一个检测日志得分.然后,根据公式(2)和公式(3)计算p 值.将训练序
列集合记为K ,日志解析算法产生的日志事件模板集合记为T ,新日志的p 值是K 中至少与T 中其他日志不相同的日志的比例.新日志的p 值的计算公式记为:
∀i ∈K ,αi =ΑD (
T \l i ,)
l i (2)p T l
*
=#{
}
i =1,…,n |αi >=αl
*
|
|K (3)
为了减少算法的分类错误,选择多个合适的算法组成这个模块,根据真实的标签将训练日志事件分为正常日志事件和异常日志事件,然后我们得到两个得分集和两个p 值.最后,为缓解日志中出现的不稳定问题,我们将检测错误的测试日志序列的p 值对应的得分作为后续检验的已有经验,将其添加到对应的正常得分集或异常得分集中去,作为反馈机制.这将避免算法在不稳定环境中持续造成错误决策.
2.2.2点预测的置信度和可信度
一致性预测框架提供了两个关键的指标:置信
度和可信度.如上所述,测试对象x n 尝试每个可能的标签y c ∈y (y ={正常,异常})作为x n 的标签,然后计算p 值.最后选择具有最大的p 值对应标签作为检测
对象x n 的标签.
检测标签将由置信度(confidence )和可信度(credibility )来衡量.置信度定义为1减去第二大的p 值,而可信度定义为最大的p 值.直观地说,高置信度表明,检测标签的所有其他候选者都是不可能的.低可信度意味着最大的p 值很小,所以测试实例不是训练集产生的分布.注意,如果数据集是独立同分布的,可信度不会很低.
四种可能的结果如下:1)高可信度-高置信度.这是最好的情况,该算法能够正确识别一个样本对应一个类,并且只对应一个类.2)高可信度-低置信度.测试样本很相似,属于两个或两个以上的类.3)低可信度-高置信度.算法不能准确将测试样本与数据集现存类别的任何一个类别联系起来.4)低可信
度-低置信度.算法给测试样本检测一个标签,但它似乎与另一个标签更相似.2.3异常检测
我们将使用p 值来计算可信度,即对应标签的p 值,置信度就是1减去第二大的p 值,伪代码如算法1所示.
算法1输入:训练集
{(x 1
,y 1
),…,(x
n -1
,y n -1)}
,测试实
93
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论