原文:Application Performance Anomaly Detection with LSTM on Temporal Irregularities in Logs
当前异常检测的方法主要集中在检测日志序列异常,忽略了日志间经过的时间,这是异常检测性能的核心部分。本文提出了一种新的异常检测模型,其性能可通过滑动窗口数据表征从很小的模型捕获时间偏差。
日志是半结构化数据,追踪系统的执行过程。日志包含有价值的检测信息,如时间戳和非结构化的信息。有监督的异常检测是一个二分类方法,需要数据均衡而现实是真实数据集中异常样本的缺失;此外模型仅能检测已知的异常类别,不能检测新异常。
无监督方法趋于简单地检测样本中选择的特征的不同。
新方法聚焦于检测特征性行为的偏差。像半监督的方法,模型的特征行为从非异常数据学习;新输入的数据与模型比较,如果行为特征不符合正常的特征行为则判定为异常。
将日志表征为事件类型序列提出了挑战性的问题。首先创建序列需要新列编号的知识,但这并不总是可行的。二是这种表征放弃了日志间的时限,而日志间的时限是定义性能异常的关键。
性能异常检测聚焦于检测系统或服务降速或无法使用的区间。
日志序列表征不足以表示所需的信息,日志间的已用时间是模型必须的信息,以便检测日志出现的时间异常。基于计量滑动窗口中一段时间事件类型的想法,NoTIL通过捕获日志出现的频率将日志间的时间差考虑进模型。
作为一种创新方法,NoTIL为日志正常行为建模,检测与训练模型冲突为异常。
NoTIL 计量时间窗口的日志类型表征日志,考虑日志间的时间差。
使用 LSTM 网络做预测模型,因为其可以模拟复杂的时间关系。
L 代表日志数据集,发生在连续时限内。E 代表 L 中的事件类型。
对于 L 中的一条日志 l,使用el 代表其事件类型,tl 代表其时间戳。nexte(l) 是 l 的下一条同类型 el 的日志,即发生在日志 l 后的第一条类型 e 的日志。
定义 de(l) 为两条日志间的时间差,假设在此期间的正常值是一个服从未知分布的随机变量 De(l)e,如果真实 de(l) 远大于 De(l)e,则性能异常。
定义窗口大小为 w,临时窗口 Wi,从时间 tW开始到 tW + w 结束。
通过计数向量 Ci表征 Wi,即计算窗口 Wi 中每种事件类型的数量。
像在DeepLog模型中,训练模型预测下一个窗口的任务。定义超参数 h,叫做回看数,以便 h 连续窗口用于预测下一个窗口。由于滑动窗口机制,连续窗口共享相同的常数。
为避免输入和输出间引入偏差,
像图 a 的重叠的方式
使用图 b 的方式预测输出计量向量 Ci。
使用LSTM模型做预测,将 Mi 作为输入,LSTM预测的结果与真实输出 Ci 通过函数计算误差。
通过验证数据学习阈值 τ,可以拆分窗口为正常和异常子集。
一种新方法执行异常检测,在保持时间不变,使用一段时间中事件类型。
NoTIL 可有效检测日志中出现的时间异常,这是异常表现的鲜明特征。
顶端图代表正常模式;中间是含有异常的时间序列在A3 到 B3;底部是标注异常的策略。
Simu_binary 是合成的二分类数据,含有两个时间类型 A 和 B。DAA 和DAB 代表正常的连续日志对应的事件类型的区间。在 A 和B 过渡中注入异常,A3 到 B3 之间的过渡是异常的,
因为 dB(A3) >> DAB。