admin管理员组文章数量:1579978
前言
异常检测也属于时间序列问题的一个大分支,记下来一段时间我也会定期分享一些这方面的内容,结合很多ML,DL知识的异常检测和诊断问题,我们一起努力!
笔记很长,请细心阅读~
一、 Address
paper来自于University of Utah
DeepLog: Anomaly Detection and Diagnosis from System Logs through Deep Learning
地址:https://netman.aiops/~peidan/ANM2018/9.LogAnomalyDetection/ReadingList/deeplog.pdf 12
二、Paper summary
Log的主要作用是记录系统的状态和重要的事件,各种系统日志自然是在线监视和异常检测的极佳信息源。
DeepLog模型主要是把log信息当作NLP的自然语言序列来处理的(一个project产生的系统log遵循着一个严格的逻辑和控制流,所以更像是一种语言结构)。Deeplog本质是个深度学习模型,可以自动提炼正常运行的log模式信息,当log模式信息偏离训练的模型的时候,可以检测出异常。并且这篇paper中的模型可以通过不断地线上迭代去适应新的log。
DeepLog从底层系统日志中构造workflows,这样一旦检测到异常,用户就可以诊断检测到的异常并有效地执行根本原因分析。
这也就是异常检测和诊断两个部分。
三、Introduction
3.1 主要的方法(利用log数据进行异常检测)(Existing work )
-
基于log信息计数的PCA聚类
-
通过获取不同的log keys之间的共同的模式信息
-
基于workflow的方法识别程序逻辑流的执行异常
3.2 存在问题(problems and challenges)
-
系统或者应用越来越复杂的时候,就可能遭受更多的bug和漏洞,这些会被别人盯上,来袭击你。
-
基于标准的数据挖掘方法不再那么高效(在线的情况下,不能防御不同的攻击)
-
非结构数据
-
大量数据的online anamaly detection(有很多用规则) (很多offline是针对预测已知的特殊的异常,而目标是是去检测出未知类型的log, 所以二分类是不行的)
-
有很多特征是无用的比如IP address,并且也很难知道哪些features是对于异常检测是有用的,并且不同的log类型的uuseful features都不一样
-
log信息是并发的,由多线程或者并发产生的,所以导致没法用一个workflow去解决问题
-
信息有key 矩阵信息 时间,大多数模型只用到了其中一个(大多数只用key的信息)
四、Approach
4.1 Log parser
首先提出把半结构化编码成结构化,key(k),看下面这个example就懂了
这时候咱们把key信息提取出来了。
再来就是* 号的parameters,这些参数会是一种序列标识, 比如可以把相同的log聚在一起,也可以把并发的或者多线程的seqence分开(HDFS中的block id)
这个模型主要用到的三个信息,key,parameters以及上一个log到此时log的时间差。
key-> log Key parameter and 时间差 -> parameter value vector
4.2 DeepLog
三个部分
-
log key异常检测模型
-
parameter value异常检测模型
-
workflow诊断部分
4.2.1 log key异常检测模型
这里把每个不同的提取的log key附上对应的类别,比如最终提取到四个不同的log key,则四个的类别分别为0 1 2 3
这里把问题转换为单变量时间序列分类问题,来预测下一个出现的log key的类型, 如果不一样则判断为异常
这里的模型的细节是stacking的LSTM的结构
4.2.2 parameter value异常检测模型
是转换为多变量的时间序列预测问题(因为除了对应的parameter values + performance value)
这里的performance value就是这个log的相对运行时间(这一条和上一条的时间间隔)
这里的异常检测,就是训练线下数据的时候,预测值与真实值的errors符合正态分布
如果真实的值在预测值的置信区间之外则说明异常
4.2.3 在线更新anomaly detection models
有一个例子看懂就ok了
简单来说就是先用正常的训练出一个模型,之后再来新的数据进行多分类,如果结果不对,则把这个真实的数据当作新的数据集扔到模型里面微调下,如果是log key则是多分类的loss,即目标减小这个判断错误的分类数据与预测之间的交叉熵,如果是parameter value vector的话则是减小之间的mse。
4.2.4 work flow construction
分为三种情况。
①task并行的时候
②有了new task
③循环
这是利用前面所说的单变量分类的方式来重建workflow(log key sequence的预测)
还有利用Co-occurrence matrix的方式来重建workflow,详情见paper把~,这篇paper信息量比较多把很多各种对比baseline方法也都叙述了一遍,这里可能简单说下,不赘述了~
4.2.5 Anomaly diagnosis using workflow
首先确定出现了异常,之后进行diagnosis,对workflow进行重建,之后分析出现的异常在哪个workflow上,对对应的log sequence进行分析。
4.3 对比方法(其他baseline)
-
N-gram(baseline) 说简单点就是,第i个词最大似然估计依赖于前N个,之后去计算第i个词的出现的概率。这里有个很关键的前提条件,就是都来自于一个固定的语料库,在log key中的意思就是说前提假设这些key都是存在于我们的vocabulary K中的。
-
PCA
-
SESSION ID去进行分组
-
查在每个session里log key值出现的次数
-
形成一个session vector,表示在一个session里,每个在K里的log key出现的次数。每列是一个log key,每行是一个vector
-
Invariant Mining
-
TFIDF
-
CloudSeer
五、 Log data sets and set up
5.1 HDFS
5.2 OpenStack log
这个主要是反应一些VM的life过程,比如创建VM,删除,暂停,清理没所以就会有很多pair 类似于 “Stop-Start”, “Pause-Unpause” and “Suspend-Resume”
5.3 Set up
-
根据
去group数据 2. parse到log key 3. deeplog可以直接训练了 4. 其他模型还有很多操作,比如建立matrix(每一列是一个log key 每一行是一个session vector)
deeplog用很少一部分normal数据进行训练。
PCA和IM都是线下的方法,不需要训练和测试数据 DeepLog只需要少部分正常的,TFIDF需要正常和不正常的
六、 Experiment
6.1 衡量指标
-
false positive
-
false negative
-
precision
-
recall
-
F1-score
6.2 log key实验
从看FP和FN到Pre、recall、F1
以下是OpenStack log数据集
可以看到左图中IM的precision很小,主要原因如下:
主要是因为产生的log不规律,所以重新制作了一个规律的数据集,OpenStack II, PCA的reall下去了,因为PCA主要是检测数据间的方差的,如果是分厂规律的模式数据就很难很好的work。
PCA和IM主要是offline方法,并且主要在session这个程度上起作用,然而很多系统log却没有这个层次。
deeplog对于任何一个参数都是非常stable
两个是对称的,好比每次你召回了g个,看这g个里面有多少个正常的,随着g的变化,recall和precision是对称变化的。
6.3 parameter value vector 实验
6.3.1 数据集
6.3.2 set up
写了个程序去模拟多个人不断地去要求VM创建和删除, 创建的时候有一个很重要的过程就是把copy controller node to a computer node(转移镜像),模拟有一个Dos的袭击导致出现异常,我们去减慢这个copy的速度
6.3.3 实验结果(Anomaly detection.)
有一个训练集和验证集,训练集用mse去训练,之后验证集得到的mse的高斯分布,在线incoming一个parameter value vector的话,deeplog就看这个的预测和真实的输出的mse是否在验证集的这个高斯分布之内。
列举了四个Log key。x轴为VM 被创建的id,其实就是程序的进程,y=mse。ab都为nomal, cd都分别有两次异常的情况。
6.4. Online update and training of DeepLog 检测实验
6.4.1 数据集
6.4.2 结果
1%的normal log entries 和 10%的log entries
更多精彩内容(请点击图片进行阅读)
公众号:AI蜗牛车
保持谦逊、保持自律、保持进步
个人微信
备注:昵称+学校/公司+方向
如果没有备注不拉群!
拉你进AI蜗牛车交流群
本文标签: 第一篇异常AnomalyDeepLogDetection
版权声明:本文标题:【异常检测第一篇】DeepLog: Anomaly Detection and Diagnosis from System Logs through Deep Learning 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1725805696a1044001.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论