LogAnomaly论文笔记

论文名称: LogAnomaly: Unsupervised Detection of Sequential and Quantitative Anomalies in Unstructured Logs(IJCAI-19)

背景

  • 现有的日志序列异常检测方法分类:
    • 基于日志消息计数器的方法检测quantitative(定量)异常
      • 如PCA、不变量挖掘和LogClustering等
    • 基于深度学习的方法:从日志序列中学习序列模式
      • 如DeepLog(DeepLog: Anomaly Detection and Diagnosis from System Logs through Deep Learning)

提出的问题:

  • 现有的日志异常检测方法,没有利用语义和语法信息。
    • 例如,两个不同的template在语义上可能是相似的,但是它们对应的索引却不同
    • 如果只使用template,可能会丢失有价值的信息,因为它们无法揭示日志的语义关系。
  • 现有的方法不能同时检测序列(sequential )异常和定量(quantitative )异常
  • 对于系统新产生的日志类型,无法准确的预测,传统方法都需要重新微调后才能预测准确。

解决问题的方法

  • 提出了一个统一的数据驱动的深度学习框架—LogAnomaly, 用于非结构话日志流的异常检测。
  • 核心思想:大多数系统日志都是由系统中的某些程序打印出来的半结构化文本,可以改进或应用NLP中的方法来进行异常检测。

本文提出的方法详解

  • 首先给出总的模型框架:
    流程图

日志解析部分(基于template的)(论文3.2节)

  • 受word embedding的启发,设计了一种模板的向量化表示方法template2Vec,分成如下几步:
    1. 使用FT-Tree从日志中提取templates,然后将历史日志与templates匹配,如Figure2所示。 从logs中提取tempates
    2. 根据templates构建一个正反义词的集合,对于专业领域的word则需要人工添加。
    3. 将templates中包含的word,生成词向量(使用dLCE)。
    4. 把每个template中的word对应的词向量加权平均,得到template的向量化表示。(2-4见Figure4) 2-4步示意图

异常检测部分(分为sequence和quantitative两种模式的异常)(论文3.3节)

  • sequence pattern
    1. 使用滑动窗口方法,将日志序列划分为多个子序列。
    2. 将日志子序列,映射为template vector的子序列, 作为LSTM的输入,对应的输出应为下一个template vector(如Figure5(a)所示)。
  • quantitative pattern
    作者认为,一个正常的日志序列应该存在一种恒定的关系。比如,日志序列中存在open file,就一定存在close file,如果不存在则就是异常的。于是有了如下的方法检测这种异常:
    1. 同样使用滑动窗口,将日志序列划分为多个子序列,并映射为template vector的子序列
    2. 统计每个子序列中,每种template vector在子序列中出现的次数。假设有n个template vector,则构成 C i = { c i ( v 1 ) , c i ( v 2 ) , . . . , c i ( v n ) } C_i = \left\{ c_i(v_1), c_i(v_2),...,c_i(v_n) \right\} Ci={ci(v1),ci(v2),...,ci(vn)},其中, C i C_i Ci 为第i个子序列, 每个元素表示对应的template vector在该序列中出现的次数。如果有w个子序列,则形成了一个w*n的计数矩阵。(如Figure5(b)所示)
    3. 然后将得到的计数的子序列,作为LSTM的输入.例如输入[ C j , C j + 1 , C j + 2 C_j, C_{j+1}, C_{j+2} Cj,Cj+1,Cj+2], 对应输出应为 C j + 3 C_{j+3} Cj+3
  • 预测
    • 如果LSTM模型预测的下一个输出的k种可能包含了实际输出,则认为是正常的。
  • 文中举了一个具体的例子如下图:
    在这里插入图片描述

处理新生成日志类型(实时检测部分) (论文3.4节)

  • 在实时的系统的种,系统会生成新的日志模板。现有的方法通过定时的重新微调模型来识别这种新的日志模板。
  • 本文方法:
    • 如果一个日志无法匹配现有的模板,则通过FT-tree从该日志提取一个临时的模板,并映射为template vector。
    • 从现有的template vector中找一个与其最近似作为代替,从而预测新的日志类型。

一些问题

  • quantitative pattern部分,滑动窗口大小是否影响了该部分的性能。如果窗口比较小,则形成的矩阵就比较稀疏,若窗口较大,则矩阵稀疏性降低。
  • 文中的template2Vec使用了同义词和反义词来作为一种语义的信息。例如,Fig2中的T1和T3,只有一个单词不同,并且是反义词。在映射为template vector时应该令两者尽可能的不同。文中是在映射为template vector时通过加权的方式解决的,还是在映射为word vector解决的?
  • 文中使用的是word2Vec方法的到词向量。对于具体的任务,使用其它的词向量方法是否效果更好
  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值