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)关系的新坐标。可以分离向量中的重复模式,使异常数据的特征更加突出。
例如在上图中,两个状态有明显的线性相关性,因此 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 方法难以处理集中日志中的交错序列,有限自动机会对噪声(序列时序不准确、系统负载差异)异常敏感,这些问题都有待解决。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于