An Effective Approach for Parsing Large Log Files
文章目录
1 论文出处
会议:International Conference on Software Maintenance and Evolution(ICSME)
级别:CCF-B
时间:2022
2 背景
2.1 背景介绍
日志文件包括大量关于软件系统执行的信息,用于帮助处理不同的软件工程活动,生成的日志事件主要由两部分组成:日志头和日志消息。解析日志消息需要自动区分静态文本和动态变量,一种方法是使用正则表达式,而典型的工业日志文件可能包含数百个日志模板,许多方法基于频率分析来实现,比如Drain和Logram,这些工具将频率分析应用于整个日志文件,这使得很难在静态和动态标记之间找到明确的界限。
2.2 针对问题
- 使用多个日志库会导致正则表达式的不断更新。
- 依赖于领域知识很难区分日志的动态变量和静态内容。
- 将频率分析应用于属于同一组的日志事件,而不是针对整个日志数据集。
2.3 创新点
- 基于字符串匹配和本地频率分析对日志进行解析,不需要先前的领域知识或使用复杂的机器学习技术。
- 设计通用的正则表达式来进行日志预处理。
3 主要设计思路
3.1 预处理
通过简单的正则表达式识别出日志的头部信息,包括时间戳、进程ID、日志级别和日志记录功能,以及一些简单的动态变量比如IP地址和MAC地址,并且运行用户自定义正则表达式识别领域变量。
3.2 日志事件分组
根据两个日志事件所包含的标记数量与最有可能是静态标记的标记数量来衡量两个日志事件的相似性,首先通过空格分割来确定标记个数,之后识别出只包含字母的标记,最后将日志事件转变为一个由字母标记和标记总数组成的字符串来进行匹配。
3.3 通过频率分析生成日志模板
通过计算每个标记在属于同一组的日志事件中出现的次数,来分析每一组日志事件中出现的标记。
1) PacketResponder 1 for block blk_38865049064139660 terminating
2) PacketResponder 0 for block blk_-6952295868487656571 terminating
3) PacketResponder 2 for block blk_8229193803249955061 terminating
4) PacketResponder 2 for block blk_-6670958622368987959 terminating
5) PacketResponder 2 for block blk_572492839287299681 terminating
1) PacketResponder <*> for block <*> terminating
2) BLOCK* NameSystem.addStoredBlock: blockMap updated: <*> is added to <*> size 67108864
3) Received block <*> of size 67108864 from <*>
4 实验设计
评估了ULP在解析LogPai基准的10个日志数据集时的准确性和效率,并与目前已有的解析方法对比。