[论文解读 IJCAI 19] LogAnomaly Unsupervised Detection of Sequential and Quantitative Anomalies

image-20210112145408903

论文题目:LogAnomaly Unsupervised Detection of Sequential and Quantitative Anomalies in Unstructured Logs

论文来源:IJCAI 2019

论文链接:https://doi.org/10.24963/ijcai.2019/658

摘要

通过日志记录运行时状态对几乎所有的计算机系统而言都很常见,检测出日志中的异常对于及时定位系统的故障至关重要。然而,手动从日志中检测异常十分费时、易出错且不可行。

现存的自动日志异常检测方法使用索引而不是日志模板的语义信息,往往会导致误报。

这篇论文中提出了LogAnomaly框架,将日志流看作是自然语言序列进行建模。利用template2vec这个新颖、简单却高效地方法提取出隐藏在日志模板中的语义信息,LogAnomaly可以同时检测出连续的和定量的异常,这是以往的研究中未实现的。

除此之外,LogAnomaly可以避免周期性模型重新训练之间由于新出现的日志模板导致的误报。

实验评估显示,在两个公开的生产级日志数据集上,LogAnomaly表现由于现有的基于日志的异常检测方法。

1 引言

大规模服务及底层基础设施通常由许多开发者或者运维开发或者维护,开发者或运维通常没有系统全局的知识,因此可能从局部视角看待发生的异常从而导致错误。

除此之外,当日志数量十分庞大时,手动检测异常也是不可行的。

基于关键字匹配和正则表达式的异常检测,能够有效减少日志的数量,但是这种方法只有基于包含多个违反正常规则的日志的日志序列才能检测出异常。

通常,异常可以分为两类,顺序异常(sequential anomalies)和定量异常(quantitative anomalies)。

程序通常按照固定的流程执行,日志是这些程序生成的一系列事件,当一个日志序列偏离了程序流的正常模式就说明产生了顺序异常。(DeepLog方法)

同时,程序执行有一些不变的线性关系,可以通过日志中的定量关系来捕获,并且在不同的工作负载下始终成立。因此对于一个异常集合,如果上述数量关系不成立时就说产生了定量异常。(PCA, IM, LogClustering方法)

image-20210112193700490

上述方法都采用日志模板的索引值作为输入,可能会导致误报。原因如下:

  1. 损失有价值的信息,只是用日志版本的索引无法表达日志间的语义关系。例如一些日志版本在语义上是相似的,但是具有不同的日志模板索引,忽视这种语义上的相似性会导致误报;
  2. 服务在两个相邻的周期性重新训练过程之间生成新的日志类型,现有的方法会判断为异常。手动的反馈在出现大量的新的日志模板时在实践上是不可行的;
  3. 现有的方法无法同时检测序列异常和定量异常;

论文提出了LogAnomaly框架,解决了现有方法存在的问题:

  1. 受到word embedding方法的启发,设计了一个简单但高效的日志模板表示方法,template2Vec,来精确提取日志模板中的语义和句法信息;
  2. 设计了一个在相邻训练过程之间不需要操作者的反馈合并新模板的机制;
  3. 提出LogAnomaly,同时自动检测顺序异常和定量异常;

2 背景

3 LogAnomaly设计

3.1 概览

image-20210112232854774

在离线学习组件中,框架先使用FT-Tree方法从历史日志中提取出日志模板,然后将历史日志与这些模板进行匹配。使用Template2Vec方法将日志模板转换成向量,这样一个日志序列就被转化成一个模板向量序列。最后,使用LSTM模型从日志序列中提取序列的和定量的特征。离线训练阶段性地执行,因此模型能够学习到新出现的日志模板类型。

在在线检测组件中,对于一个实时的日志,首先判断其是否与已有的日志模板匹配,是则将其转化成相应的模板向量表示,否则,基于模板向量的相似度想起替换成一个已存在的模板向量。因此所有实时的日志都被转化成一个向量序列,送入到LSTM模型中进行异常检测。

3.2 Template2Vec

image-20210112234207729

image-20210112234326038

  1. 建立同义词和反义词的集合:常见的同义词和反义词可以在WordNet中找到,领域相关的同义词和反义词由操作者基于领域知识添加到集合中;
  2. 使用dLCE模型生成词向量;
  3. 计算日志模板的向量表示,为日志模板中每个词的词向量表示的加权平均

3.3 日志异常检测

image-20210113101504214

除了序列模式,一个模板向量序列通常有定量的模式。通常,一个正常的程序执行过程有一些不变量,并且在不同的输入和负载下始终成立。例如打开文件的日志数量和关闭文件的日志数量正常情况下应该相等。

image-20210113101943392

即,对于 S i S_{i} Si,统计对象为包括其在内的前w个窗口内的日志模板向量序列,计算每种模板向量序列出现的次数。

image-20210113102209547

3.4 模板估计

对于一个日志无法匹配现有的模板,首先使用FT-Tree提取出暂时的日志模板,然后计算模板向量,基于模板向量的相似性用一个现有的模板向量替代之。

4 实验评估

数据集:BGL HDFS

image-20210113104431489

LogAnomaly方法考虑了日志模板的语义信息(还结合了同义词和反义词),而非只是用日志模板的索引值,从而降低了异常检测的误警率。

上图中还包含了只包含序列异常及只包含定量异常的框架的测试结果,表明二者的结合提高了模型的准确率和召回率。

image-20210113105639017

在上图的比较中,出现新的日志模板类型时没有对DeepLog模型进行手动的反馈。

参考

word embedding
https://cloud.tencent.com/developer/article/1061697 | 【RNN】使用RNN语言模型生成文本 - 云+社区 - 腾讯云
https://www.cnblogs.com/ydcode/p/11038064.html | 浅谈 Attention 机制的理解 - Maple17 - 博客园
https://github.com/BNDong/Cnblogs-Theme-SimpleMemory/blob/v1.2.6/docs/v1.1/Docs/Guide/versionMapping.md | Cnblogs-Theme-SimpleMemory/versionMapping.md at v1.2.6 · BNDong/Cnblogs-Theme-SimpleMemory
https://zhuanlan.zhihu.com/p/47063917 | Attention机制详解(一)——Seq2Seq中的Attention - 知乎
https://zhuanlan.zhihu.com/p/47282410 | Attention机制详解(二)——Self-Attention与Transformer - 知乎
https://github.com/AmateurEvents/article/issues/2 | 基于系统日志分析进行异常检测 · Issue #2 · AmateurEvents/article
https://www.zhihu.com/question/24588198 | (18 封私信 / 27 条消息) 机器翻译的流程(原理)是怎么样的? - 知乎
http://zh.d2l.ai/chapter_natural-language-processing/attention.html | 10.11. 注意力机制 — 《动手学深度学习》 文档
http://zh.d2l.ai/chapter_recurrent-neural-networks/gru.html | 6.7. 门控循环单元(GRU) — 《动手学深度学习》 文档
https://www.sohu.com/a/336551522_99979179 | 图解LSTM与GRU单元的各个公式和区别_输出

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值