一、DeepLog(文章链接)
- DeepLog是2017年发表在ACM上的论文,采取的思路是使用LSTM神经网络对系统日志进行在线异常检测。
- 日志数据集有HDFS等,官方提供数据时,已经根据手工制定的规则通过人工来识别并标记异常。具体看文章
- DeepLog的架构如图所示,主要由三部分组成:日志键异常检测模型、参数值异常检测模型和用于诊断检测到的异常的工作流模型。
- 一个最新地到达的日志条目被解析成为一个日志键以及一个参数值向量(日志解析+特征提取)
- 首先使用日志键异常检测模型来检查新进入的日志key是否正常,如果正常,再用参数值异常检测模型深入检查参数值向量。两个模型任何一个判定为异常该日志都为异常。
- 最后,如果为异常,DeepLog的工作流模型为用户提供语义信息来诊断异常
二、DeepLog具体框架和工作原理(视频)
1、日志键异常检测模型
假设t是将要出现的下一个日志键序列号。
分类器输入:最近的长度为h的日志键窗口。
分类器输出:条件概率。排序所有可能的日志键K,如果下一个日志键出现在这个它排序的候选值之内的话,那么就将这个键视为正常,不然的话就把下一个日志标记为异常。
2、参数值异常检测模型
输入:某个时间戳的参数值向量。我们用训练数据中相同值的平均值和标准差对每个向量中的值进行归一化。
输出:是一个实值向量,它根据最近历史的参数值向量序列预测下一个参数值向量。
3、异常检测模型的在线更新
DeepLog为用户提供了一种反馈机制。如果用户报告DeepLog预测的结果是假阳性的,DeepLog使用用户报告的正确输出来更新模型的权重。
4、DeepLog的优缺点
优点:需要的训练集很小(不到整个日志的1%),训练阶段依赖一小部分由底层系统的正常执行产生的日志条目。
支持在线的LSTM模型的更新。
可以定位到哪个日志条目异常。
缺点:只能应对外界攻击造成的日志异常检测
三、代码链接
链接中代码不全,只涉及到了三个模型中的日志键异常检测模型