日志异常检测论文阅读2

2,077

LogAnomaly: Unsupervised Detection of Sequential and Quantitative Anomalies in Unstructured Logs

问题

  1. 现有的很多方法都是基于日志模板的模式来检测(序列异常),没有考虑到模板的语义信息,特别是有很多语义相同但是模板不一样的情况。

    例如,现有的基于模板的异常检测模型无法处理语义相近但是模板却不一致的情况,例如上图中的L2和L6其实是语义相近的,但是由于模板索引不一致,会导致不合理的异常检测情况。

  2. 现有的实时异常检测模型无法处理新出现的异常信息,例如很多的时候需要重新训练模型来解决该问题。

  3. 现有的方法都只实现了顺序异常检测或者定量异常检测,没有将两者结合的工作。 其中,时序异常常用的是基于RNN的算法,例如之前的deellog,而定量异常是基于不变量来做的,例如之前的IM模型。

解决策略

  1. 既然模板没有考虑语义信息,可以通过word2vec来加入语义信息,但是直接这样依旧存在问题,因为上下文一样但是关键词不一样的词向量此时还会很类似。依旧无法解决问题,因此引入了另外一种词向量 DLCE来做,通过自动和手动加入一些同义词和反义词来训练得到最终的模板词向量。

  2. 如何做实时更新:

    1. 首先,肯定是需要进行重新训练
    2. 为了处理在两次训练之间的异常检测,首先应用FT-Tree从新日志中提取“临时”模板,然后计算其模板向量。 之后,基于模板向量之间的相似性,将该“临时”模板向量与现有模板向量进行匹配。 前提是,大多数“新”模板只是现有模板的较小变体,而不是全新的模板。
  3. 如何同时做顺序检测和定量检测? 定量检测是为了检测到一些不对称的异常,例如文件的打开和关闭,端口的切换等。 通过统计模板向量中词向量的频次来构成量化模板:C_j代表的是量化向量,是通过统计词频得到,这样可以训练使得模型学习到正确的量化关系。

  4. 总体的模型

源代码:github.com/AICoE/log-a…

Robust log-based anomaly detection on unstable log data

问题: 现有的日志异常检测模型无法实现对不断更新的日志的检测,无法处理未知的日志事件和序列。而日志的更新和模式的改变确是实际场景中发生的。例如系统版本更替之后,有些版本修改日志的记录等。

  1. 日志语句的改变,内容或者格式改变,但是语义没有很大改动等。

  1. 日志噪声的存在:日志模板解析算法,日志丢失,日志冗余等

  2. 模型

  1. 预训练的词向量提供了语义相似的保证
  2. 基于if-idf的词向量聚合则提供了关键词对于语义相似的保证。例如,对于某个频繁出现的词,该词如果是关键词的话,那么if可以提高其权重;其次,如果该词出现了冗余的话,那么通过idf 可以降低其重要性。
  3. 通过这两者结合,可以处理日志的变化。