System Problem Detection by Mining Console Logs - by Wei Xu - at University of California, Berkeley

本贴最后更新于 1929 天前,其中的信息可能已经时移世改

论文原文

System Problem Detection by Mining Console Logs

大体框架

无监督的日志异常检测算法。

其中模板抽取是基于源码和机器码实现的,这么做工程量很大,但好处显而易见,准确率几乎 100%,并且可以识别未输出过的日志,当然这也造成了后期的一些方案仅适合其他系统。向量化阶段本论文忽略了日志消息的自然语言信息,认为其难以抽取并且信息模糊,使用了时间窗口内模板 type、状态标识符 identifier 和变量 variable 之间的比例作为向量化特征,所以本论文其实是基于统计学的频繁模式发掘的方法。通过 PCA 产生正常异常维度进行异常检测,最后使用决策树将结果可视化展示。

内容摘要

4.离线检测和可视化

4.1.特征构建

Feature Rows Columns
Status ratio matrix Ys time window Status value
Message count matrix Ym Identifier Message type
4.1.1.状态变量和状态比向量

作者将变量分类为标示状态的和指标变量两类,状态是指类似于 open 和 close 一类,指标则是 ID 数值类变量,这两类变量在词频统计上差距很大。而状态比向量则是将时间窗内各个状态之间的比例表示为 m*n 的二维矩阵,m 是时间窗个数,n 是状态的种类。时间窗是可变长度的,在应对负载变化的同时可以识别瞬间的错误。

4.1.2.标识符和消息计数向量

标识符就是日志中的变量,消息技术向量是一个 n 维的向量,n 是消息事件类型 type 的种类,每一个值是该消息事件类型在该时间窗出现的次数。

4.2.异常检测

有很多的技术都可以使用,只要构造的特征矩阵包含足够多的信息,算法就可以检测出离群点,视为异常。作者最后发现 PCA+ 词权重的方案在异常检测中表现突出。

4.2.1.基于 PCA 的异常检测

PCA 是一种统计学算法,用于在高维数据中捕捉能反映原坐标数据共变(covariation)关系的新坐标。可以分离向量中的重复模式,使异常数据的特征更加突出。

image.png

例如在上图中,两个状态有明显的线性相关性,因此 PCA 捕捉此关系并产生了新的协变坐标 Sa 和 Sd,在新坐标系下我们很容易看出离群的 B 点仍在 Sd 上而远离 Sd 的 A 点更可能是异常点,因此可以视 Sa 为异常坐标,数据点在该坐标轴上的投影可以视为异常系数。

作者说在保留 95% 的方差时,仍可以大幅消减向量维度。总体来说,通过设置 95% 的阈值提取 n 维空间中的 k(<n)维法向量空间作为 Sd,其余的维度则作为异常维度 Sa,数据点在异常维度投影的模超过阈值就会告警,就酱。

4.2.2.提升 PCA 检测结果
使用 TF/IDF

类似于自然语言处理的处理方式,以日志的事件类型为单位,分别予以权重,减小常见事件类型对异常检测的影响。只适用于消息技术向量,因为它是稀疏矩阵。值得说的是,加入 TF/IDF 对于消息计数向量准确率提升和误报率下降的帮助十分的大。

使用更好的相似性度量和数据标准化

使用了 kernel PCA 并用余弦函数作为核函数取得了最优结果。因为余弦相似性不受一个消息组中消息个数的影响。

5.在线数据流异常检测

在线方式最大的区别是无法一次性的分析全量的日志,真实的输入是一个日志流,这就对某些特征向量化方式产生了限制,比如之前提到的消息计数向量。另外一个需求是需要算法能够更快的提供有效的检测结果,为此作者提出了两阶段的检测方案,第一阶段使用频繁模式挖掘排除绝大部分频繁重复的正常模式,第二阶段才用 PCA 处理那些模棱两可的数据。

7.相关工作研究

7.2.日志解析

7.2.3.对控制台日志(集成、综合日志)的异常检测

基本分为采用自然语言信息的方法和使用序列信息(标号日志、状态向量)的方法,作者涉及的语义信息的方法都比较的原始低效率。对于序列,作者涉及到了基于 HMM 和有限自动机的方法去做频繁模式挖掘,HMM 方法难以处理集中日志中的交错序列,有限自动机会对噪声(序列时序不准确、系统负载差异)异常敏感,这些问题都有待解决。

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...