这篇论文介绍了一个名为 VarParser 的新工具,它的任务是帮工程师们“读懂”计算机系统的日志(Logs)。
为了让你更容易理解,我们可以把计算机日志想象成成千上万条来自不同部门的“工作日报”。
1. 背景:为什么我们需要“读懂”日志?
想象一下,你是一家大公司的经理。每天,公司里成千上万的员工(服务器)都会给你发日报。
- 正常的日报长这样:“今天系统运行正常,处理了 1000 个订单。”
- 出错的日报长这样:“系统报错,订单 1001 处理失败,原因未知。”
如果只有几百条日报,你一眼就能看出谁出了问题。但如果每天有几百万条日报,而且格式乱七八糟,人工根本看不过来。这时候就需要“日志解析器”来帮忙,把杂乱的日报整理成整齐的表格,告诉你是哪类问题。
2. 旧方法的痛点:只盯着“不变”的部分
以前的智能解析器(基于大语言模型 LLM 的方法)就像是一个死板的翻译官。
- 它只关注“不变”的话:比如日报里总是写着“系统运行正常”、“处理了订单”。它把这些当作模板。
- 它忽略“变化”的数字:比如“订单 1001"、“订单 1002"。它觉得这些数字不重要,直接把它们变成“某某某”(占位符)。
这就导致了四个大问题:
- 分组太乱:因为只看不变的话,它把很多其实不一样的日报强行归为一类,导致分类效率低。
- 问得太勤:因为它记不住那些变化的数字,每来一条新日报,它都要跑去问一次“超级大脑”(大模型):“这句话是什么意思?”这既慢又贵。
- 浪费钱:每次问“超级大脑”,都要把整句话(包括那些重复的废话)都发过去,消耗了大量的“ Token"(相当于大模型的计费单位),导致成本极高。
- 丢失细节:最后整理出来的表格里,那些重要的变化数字(比如具体的错误代码、IP 地址)都被抹掉了,变成了“某某某”。工程师看表时,根本不知道具体是哪个 IP 出了问题,就像看地图只看到“某地”,却看不到具体街道一样。
3. 新方案 VarParser:让“变化”成为主角
这篇论文提出的 VarParser,就像是一个聪明的老练秘书。它发现了一个被忽视的真相:日志里那些“变化”的部分(变量),往往才是最有价值的信息!
它做了三件聪明的事:
A. 聪明的“选样”策略(Variable Contribution Sampling)
- 旧方法:像大海捞针,随机抓几条日报来学习。
- VarParser:它先抓出日报里独特的、不常见的词(比如特殊的错误代码、奇怪的 IP)。它发现,如果两条日报里的“独特词”是一样的,那它们大概率属于同一类问题。
- 比喻:就像在人群中找朋友,旧方法是看大家都穿什么颜色的衣服(不变的部分);VarParser 是看谁手里拿着独特的道具(变化的部分)。拿着相同道具的人,肯定是一伙的。这样分组快得多,样本也少得多。
B. 带“记忆”的缓存(Variable-Centric Parsing Cache)
- 旧方法:每次看到新日报,如果没完全匹配上,就立刻问“超级大脑”。
- VarParser:它建立了一个带有“模糊匹配”功能的记忆库。它不仅记住了模板,还记住了那些“变化部分”的位置和规律。
- 比喻:就像你记电话号码。旧方法是死记硬背整个号码,只要错一个数字就认不出是张三。VarParser 是记住“张三的号码是 138****1234",只要中间几位对得上,它就能认出是张三,不需要每次都去问通讯录。这大大减少了问“超级大脑”的次数。
C. 精准的“提问”技巧(Adaptive Variable-aware ICL)
- 旧方法:给“超级大脑”看例子时,把整条日报都发过去,包括那些重复的废话。
- VarParser:它只挑出日报里最关键的变化部分作为例子发给“超级大脑”。
- 比喻:就像你问路。旧方法是把整张地图都发给导航,说“看这张图,我要去这里”。VarParser 是只把“起点”和“终点”的坐标发给导航,说“从 A 到 B,怎么走?”。这样既省流量(Token),又让导航(大模型)更专注,回答更准。
4. 最终效果:又快、又准、又省钱
经过测试,VarParser 的表现非常棒:
- 更准:它能更准确地识别出日志的模板,准确率比以前的方法高很多。
- 更快:因为它减少了问“超级大脑”的次数,处理速度大幅提升。
- 更省:因为它只发关键信息,大大降低了使用大模型的费用(Token 消耗减少了 50% 以上)。
- 更完整:最重要的是,它保留了那些变化的细节(比如具体的 IP、时间、错误码)。工程师拿到结果后,不仅能知道“出错了”,还能立刻知道“是谁出的错”,就像不仅知道“某地堵车”,还能看到“具体是哪辆车堵的”。
总结
简单来说,VarParser 就是告诉我们要重视日志里那些“变来变去”的数字和代码,而不是只盯着那些“一成不变”的废话。通过利用这些变化的信息,它让计算机日志分析变得更聪明、更省钱、更透明。
VarParser 技术总结
1. 研究背景与问题定义
背景:
日志是工程师诊断大规模在线服务系统故障的主要信息来源。日志解析(Log Parsing)是将非结构化日志转换为结构化事件的关键第一步,为异常检测、故障诊断等下游任务奠定基础。随着大语言模型(LLM)的发展,基于 LLM 的日志解析方法因其强大的文本理解能力而展现出高精度。
现有问题:
现有的基于 LLM 的日志解析方法普遍采用**“以常量为中心”(Constant-centric)**的策略,即主要关注日志中的静态文本部分(常量),而忽视了动态部分(变量)对解析过程的潜在贡献。这种策略导致了以下四个关键问题:
- 采样效率低: 仅基于常量信息进行日志分组和采样,导致分组数量接近模板数量,采样效率低下。
- LLM 调用频繁: 基于常量的缓存机制无法有效捕捉动态变量位置,导致匹配失败率高,从而引发大量不必要的 LLM 调用。
- 成本高昂: 提示词(Prompt)中消耗了大量常量 Token,导致 LLM 调用成本显著增加。
- 结果完整性缺失: 现有方法在解析结果中仅保留占位符(如
<*>),丢弃了具体的变量信息,导致系统可观测性(System Visibility)降低,削弱了下游任务的效果。
2. 方法论:VarParser
针对上述问题,论文提出了 VarParser,这是首个**“以变量为中心”(Variable-centric)**的基于 LLM 的通用日志解析器。VarParser 通过以下三个核心模块,充分利用日志中变量部分的价值:
2.1 变量贡献采样 (Variable Contribution Sampling)
旨在从海量日志中提取少量、多样且信息丰富的日志样本,用于 LLM 的上下文学习(ICL)。
- 分组策略: 不再基于常量分组,而是先对日志进行分词,过滤掉常见词(Common words),提取不常见 Token(Uncommon Tokens)。基于这些不常见 Token(通常对应变量)对历史日志进行分组,确保同一组内的日志具有相同的变量分布。
- 贡献计算: 将不常见 Token 聚类为“近似变量簇”,计算每个簇在不同日志中出现的频率和位置分布,以此量化该变量簇对解析新日志的贡献度。
- 贪婪多样化采样: 采用贪婪算法,优先选择贡献度最高的日志,并在采样后动态重置相关变量簇的贡献值,确保采样结果的多样性和信息丰富度。
2.2 以变量为中心的解析缓存 (Variable-Centric Parsing Cache)
优化了传统的解析缓存机制,引入变量单元(Variable Units)和模糊匹配。
- 变量单元: 在缓存中不仅存储模板,还存储变量单元。每个变量单元包含变量标签、具体实例(如 IP 地址、数字等)及其出现频率。
- 变量模糊匹配表 (Variable-fuzzed Matching Table): 利用正则表达式将日志中的常见动态内容(如数字、IP)替换为
{Variable},构建模糊匹配表。新日志到达时,先通过模糊匹配表快速检索,减少 LLM 调用。
- 掩码匹配 (Mask Matching): 当模糊匹配失败时,利用缓存中存储的变量位置信息,对模板中的变量位置进行掩码处理,再与新日志进行相似度计算(Jaccard Similarity)。这避免了因变量值不同导致的匹配失败,显著减少了 LLM 的调用次数。
- 缓存修正: 针对 LLM 可能产生的幻觉(如将常量误判为变量),设计了基于标签内容的自动修正机制,将无意义的变量标签(如标点符号、重复的常见词)还原为常量。
2.3 自适应变量感知上下文学习 (Adaptive Variable-aware ICL)
优化了 LLM 提示词(Prompt)的构建方式,降低 Token 消耗并提高解析精度。
- Token 级示例选择: 摒弃传统的基于日志整体相似度的示例选择,转而基于Token 级别的变量信息。对于新日志中的每个不常见 Token,在缓存的变量单元中寻找相似度最高的示例,以
变量 -> {标签} 的格式提供给 LLM。
- 自适应 Prompt 设计: 根据新日志中不常见 Token 的数量动态调整示例数量,仅展示关键的变量差异信息,大幅减少了 Prompt 中的 Token 数量,同时保留了关键的领域知识。
3. 主要贡献
- 提出新策略: 首次提出了“以变量为中心”的日志解析策略,打破了现有方法仅关注常量的局限。
- 首个变量中心 LLM 解析器: 开发了 VarParser,通过变量贡献采样、变量中心缓存和自适应变量感知 ICL,有效利用了被忽视的变量信息。
- 提升结果完整性: 通过缓存变量单元,VarParser 能够保留变量的具体实例、类型和频率,显著增强了日志解析结果的可观测性,为工程师提供了更丰富的系统状态信息。
- 大规模实证评估: 在 Loghub-2.0 等大规模公开数据集上进行了广泛评估,证明了该方法在精度、效率和成本上的全面优势。
4. 实验结果
在 Loghub-2.0 数据集(包含 14 个不同系统的日志)上的实验表明:
- 精度提升: VarParser 在所有性能指标上均优于现有最先进(SOTA)的基线方法。
- 平均分组准确率(GA)提升 3.9%。
- 平均解析准确率(PA)提升 8.5%。
- 最严格的模板准确率(FTA)平均提升 5.8%。
- 效率提升:
- 相比 LILAC(另一高效 LLM 解析器),日志采样速度提升 2.3 倍。
- 日志解析时间减少 51.2%,效率接近基于语法的 Drain 算法。
- 成本降低:
- 每个数据集的总 Token 消耗平均减少 56.1%。
- 相比 LogBatcher,单次调用的 Token 消耗减少 21.8%。
- 鲁棒性: 在不同 LLM(GPT-3.5-turbo, Llama3-70b, Qwen-Plus)上均表现出稳定的高性能,证明了方法的通用性。
5. 意义与价值
VarParser 的研究具有重要的理论和实践意义:
- 范式转变: 将日志解析的关注点从“常量匹配”转向“变量利用”,揭示了变量信息在理解日志结构中的核心作用。
- 经济性与实用性: 通过大幅降低 LLM 调用成本和 Token 消耗,使得基于 LLM 的日志解析在大规模工业场景中的落地成为可能。
- 增强可观测性: 解决了传统方法丢失变量具体信息的痛点,保留了系统状态、内部细节等关键信息,直接提升了故障诊断和系统监控的能力。
- 未来方向: 为结合大模型与小模型、进一步优化日志分析系统提供了新的思路。
综上所述,VarParser 通过创新性地利用日志中的变量信息,成功解决了现有 LLM 日志解析方法在效率、成本和完整性方面的瓶颈,为大规模日志分析提供了更优的解决方案。
每周获取最佳 computer science 论文。
受到斯坦福、剑桥和法国科学院研究人员的信赖。
请查收邮箱确认订阅。
出了点问题,再试一次?
无垃圾邮件,随时退订。