大小模型协同的日志解析方法及计算机可读存储介质

摘要: 本发明属于日志解析,更具体地,涉及大小模型协同的日志解析方法及计算机可读存储介质。背景技术:1、日志解析是智能运维和日志分析中的基础步骤,其目标是将原始日志消息...
大小模型协同的日志解析方法及计算机可读存储介质

本发明属于日志解析,更具体地,涉及大小模型协同的日志解析方法及计算机可读存储介质。

背景技术:

1、日志解析是智能运维和日志分析中的基础步骤,其目标是将原始日志消息转换为结构化形式,即从日志消息中提取静态日志模板以及对应的动态参数。例如,对于包含ip地址、路径、任务编号、进程号等运行时变量的日志消息,日志解析方法通常需要将其中变化的部分替换为通配符或占位符,并保留描述系统事件的固定文本。解析后的日志模板可进一步用于异常检测、故障诊断、根因分析、日志压缩和安全审计等下游任务。已有研究将日志解析定义为从自由文本日志中提取静态模板和动态参数的过程,并指出该任务是日志分析的前置步骤。

2、现有日志解析方法大致可以分为基于语法规则的方法、基于语义模型的方法、基于大语言模型的方法,以及近年来出现的大小语言模型协同方法。

3、基于语法规则或启发式特征的日志解析方法,例如 drain、ael、brain、logram等,通常根据日志 token 数量、token 位置、词频、固定深度解析树、频繁模式或人工设定的启发式规则,将具有相似结构的日志划分为同一模板组,并从中抽取固定文本作为日志模板。这类方法具有实现简单、运行效率较高的优点,但其解析效果依赖预设规则、人工经验和特定日志格式假设。当日志格式复杂、参数长度不固定、日志模板持续演化,或者跨系统日志结构差异较大时,规则或启发式特征往往难以稳定覆盖实际情况,导致模板抽取不准确或日志分组错误。已有研究也指出,传统语法类日志解析器通常依赖人工设计规则或启发式特征,面对多样化和演化日志时适应能力有限。

4、基于语义模型或小语言模型的日志解析方法,例如 uniparser、logppt、unleash等,通常将日志解析建模为 token 分类任务或模板/参数识别任务,通过有标签日志数据训练或微调小型神经网络模型、预训练语言模型,使模型学习日志中静态文本与动态参数之间的语义差异。该类方法相较于纯规则方法具有更强的语义表达能力,推理成本也通常低于大语言模型,因此适合部署在资源受限或高吞吐场景中。但该类方法通常需要一定规模的标注日志数据进行训练或微调,而日志标注成本较高,且不同系统日志格式差异明显,已有标注数据难以覆盖新系统、新版本或新模板。同时,小模型受模型容量限制,在处理复杂语义、罕见模板、跨系统迁移和持续演化日志时,解析准确率容易下降。

5、基于大语言模型的日志解析方法,例如 logparser-llm、divlog、lilac和logbatcher等,由于大语言模型具有较强的自然语言理解能力和代码相关知识,能够在少样本或提示词驱动条件下识别日志中的动态变量和静态模板。因此,基于大语言模型的日志解析方法在复杂日志、跨系统日志和低标注数据场景中具有较好的潜力。然而,大语言模型本身并非专门针对日志解析任务训练,直接调用大语言模型解析日志可能存在输出不稳定、模板粒度不一致、参数抽取不一致等问题。同时,真实软件系统会持续产生大规模日志,如果对每条日志均调用大语言模型,会带来较高的推理成本、网络延迟和计算资源开销,不利于实际部署。lilac将该类问题概括为大语言模型缺乏日志解析专门能力、输出存在不一致性,以及直接使用大语言模型会产生巨大开销。

6、大小语言模型协同的日志解析方法,例如cslparser等,在离线阶段通过多层特征聚类和多样化采样选择训练样本,对小语言模型进行微调;在线阶段先使用缓存匹配已有模板,缓存未命中时由小语言模型进行解析,并根据预设规则识别小语言模型难以处理的困难样本,再选择性调用大语言模型进行纠正。同时,该方法使用动态模板更新机制,根据结构和语义信息合并相似模板,以减少冗余模板并提升解析准确性。该方法引入了大小模型协同思想,使小模型承担多数日志解析任务,大模型只处理困难样本,从而能够兼顾效率和准确性。但是,现有的大小语言模型协同的日志解析方法中,大模型调用触发主要依赖预设规则,例如结构复杂性、关键字和置信度阈值等;该类规则通常作用于整条日志或解析结果级别,难以捕获解析过程中更细粒度的局部错误。此外,其协同粒度主要是样本级或结果级纠正,而非针对日志模板生成过程中每个 token 的模型分歧进行即时路由;当小模型在局部 token 上发生细微但会影响模板结构的错误时,规则级触发机制可能难以及时识别。

技术实现思路

1、针对现有技术的缺陷和改进需求,本发明提供了大小模型协同的日志解析方法及计算机可读存储介质,其目的在于,在大规模日志流场景下减少大语言模型调用成本,并提高日志的解析准确性。

