1、信息通信WT-Parser:一种有效的在线日志解析方法李修远,朱国胜,孙文和,杨少龙(湖北大学,计算机与信息工程学院,湖北武汉430 0 6 2)摘要:系统日志是用于记录系统运行情况的重要数据,通过分析日志可以有效监测系统运行状态、检测系统异常。随着大数据,云计算等技术的兴起,系统日志随着系统规模的扩大也不断增加,如何实现日志自动化分析成为当前研究热点,将非结构化日志文本解析为结构化数据是日志分析的基础。针对大多数日志解析方法难以有效分离日志状态变量的问题,文章提出在线日志解析方法(WT-Parser),方法通过日志单词构成来筛选模板单词用于日志聚类,并采用前缀树的思想提取日志模板。实验使用五
2、个真实的日志数据集对方法进行评估,结果表明,WT-Parser能有效区分日志的状态变量,并且在大多数数据集上都显示了更加优异的性能。关键词:智能运维;日志解析;异常检测;在线聚类中图分类号:TP393(School of Computer and Information Engineering,Hubei University,Wuhan Hubei 430062,China)Abstract:The system log is an important data used to record the system running condition.By analyzing the log,
3、it can effec-tively monitor the system operation status and detect system abnormalities.With the rise of big data,cloud computing and othertechnologies,the system log is also increasing with the expansion of the system scale.How to achieve automatic log analysishas become a current research hotspot.
4、Parsing unstructured log text into structured data is the basis of log analysis.Aiming atthe problem that most log parsing methods are difficult to effectively separate log state variables,this paper proposes an onlinelog parsing method(WT-Parser),which filters template words for log clustering thro
5、ugh the composition of log words,and ex-tracts log templates using the idea of prefix tree.The experiment uses five real log data sets to evaluate the method.The resultsshow that WT-Parser can effectively distinguish the log state variables,and shows better performance on most data setsKey words:AIO
6、ps;log parsing;anomaly detection;online clustering1 引言随着互联网技术的发展和数字化程度的提高,越来越多的大型、复杂的计算机系统在我们日常生产生活中发挥着不可或缺的作用,例如移动互联网、高性能计算、电信、金融等。这些系统与我们的日常活动紧密联系,系统的任何一点风吹草动都会给系统用户造成巨大的影响。因此,确保这些复杂系统安全、可靠地运行是相当重要的。日志是系统在运行过程中产生的文本数据,是了解系统运行情况的重要手段,通过分析日志消息,可以对系统进行网络异常检测、故障分析2 等,保障系统的安全运行。传统的日志分析主要通过于运维人员的手工检查,十分
7、依赖运维人员的专业知识和领域经验,并且随着分布式、云计算的发展,现代计算机系统的规模越来越大,结构越来越复杂,日志的产生速度也在不断增加,目前一个大规模的服务系统每小时就可以生成50 GB的日志3,手动查看系统日志的方式难以为继。为了满足系统运行的安全性和稳定性需求,通过机器学习等方式来自动分析这些海量的日志数据成为当前研究的热点,然而这些自动化分析技术大多依赖于结构化数据输入,而日志消息是无结构的自由文本,无法直接用于分析。如何快速、准确的将海量无结构日志消息解析成结构化数据,是日志分析的首要问题。日志消息是由系统开发人员在系统开发过程中预留的日收稿日期:2 0 2 3-0 2-0 9作者简
8、介:李修远(19 9 9-),男,湖北荆州人,硕士,湖北大学,主要研究方向:智能运维;朱国胜(19 7 2-),男,湖北武汉人,博士,湖北大学,教授,主要研究方向:下一代网络和软件定义网络。1452023年第0 5期(总第2 45期)文献标识码:A文章编号:2 0 9 6-9 7 59(2 0 2 3)0 5-0 145-0 5WT-Parser:An effective online log parsing methodLI Xiuyuan,ZHU Guosheng,SUN Wenhe,YANG ShaolongLog l:connected to2312exactlyL.og 2:conn
9、ected to7342errorLog3:connectedto951lexactly志打印语句所生成的用于记录系统事件相关信息的自由文本,我们将一条日志打印语句称为一个日志事件,由该打印语句产生的日志消息同属一个日志事件。将一条日志消息通常分为参数部分和模板部分:参数部分是程序在运行过程中产生的变量值,用于记录程序运行时信息,是系统运行时的关键数据,对了解系统运行情况至关重要;模板部分则是系统开发人员定义的自由文本,用于辅助对参数部分的描述或输出的特定信息,属于同一日志事件的日志消息模板部分始终相同,可以用于唯一标识该日志事件。事实上,日志解析的主要工作是对日志消息进行聚类,确定日志所属的
10、日志事件,同时分离日志消息的模板部分和参数部分,以便用于日志分析。图1展示了日志消息从生成到解析的全部过程。printf(connected tosd exactlyln,id):printf(Connected to%d errorin,id);Log 1:connected to2312exactlyLog2:connectedto7342errorLog 3:connected to951l exactly解析日志日志消息日志模板connected to*)exactlyconnected to*)errorconnectedto*)exactly图1日志解析示例生成日志参数231273
11、429511Changjiang Information&Communications在对日志的研究中我们发现,有一类特殊的日志事件,这些事件结构相似,仅由数个状态的单词进行区分。我们将区分这些日志事件的单词称为状态变量,传统的解析方法通常将状态变量归为含参变量来处理,这会导致具有不同状态的日志归为同一类,造成解析错误。例如日志事件connect toexactly和 connect to error,通过状态变量 exactly和connect进行区分,在以往的日志解析方法中,往往会因其相似的日志结构被错误的分为一类,最后在模板提取阶段被错误的解析为 connect to,造成解析错误。本文
12、针对上述的缺点,提出了一种新的日志解析方法,该方法以在线的方式对日志进行解析。方法提出单词分类的概念,基于不同单词类型成为日志模板部分概率不同的特点,对长度相同的日志分类时筛选出模板单词进行相似度计算,最后基于前缀树的思想提取日志模板,与现有的方法相比该方法能够有效区分日志的状态变量,保持较高的解析效率的同时实现了较高的准确度。2相关工作早期的日志解析依赖于运维人员构建正则表达式4来对日志消息进行处理,这种方法需要一定的专业知识,相当的繁琐且容易出错,并且一旦系统中日志发生更新,解析规则就会过时,需要重新进行维护;后来Xu等人设计了基于程序源代码5自动化生成正则表达式的方法,但现实中大多数程序
13、的源代码难以获得,因此具有很大的局限性。为了更加灵活的处理日志消息,研究人员提出了基于数据驱动的方法完成日志解析。Vaarandi提出第一个基于聚类的自动日志解析方法SLCT(0,该方法统计整个日志文件中的单词频率,将出现频率高于阈值的单词视作日志的模板词,把具有相同模板词组的日志视为同一日志事件,SLCT没有充分考虑单词之间的顺序关系,可能导致误分类,而且其值难以确定,当阈值设置较大时,无法挖掘出现频率较少的日志事件;而值过小则会导致过度分类;同样是基于聚类的方法LKE7利用改进的编辑距离(editdistance)计算两条日志的单词序列的相似性来进行聚类,最后从聚类的集群中提取模板,缺点是
14、编辑距离的计算量较高,难以用于大数据量的处理任务中。2 0 15年Vaarandi R等人提出LogClusterl8,该方法是对SLCT的改进,能够对参数长度可变的日志进行分类,有效避免了解析结果过拟合,但是该方法的缺点和SLCT一样,即频繁单词的阈值难以确定。同基于聚类的方法相比,基于启发式方法通过特定规则对日志进行分类,计算量相对较低,能够快速的解析日志。其中以IPLoM9为典型,该方法采用分层聚类的思想,先通过消息长度对日志进行初步分类,再利用日志的单词位置和映射关系进一步迭代划分,对类别划分提供了细粒度控制,但其类别划分的细粒度难以控制。Du提出的 Spell o 方法基于最长公共子
15、序列(LCS)进行在线聚类,通过比较日志消息之间的LCS,将相似度高于阈值的归为一类,该方法能够对变长的日志事件进行聚类,但计算日志之间的LCS事件复杂度较高,导致效率相对较低。He等人在2 0 17 年提出的Drain方法采用固定深度的树对日志进行聚类,该方法利用日志的长度和前几个单词完成日志的初步分类,再利用日志的相同位置的相同单词进行最后分类,在大多数数据集上达到了较高的准确度,但是其初步分类的策略在日志以变量开头的情况下表现不佳。李修远等:WT-Parser:一种有效的在线日志解析方法3本文标题本节主要介绍了本文提出的方法,方法分为三个步骤,预处理、在线聚类和模板提取。模型首先会对日志
16、进行一些简单的预处理以方便后续解析,接着过滤出日志的模板单词计算相似度,然后根据相似度在长度相同的日志之间聚类,最后基于前缀树的思想更新和提取日志事件模板。3.1日志预处理一条完整的日志通常由日志头和日志内容组成,日志头是日志系统记录的日志的额外信息,例如日志的打印时间、日志级别等,是同一日志系统中所有日志都具有的相同结构。但是日志头无法作用到日志解析中,并且会明显增加解析成本,因此当一条原始日志到来时,首先需要分离日志头和日志内容。081109 20593113 INF0 dfs.DataBlockScanner:Verification succeeded for blk_-4980916519894289629DateTine PidLevelIEADER在分离出日志内容之后,方法允许用户自定义正则表达式对日志内容的一些明显的参数进行处理,将一些明显的参数(例如,HDFS日志中的IP地址和块ID)提前替换为参数占位符,这样的好处时能够降低后面分类和模板提取的计算量,提高解析效率和准确率。事实证明,只需要几个正则表达式便可以得到很好的效果。接着需要使用分隔符将日志内容切分成单词。在