Posted by Learning! on November 19, 2021

Experience Report: System Log Analysis for Anomaly Detection

https://github.com/cuhk-cse/loglizer

期刊/会议: ISSRE 2016 (CCF-B)
发表时间: 2016年
发表机构: The Chinese University of Hong Kong

一.研究背景

日志异常检测的重要性:

  • IT企业的大规模分布式服务器 每天24小时运转
  • 这些服务器上的应用为全球数百万的用户提供服务
  • 这些服务器上出现的事故会造成巨额的经济损失

日志异常检测现今面临的难点:

  • 因为现代操作系统大规模和并行化的特性,导致日志内容很复杂,需要领域知识
  • 日志数据规模非常的大,分布式系统每小时可产生50GB日志
  • 日志系统中通常含有大量的冗余信息

基于以上原因,所以传统的基于规则和启发式的日志挖掘方法不再适用。


作者指出的自动化日志异常检测方法在应用时面临的问题:

  • 需要阅读大量的相关文献,来找到一个合适的方法
  • 很多的异常检测方法都没有开源,来直接使用
  • 没有关于这些异常检测方法之间的对比

为此,作者实现了3个有监督方法(逻辑回归、决策树、SVM),3个无监督方法(Log Clustering、PCA、Invariant Mining)来在收集到的数据集上做比较。

二. 日志异常检测的框架流程

异常检测框架主要由如下四步组成: 日志收集、日志解析、特征提取、异常检测。

Log collection: 将系统运行时的日志信息收集起来。

Log Parsing: 将纯文本的每个日志记录,转化成对应的事件模板。 Received block * of size * from *

Feature Extraction: 将日志序列编码成关于 每个事件出现频率的 特征矩阵。

Anormal detection: 应用机器学习的方法,在特征矩阵上训练和预测。

三. 方法论

3.1 日志解析

日志通常是纯文本内容,并且由固定部分可变部分这两部分内容组成。

比如

Connection from 10.10.34.12 closed
Connection from 10.10.34.13 closed

Connection from * closed 就是固定部分,而ip地址则是可变部分。

而日志解析的目的: 就是把每条日志解析成固定部分和可变部分,并且形成一个事件模板。

上面的例子Connection from * closed 就是解析得到的一个事件。

通常可采用聚类方法或者启发式方法来完成日志解析。

3.2 特征提取

特征提取的主要目的是: 从记录的事件中提取有价值的特征,来供异常检测模型使用。

而为了从日志中提取特征,首先需要将这些日志数据划分到不同的日志序列中去,每个日志序列包含多个日志事件。

通常有三种类型的提取方法: Fixed windows, sliding windows, session windows.

Fixed windows: 基于每个日志事件的事件戳,每窗口大小$\Delta t$时间内的记录下的事件为一个日志列。

Sliding windows: 类似于TCP的滑动窗口,除了窗口大小$\Delta t$外,还有步长参数,会在每个步长进行一次窗口滑动,来记录日志序列。 滑动窗口相对于固定窗口可以收集到更多的日志序列,但同时不同日志序列中会有很多冗余的事件记录。

Session windows: 相对于前两种使用时间戳来进行序列划分的方法,session windows使用的是一些日志事件记录时所用的会话id,而一个会话通常就是一个完整的日志序列。 前提是每个日志事件都有会话id。

3.3 异常检测

有监督方法:

  • 逻辑回归
  • 决策树
  • SVM

无监督方法:

  • Log Clustering
  • PCA
  • Invariants Mining

四.实验

4.1 实验设置

数据集

  • HDFS
  • BGL

总共15,923,592个日志信息和365,298个异常样本。

在这两个数据集上,对之前的6种机器学习方法做比较。

实验结果

结论 :有监督方法可以达到很高的精确率,但是召回率在不同数据集上不同。

结论: Sliding windows可以达到更高的准确率和召回率。

结论: SVM的表现相对更好,参数步长会对结果产生较大影响。


结论: 无监督方法会比有监督方法,准确率更低一些。 Invariant Mining方法表现更好。

结论: Log Clustering 和Invariants Mining方法 比较耗时,其他方法耗时和数据规模成线性关系。