2、为实现上述目的,按照本发明的一个方面,提供了一种大小模型协同的日志解析方法,包括:

3、将待解析的日志正文预处理为token序列,并记录各token与原始的日志正文之间的位置映射关系;对于每一条日志,提取相应的token子序列,并执行日志解析步骤;日志解析步骤包括:

4、s1:将当前的token子序列与已缓存的日志模板进行匹配,若匹配成功,则将该日志模板作为当前日志的日志模板,并输出相应的模板字符串和参数位置,当前日志的解析结束;否则,选取当前token子序列中的首个token作为目标token,并初始化模板前缀为空,转入s2;

5、s2:利用小语言模型解析目标token对应的模板token;

6、s3:利用已训练好的路由模型预测小语言模型解析所得的模板token需要纠正的路由概率,若路由概率大于预设的路由阈值,则转入s4;否则,将小语言模型输出的模板token加入模板前缀,并转入s5;路由模型为神经网络模型;

7、s4:利用大语言模型解析目标token对应的模板token,并加入模板前缀;

8、s5:若当前的token子序列已处理完成,则转入s6;否则,选取下一个token作为目标token,并转入s2;

9、s6:将当前的模板前缀作为当前日志的日志模板,并输出相应的模板字符串和参数位置,当前日志的解析结束。

10、进一步地,s1还包括:

11、若当前的token子序列与已缓存的日志模板匹配不成功,则计算当前的token子序列与已缓存的各日志模板间的相似度,作为各日志模板的候选得分,并将候选得分高于预设的候选得分的日志模板作为模糊命中结果;

12、并且,s4中,利用大语言模型解析目标token对应的模板token时,大语言模型的输入包括:原始的日志,当前的模板前缀,小语言模型解析的模板token,模糊命中结果和提示信息。

13、进一步地,s2中,小语言模型在解析目标token对应的模板token的同时,输出模板token的特征;

14、并且,s3中,利用已训练好的路由模型预测小语言模型解析所得的模板token需要纠正的路由概率时,路由模型的输入包括:小语言模型解析的模板token,模板token的特征,模糊命中结果中候选得分最高的日志模板以及模糊命中结果中日志模板的数量。

15、进一步地,路由模型的训练方式包括:

16、收集历史日志正文,预处理为token序列后,分别利用小语言模型和大语言模型解析各token对应的模板token,并比较小语言模型和大语言模型对于各token的解析差异;

17、若小语言模型和大语言模型对于同一token的解析结果一致,则将相应的token位置标记为无需路由,并将路由概率标注为0;若小语言模型和大语言模型对于同一token的解析结果存在差异,但该差异不影响日志模板的结构、参数边界和日志事件归类结果,则将相应的token位置标记为中性差异,并将路由概率标注为0;若小语言模型和大语言模型对于同一token的解析结果存在差异,且该差异会影响日志模板的结构、参数边界和日志事件归类结果,则将相应的token位置标记为关键分歧,并将路由概率标注为1;

18、利用标注后的token序列训练神经网络模型,得到训练好的路由模型。

19、进一步地,日志解析结果包括:日志模板,模板标识,模板字符串,参数位置,解析来源,缓存命中标识,路由信息和解析置信度;

20、其中,模板标识用于唯一标记日志模板;解析来源用于标记日志模板中各模板token由大语言模型解析得到还是由小语言模型解析得到;缓存命中标识用于标记日志模板是否命中缓存;路由信息用于记录日志模板中由大语言模型解析得到的模板token的数量;解析置信度为各模板token的路由概率的加权求和结果。

21、进一步地,s6中,将当前的模板前缀作为当前日志的日志模板,并输出相应的参数位置之前,还包括:将当前的模板前缀中连续的被识别为参数的模板token合并为一个参数占位符,并更新参数位置信息。

22、进一步地,日志模板在缓存中以前缀树的形式存储,且缓存中建立有模板实体索引表;

23、模板实体索引表用于存储各日志模板的索引信息;索引信息包括:模板字符串,命中次数,冲突次数、风险分数、模板状态和关联的日志。

24、进一步地,缓存中还建立有模板索引表;模板索引表用于记录缓存中各模板的模板标识及对应的模板字符串;

25、并且,s1中,将当前的token子序列与已缓存的日志模板进行匹配,包括:

26、s11:按照当前日志对应的字符串查找模板索引表,若模板索引表中存在与该字符串完全一致的模板字符串,则判断匹配成功,转入s13;否则,转入s12;

27、s12:在前缀树中查询当前的token子序列,若查询成功,则判断匹配成功,转入s13;否则,判断匹配不成功,转入s13;

28、s13:匹配结束。

29、进一步地,s6还包括:根据解析结果执行模板演化操作;所述模板演化操作包括:

30、若当前的解析结果未命中缓存,则执行以下操作:

31、若当前日志对应的日志模板与已缓存的日志模板t1一致,则更新日志模板t1的索引信息;

