日志分析系统之事件提取方法研究和应用文献综述

 2022-11-30 14:40:34

数据的爆炸式增长、广泛可用性和巨大数量使得我们的时代成为真正的数据时代。人们急需功能强大和通用的工具从这些海量数据中发现有价值的信息。作为一种通用技术,数据挖掘可以用于任何类型的数据。近来,各种数据挖掘和机器学习算法被用于分析日志文件中的信息。在计算机中,日志文件是记录在操作系统或其他软件运行中发生的事件或在通信软件的不同用户之间消息的文件。日志文件中的信息叫做日志,由软件系统事件或操作的开始或终止,状态信息,错误信息组成。每个日志行通常包含日期信息、用户信息、应用信息和事件信息。人们通过收集日志来进行系统监控、系统调试和故障诊断[1]。随着当今计算和通信基础设施规模的不断扩大,事件日志的规模也不断扩大,这使得人工审查日志文件变得麻烦,容易出错。日志文件的自动分析已成为一个重要的研究问题[2,3]。

当软件运行出现问题时,可以通过日志推断出问题出现的原因和位置。但是目前,利用日志进行故障诊断的效率并不高:一方面,故障的分析一般强依赖于系统的运行环境和系统输入,而这些信息往往难以复现,可获得的信息量也有限;同时,软件系统的日志量庞大,而且日志信息缺乏结构化,难以自动化地提取有价值的信息。目前的故障分析主要依赖开发人员手工展开,很多时候还需要分析代码上下文。因此,一些研究工作借助程序分析方法研究基于日志的自动化故障诊断。控制台日志因为其典型性、数量大、无结构而被许多工作首选作为研究目标[4]。在对用于问题检测的挖掘控制台日志的研究中,Xu等人[5]提出了一种用于提取日志文件的新技术。每个不同事件被分配了不同的ID,每个日志行被抽象成其中的一个ID,集合中的每个事件类型都是正则表达式,例如:Starting:xact (.*) is (.*) 其中lsquo;(.*)rsquo;是参数和固定字符串,lsquo;starting:xactrsquo;是消息类型。这个正则表达式被分配了一个唯一的ID。从源代码中提取正则表达式的集合,然后将日志文件中的每一行与每个正则表达式进行比较,找到最佳匹配。最佳匹配的ID将被分配给该行。正则表达式还能够将变量参数的值从日志行中的动态参数字段中提取出来。这些正则表达式由源代码构建。使用任何标准的文本编辑器都可以搜索源代码中用于在日志文件中打印消息的函数调用。这些对记录功能的函数调用包括在引号内的静态消息和参数字段的变量,用字符串lsquo;(.*)rsquo;替换变量能够构建正则表达式。

由于事件日志的基本性质,发现频繁事件类型模式已成为自动分析日志领域的一个重要课题[6,7,8]。到目前为止,从日志文件中自动挖掘行模式的技术大部分都基于从数据中发现频繁项集合的Apriori算法,例如SLCT(简单日志文件聚类工具)[9]和Loghound[10],也有人采用其它行模式发现技术,如Teiresias应用于本领域。Vaarandi针对寻找日志文件中的模式提出的聚类算法SLCT,它和挖掘频繁项集合的apriori算法很类似。他对用于查找频繁项集的典型聚类算法做出了修改,这基于对日志文件数据的观察结果:第一,在日志文件中只有少数单词频繁出现;第二,在这些高频单词之间存在高度的相关性,因为日志文件中的每一行都是根据该事件消息的类型和参数的信息格式化构成。在Vaarandi的研究中,他将对日志文件的提取划分为三个步骤。第一步是根据每行中每个单词的位置构建数据摘要,即日志文件中每个单词的频率计数。第二步是选择那些包含由用户指定的超出阈值的单词的日志行构建候选集群。值得注意的是,单词的频率在某些位置可能偏高,但在另一些日志行中可能并非如此。第三步是从候选集群中选择出现频率高于用户指定阈值的集群,并且这些候选集群都是正则表达式。在候选集群中频率低于阈值的单词的可变部分被替换为lsquo;(.*)rsquo;。但是SLCT并非旨在检测正则表达式来提取日志文件中的日志行,而是用来检测频繁出现的模式。不满足频繁发生的日志行都被存储在异常值文件中。该研究的目的是寻找频繁发生的模式而不是日志提取。

