LogAnomaly: Unsupervised Detection of Sequential and Quantitative Anomalies in Unstructured Logs

Thesis Reading:《LogAnomaly: Unsupervised Detection of Sequential and Quantitative Anomalies in Unstructured Logs》

Proceedings of the T wenty-Eighth International Joint Conference on Artificial Intelligence (IJCAI-19)

文章来源

Weibin Meng1,5, Ying Liu1,5, Yichen Zhu2, Shenglin Zhang3∗, Dan Pei1,5,
Yuqing Liu3, Yihao Chen1,5, Ruizhi Zhang4, Shimin Tao4, Pei Sun4and Rong Zhou4
1Tsinghua University 2University of Toronto 3Nankai University 4Huawei
5Beijing National Research Center for Information Science and Technology (BNRist)
[email protected], [email protected], [email protected]
[email protected], [email protected],
[email protected],[email protected],
{zhangruizhi, taoshimin, sunpei.sun, joe.zhourong}@huawei.com

摘要----通过日志记录运行状态在几乎所有的计算机系统中都很常见,检测日志中的异常对于及时识别系统故障至关重要。然而,手动检测日志的异常非常耗时、容易出错且不可行。现有的自动日志异常检测方法,使用索引而不是日志模板的语义,容易导致错误警报。在这项工作中,我们提出了LogAnomaly,一个将日志流建模为自然语言序列的框架。利用template2vec这一新颖、简单、有效的提取日志模板中隐藏的语义信息的方法,LogAnomaly可以同时检测出连续和定量的日志异常,这是以往任何研究都没有做到的。此外,日志异常可以避免周期性模型重测之间新出现的日志模板引起的误报。我们对两个公共生产日志数据集的评估表明,日志异常优于现有的基于日志的异常检测方法


一,引言

该部分主要介绍日志分析相关方面的知识和目前的研究成果,通过总结主要有以下几个方面的小总结。
1,传统的异常检测主要是通过关键字(如“失败”)匹配和正则表达式,基于显式关键字和结构特征检测单个异常日志,阻止了日志异常的检测。例如下图四条日志信息表示两个正常连接襟翼,如果采用关键字匹配来检测异常,L1和L2因为包含关键词“down”,因此你会触发假警报,然而,这实际上是一个正常事件,因为开关自动恢复很快,如L4所示。因此,本文提出的是一种基于日志序列的自动异常检测方法。
在这里插入图片描述


2,序列异常检测分类:序列(顺序)异常和定量(数量)异常
· 序列异常:当日志序列偏离程序流的正常模式时,就会发生异常。
·定量异常:程序的执行过程中有一些固定的线性关系,这些关系可以通过日志的定量关系得到,在不同的工作负载下应该始终保持不变,如果一组日志的这些关系被破坏,就会出现数量异常。
针对于这两种异常发生的原因,也有着相应的解决方案,对于序列异常,通过深度学习的方法(例如:DeepLog)对日志序列中的序列异常进行检测;而对于定量异常检测,则通过基于日志消息计数器的方法(例如:PCA,Invariant Mining LogClustering )来追踪定量异常。这些机制都是以日志模板索引为输入的。

3,异常日志序列检测问题面临的挑战:
·如果只使用日志模板索引,可能会丢失有用的信息,因为它们无法揭示日志的语义关系。例如,有些模板在语义上是相似的,但在模板索引上却不同,忽略这种相似性会导致错误报警。
·服务可以在两个相邻的定期再培训之间生成新的日志模板,而现有的方法无法解决这个问题。
·现有的方法不能同时检测序列异常和定量异常

4,LogAnomaly适用于非结构化日志流的异常检测,核心是对系统程序所“打印”出来半结构化文本数据,将自然语言处理的方法和直观性应用或改进日志异常信息。

综上所述,本文的贡献在于:
·设计template2Vec方法模板,不仅可以捕获单词上下文,还可以从日志模板中提取语义和语法信息,包括同义词和反义词。
·设计一种新的模板合并机制,在两个相邻的训练之间不需要操作员反馈
·我们提出了LogAnomaly,这是一个端到端的框架,使用LSTM网络同时自动检测序列和定量异常

二,背景

大型系统通常使用日志记录系统运行时状态,日志是使用“print”函数生成的,带有字符串模板(上图中的普通文本)和作为参数的详细信息(图1中带下划线的文本)。通常,在有效地将这些日志用于异常检测之前,必须对这些日志进行适当的分析【He等人,2016年】。分析日志的一种常见方法是从历史日志中挖掘和提取模板,然后将日志与模板匹配[Zhang等人,2017;Messaoudi等人,2018]。如图2所示,日志l3和l6相似,它们的模板都是T3,即“Interf
ace*,changed state to up”,它勾勒出了l3和l6所代表的事件。日志l3和L6的其余部分(即分别为“ae1”和“ae3”)是运行时参数。日志解析超出了本文的范围,因此在第3.4节中,我们简单地采用了FT-Tree,etal.,2017],这是目前最先进的日志解析方法之一,在模板提取方面实现了高精度,并且在新类型的日志出现时具有增量可追溯性。现有的日志异常检测方法分为两个维度:1)检测序列异常或定量异常;2)有监督或无监督。
在这里插入图片描述

三,方法

1,概要

经过对现实世界日志的广泛调查,我们得到了以下两个观察结果:(1)一个日志模板,由开发人员使用“print”功能预定义,典型地描述了系统中发生的事件,其文本表示事件的语义信息。(2)服务系统中的程序执行流通常有一些模式。因此,由这些程序生成的日志在类型、时间顺序、事件计数频率以及不同事件计数之间的定量关系上具有一定的模式。我们的核心思想是利用深度学习离线学习日志的序列和定量模式,每个模式都由其模板的语义表示(而不仅仅是模板的索引);在在线检测中,违反学习模式的实时日志被视为异常
在下图,我们将对LogAnomaly的框架进行分析
在这里插入图片描述

离线组件中

·日志解析在离线组件中,进行日志信息收集后,需要对日志进行进行解析,本论文首先利用FT-Tree从历史日志中提取模板,然后将历史日志于这些模板相匹配,每个模板都是半结构化文本中的一组单词。本论文并提出template2Vec,其有效的将模板中的单词转换成单词嵌入向量,并结合单词向量计算模板向量。这样单词向量就会转换成模板向量序列

·特征提取论文通过利用LSTM模型从该日志序列中提取序列特征和定量特征

在线组件中

我们首先为实时日志确定它是否可以与现有模板匹配。如果是,我们将其转换为模板向量。否则,我们将根据模板向量的相似性将“临时”模板向量“近似”到现有模板向量。因此,每个实时日志都匹配一个模板向量,并将实时日志转换为(模板)向量序列。基于离线学习组件中训练好的LSTM模型,LogAnomly将会判断日志序列是否异常

2,Template2Vec

本文提出的方法template2Vec方法是一种基于同义词和反义词的单词表示方法,能够有效地实现模板中单词的分布表示,在下图中我们可以可能到Template2Vec在离线学习阶段包含三个步骤:

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值