32、若当前日志对应的日志模板与已缓存的日志模板均不一致,但与已缓存的日志模板t2的相似度高于预设的相似阈值,且二者的差异位置为参数取值变化所导致,则将日志模板t2中的差异位置泛化为参数占位符,并更新泛化后的日志模板t2的索引信息,实现日志模板合并;

33、若当前日志对应的日志模板与已缓存的日志模板均不一致,且无法与已缓存的日志模板合并,则将当前日志对应的日志模板作为新的日志模板插入所述前缀树,生成当前日志对应的日志模板的索引信息并插入所述模板实体索引表;所生成的索引信息中,命中次数为0,冲突次数为0,模板状态为候选模板,关联的日志为当前的日志;

34、将日志模板对应的模板字符串和模板标识插入所述模板索引表;

35、若当前的解析结果命中缓存,则执行以下操作:

36、检测命中结果是否存在冲突,若是,则将所命中日志模板的冲突次数加1,并增加其风险分数,否则,将所命中日志模板的命中次数加1,并降低其风险分数;

37、若候选模板的命中次数连续增加,且连续增加的次数达到预设的稳定阈值,则将该日志模板的模板状态更新为稳定模板,并降低其风险分数;

38、若稳定模板的命中次数连续增加,且连续增加的次数达到预设的支持阈值,则将稳定模板的模板状态更新为冻结模板,并降低其风险分数;所述冻结模板的状态不再更新;

39、若稳定模板的冲突次数增加,且增加的次数达到预设的回退阈值,则将稳定模板的模板状态更新为候选模板,并增加其风险分数;

40、若候选模板的冲突次数达到预设的风险阈值,则将该日志模板的模板状态更新为高风险模板,并增加其风险分数;

41、若高风险模板未形成能够进行拆分的多个冲突模式,且其冲突次数连续增加,连续增加的次数达到预设的废弃阈值,则将该日志模板的模板状态更新为废弃模板,并将其从缓存中移除;

42、若高风险模板的冲突次数达到预设的待拆分阈值,则将该高风险模板的模板状态更新为待拆分模板,并记录与该待拆分模板发生冲突的日志以及各日志对应的日志模板;

43、若所记录的日志对应多个彼此不兼容的日志模板,则将待拆分模板拆分为多个新的候选模板,生成各候选模板的索引信息并插入所述模板实体索引表,将各候选模板对应的模板字符串和模板标识插入所述模板索引表,并将原待拆分模板从缓存中移除;

44、若所记录的日志尚未对应多个彼此不兼容的日志模板,则维持该日志模板的待拆分状态,并继续记录后续冲突日志;

45、并且,s1中,将当前的token子序列与已缓存的日志模板进行匹配时,风险分数越低的日志模板具有越高的匹配优先级。

46、按照本发明的又一个方面,提供了一种计算机可读存储介质,包括存储的计算机程序,计算机程序被处理器执行时,实现本发明提供的大小模型协同的日志解析方法。

47、总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:

48、(1)本发明通过模板缓存优先匹配,减少重复日志的模型调用;在缓存精准匹配不成功时,通过小语言模型逐token解析相应的模板token,在小语言模型解析的同时,利用神经路由模型预测小语言模型解析所得的模板token需要进行纠正的路由概率,并在路由概率较高即大、小语言模型分歧较大时,利用大语言模型进行解析,通过这样的解析流程,本发明实现了token粒度的大、小模型协同,在协同过程中,通过小语言模型承担大部分低风险解析任务,降低整体推理成本,通过token级神经路由控制大语言模型仅在关键分歧位置介入,减少大语言模型调用次数和在线延迟,并通过局部纠正避免小语言模型错误在模板生成过程中累积,提高复杂日志和演化日志的解析准确率。

49、(2)在本发明的优选方案中,本发明在精确匹配缓存不成功时,进一步检索候选模板,得到模糊命中结果,并将该模型命中结果作为大语言模型解析的输入之一,由此能够提高大语言模型输出结果的一致性,并缓解大语言模型输出不稳定的问题。

50、(3)在本发明的优选方案中,本发明将该模糊命中结果作为路由模型的输入之一,辅助路由模型预测相应的路由概率,有能够有效提高路由概率的预测准确度,在关键分歧位置,及时引入大语言模型对解析结果进行纠正,保证解析结果的准确度,并在非关键分歧位置利用小语言模型解析,降低推理成本。

51、(4)在本发明的优选方案中,本发明利用大语言模型和小语言模型对相同的历史日志token序列进行解析,并对二者的解析结果进行对比,识别出关键分歧位置,并利用对比识别结果对历史token序列进行标注,用于对路由模型进行训练,由此能够保证路由模型的预测准确度。

52、(5)在本发明的优选方案中,本发明还会基于解析结果和解析过程中的分歧情况对所缓存的日志模板进行自适应更新,由此能够使得所缓存的日志模板与待解析的日志相适应,提高缓存命中率,减少调用模型解析的次数,在保证解析准确度的同时提高解析效率。