文献[11]中对SLCT算法和IBM开发的Teiresias生物信息模式发现算法进行了比较。Teiresias用于发现分类数据中那些至少给定了特异性和支持的模式。Teiresias将字符串集X分解为不同的字符集C,接着发现至少具有由L/W确定的特异性的原型(模式),其中L是C的非通配符的数量,W是包含通配符的原型的大小。Teiresias只发现那些在字符串集 X中出现K次的原型。虽然作者认为,Teiresias与SLCT算法一样有效,但是它的工作范围不能有效地扩展到大数据集。

Makanju[12]等人提出了IPLoM(迭代划分日志挖掘),这是一种从事件日志中挖掘簇的新算法,不基于Apriori算法,也不查找行格式。通过三步层次划分过程,IPLoM将日志数据划分到其各自的簇中。在第四阶段也是最后阶段,IPLoM为每个生成的簇生成一个簇描述或行格式。与其他基于Apriori的类似算法不同,IPLoM总能在数据中找到簇,而不管日志行是否频繁出现。他们在七个不同的事件日志文件上比较了IPLoM,SLCT,Loghound和Teiresias算法,这些日志文件由教师支持小组标记。结果显示IPLoM始终优于其他算法,F-Mearsure(跨数据集)的平均值为78%,而第二好算法(SLCT)F-Measure的平均值为10%。

文献[13]设计了 LogSig,从文本日志信息中生成系统事件信息。通过分析发现,源码中日志输出语句中的固定子序列可以作为事件类型的签名,通过对具有代表性的签名进行分析,LogSig 算法可以将日志信息分类不同的事件类型。

执行日志很难自动解析和分析,因为它们是自由格式,没有严格的格式和大量的单词词汇。虽然执行日志可能不遵循严格的格式,但它们有一个通用结构:日志行是静态和动态信息的混合。每个日志行包含静态信息,指示执行事件,以及特定于执行事件的特定事件的动态信息。文献[14]提出了一种可以揭示日志行结构的方法。该方法检查每个日志行并将其抽象为其相应的执行事件,是基于规则和基于AI的方法的混合。使用一些通用的启发式方法来识别日志行中的静态和动态信息。 然后将具有相同静态信息的日志行组合在一起以将日志行抽象为执行事件。

文献[15]围绕云计算环境下的实时日志分析展开了研究。针对云平台复杂的物理架构和逻辑架构,基于分布式系统,结合实时流数据收集、海量数据的存储和索引、实时数据分析计算等功能模块,设计了一套完整的、可扩展的云计算环境下的实时日志分析系统。该系统能够帮助系统运维人员高效地检索整个系统中的日志记录,有效地管理各种日志数据,并通过日志数据快速了解当前系统的运行状态和服务状态。该系统能够从海量且多样的日志数据中,实时地挖掘出数据所蕴含的信息,一方面对系统的实时运行状态进行分析,另一方面,通过使用机器学习的算法和模型,实现了对于系统未来可能发生的故障的预测。

参考文献:

[1]. Nagappan M , Vouk M A . [IEEE 2010 7th IEEE Working Conference on Mining Software Repositories (MSR 2010) - Cape Town, South Africa (2010.05.2-2010.05.3)] 2010 7th IEEE Working Conference on Mining Software Repositories (MSR 2010) - Abstracting log lines to log event types for mining software system logs[J]. 2010:114-117.

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

发小红书推广免费获取该资料资格。点击链接进入获取推广文案即可: Ai一键组稿 | 降AI率 | 降重复率 | 论文一键排版