LogSnippet:在线频繁片段挖掘与多事件分词技术,用于实现紧凑的日志表示及异常检测

《Knowledge-Based Systems》:LogSnippet: Online Frequent Snippet Mining and Multi-Event Tokenization for Compact Log Representation and Anomaly Detection

【字体: 大 中 小 】 时间:2026年03月26日 来源:Knowledge-Based Systems 7.6

编辑推荐:

  针对大规模软件系统中固定粒度日志分词导致的冗余问题,提出LogSnippet框架。该框架通过在线挖掘高频变量长度日志片段,结合多事件标记化机制压缩日志序列,提升Transformer模型检测异常的准确性。实验表明,LogSnippet在HDFS、BGL等四个数据集上优于传统方法。

  
马俊|肖庆军|吴炳进|陈航|张永超|程光
东南大学网络科学与工程学院,南京,211189,江苏,中国

摘要

日志异常检测对于确保大规模软件系统的可靠性至关重要。尽管基于深度学习的方法已经取得了有希望的结果,但它们通常依赖于固定粒度的日志序列分词。具体来说,原始日志被分割成单个日志事件的标记,然后将得到的事件序列输入深度模型进行异常检测。然而,这种策略忽略了由于系统操作重复而产生的连续事件的频繁共现模式,导致序列过长,冗余的正常事件占据了主导地位,掩盖了罕见的异常。为了解决这一限制,我们提出了LogSnippet,它将频繁片段挖掘与多事件分词相结合用于日志异常检测。我们首先设计了一种在线挖掘算法,以实时提取可变长度的频繁事件片段。该算法一次扫描日志事件并维护候选片段的基数(即支持度)。为了解决在线环境中候选片段的组合爆炸问题,我们采用了一种内存效率高的基数计数草图来估计片段支持度。接下来,利用在线维护的片段,我们引入了一种基于仓库的多事件分词机制,将原始事件序列压缩成紧凑且结构化的标记序列,从而提高了罕见异常的可见性。最后,我们使用Transformer模型从这些紧凑的序列中学习区分性模式,用于离线日志异常检测。在四个数据集上的实验表明,LogSnippet始终优于代表性的基线方法。

引言

在云计算时代,现代在线服务变得越来越复杂。单个异常可能会影响数百万用户,这可能是由内部故障或外部网络攻击引起的。因此,准确和及时的异常检测对于确保平稳运行至关重要。日志记录了系统操作和活动,对于检测异常非常宝贵[1],[2]。通常,日志根据时间戳按顺序组织成序列。在异常序列中,并非所有日志都是异常。日志序列异常有三种常见类型:(1)执行顺序异常,即日志是正常的但顺序错误;(2)操作异常,即序列中出现了意外的日志;(3)不完整异常,即缺少日志,破坏了逻辑流程。因此,日志序列异常检测更关注序列内的模式,而不是单个日志,并旨在捕获上下文信息[3]。
由于数据挖掘和机器学习的进步,已经提出了许多日志序列异常检测算法,这些算法可以分为三类:基于事件计数的、基于事件键序列的和基于日志语义的。第一类将日志消息计数汇总到固定时间间隔内的向量中以检测异常[4],[5],[6]。然而,这些方法由于无法捕获日志的顺序依赖性和时间顺序而常常准确性有限。第二类通过日志解析器将原始日志消息转换为事件模板(或称为事件键),并根据序列ID和事件时间戳构建事件键序列以进行异常检测[7],[8]。第三类利用日志消息的文本内容:每个日志序列被视为具有三个层次的层次结构:单词、日志和序列本身。每一层都应用表示学习模型来获得特征向量并检测序列异常[9],[10]。
尽管现有的日志异常检测系统[7],[11]非常有效,但它们仍然存在一个根本性限制:日志序列通常以固定粒度进行分词,其中单个事件键或模板被视为原子标记。这种表示方法忽略了现实世界中的系统执行遵循高度规则和结构化的操作流程这一事实,例如打开 → 读取 → 关闭。将此类流程中的每个事件视为孤立的标记可能会破坏系统操作的语义完整性,并在日志序列中引入大量冗余。
由于正常的日志流主要由这些重复的操作流程主导,固定粒度的分词通常会产生过长的序列,在这些序列中,罕见的异常事件被良性的背景行为所淹没。这严重降低了信噪比,使得检测模型难以关注区分性偏差,从而导致异常检测效率低下。尽管一些先前的研究[12]探索了基于模式的抽象,但它们要么忽略了时间顺序,要么无法生成适合下游序列建模的保持顺序的、适合模型的语义单元。
这些观察结果突显了需要一种分词机制,该机制能够自适应地将多个连续事件分组为结构上有意义的单元,同时保持执行顺序。此外,这种机制必须以在线方式运行,以处理高吞吐量的日志流。这激发了我们设计一个统一框架的动机,该框架可以(i)实时从日志流中提取频繁的操作片段,并(ii)将它们整合成适合日志序列建模的紧凑、结构化的表示。为此,我们提出了LogSnippet,这是一种新颖的日志异常检测框架,它将在线频繁片段挖掘与基于仓库的多事件分词相结合。
从高吞吐量的日志流中挖掘有意义的可变长度片段本质上具有挑战性。核心难点在于随着片段长度的增加,候选片段的组合爆炸性增加,而在线日志分析系统必须在严格的内存和延迟限制下运行。此外,在实际的日志分析中,需要随着单个事件的到来逐步更新片段支持度,而不仅仅是在长时间会话或滑动窗口结束后才更新。对于基于标识符的日志来说,这一要求尤为重要,因为序列可能会持续很长时间,导致序列级别的更新延迟或过时。因此,有效的解决方案必须在有限的内存预算下维护最新的片段词汇表,并实时更新事件级别的支持度。
为了解决这些挑战,我们设计了一种基于基数计数草图的单一遍历挖掘算法[13]。该算法以在线方式高效地估计可变长度片段的支持度,并逐步维护一个频繁模式的仓库,这可以通过后缀扩展树概念性地可视化。通过在事件级别更新片段统计信息,该算法避免了多遍处理,并在固定的内存预算内运行,适用于高吞吐量的流式日志。
利用挖掘出的片段,我们进一步引入了一种多事件分词机制,将原始事件序列压缩成结构化的标记序列,其中每个标记对应于一个有意义的操作模式,而不是一个原子日志事件。值得注意的是,这种分词并不是为了损失压缩。相反,它执行了一种面向任务的冗余减少,将重复的常规片段抽象为更高级的单元,同时保留了对下游异常检测可能有用的细粒度信号。这种设计与系统日志的重复性质是一致的[14]。然后,这些紧凑且语义丰富的序列被输入到基于Transformer的模型(BART)中进行异常检测。通过将高效的在线片段挖掘与深度序列建模紧密结合,LogSnippet实现了及时、稳健和准确的日志异常检测。本工作的主要贡献如下。
  • •
    我们提出了一种多事件分词机制,用从频繁片段中挖掘出的可变长度操作模式单元(片段)替换传统的事件级标记。这种自适应的粒度捕获了通常被原子模板ID忽略的局部共现结构,为下游序列模型提供了更丰富的上下文信息。
  • •
    我们为日志流设计了一种在线频繁片段挖掘算法。为了解决可变长度模式的爆炸性和严格的内存限制,我们将基于基数的草图与基于草图的仓库维护策略相结合,其中保留的片段可以通过后缀扩展树可视化。这种设计允许在单次遍历中更新事件级别的支持度,克服了离线模式挖掘方法的延迟限制。
  • •
    我们开发了LogSnippet,这是一种表示建模管道,它将日志事件流转换为压缩的、语义结构化的标记序列。这种结构感知的表示有助于使用基于Transformer的模型进行更有效的异常检测。
  • •
    我们在HDFS、BGL、Spirit和Thunderbird数据集上进行了广泛的实验,证明LogSnippet在检测准确性和鲁棒性方面优于现有的深度学习基线方法。
  • 片段部分

    日志异常检测

    由于日志数据的庞大和复杂性,在软件系统中检测异常面临着重大挑战。早期的工作依赖于基于规则的模式匹配[15],这需要大量的领域专业知识来进行手动规则维护。随着日志格式的日益多样化,维护这些规则的复杂性呈指数级增长。因此,需要更加自动化和高效的方法。现有的方法[16]通常可以根据日志表示分为三类:

    框架概述

    在本节中,我们提出了一个基于频繁片段的日志异常检测框架,名为LogSnippet。LogSnippet的概述如图1所示,它由五个主要组件组成。我们分别解释如下。
  • •
    日志解析:假设从在线服务系统(例如Hadoop分布式文件系统[34])收集了一组日志流。为了实现下游日志处理,第一步是将每个原始日志消息解析为结构化格式。
  • •
    日志分区:
  • 在线挖掘连续顺序模式事件序列

    日志分区后,我们收到按时间戳排序的日志事件流。每个事件由其序列ID、事件键以及事件参数表示。在本文中,我们关注事件键(模板ID)序列空间中的模式挖掘,即事件类型的时空顺序和重复性,而不是参数级别的语义。我们在挖掘过程中忽略事件参数,原因有二。首先,参数通常是特定于实例的(例如文件路径、地址等),

    通过Transformer进行日志异常检测

    在本节中,我们介绍了LogSnippet的日志序列表示学习和日志异常检测组件,如图1所示。我们详细说明如下。

    评估

    在本节中,我们系统地评估了LogSnippet的有效性和效率。首先,我们介绍了数据集和实验设置。然后,我们将LogSnippet与几种基线方法在日志异常检测任务上进行比较。随后,我们进行了消融研究,以探讨片段长度和编码策略的影响。最后,我们分析了挖掘算法的估计误差、序列压缩的有效性以及所提出方法的时间效率

    结论

    在本文中,我们提出了LogSnippet,这是一个统一的日志异常检测框架,它结合了高效的在线挖掘和深度序列建模。LogSnippet在有限的内存下从日志流中连续挖掘频繁的可变长度片段,并利用这些片段进行多事件分词。通过用有意义的操作模式而不是原子事件来表示日志序列,我们的框架有效地减轻了噪声和冗余

    利益冲突声明

    作者声明他们没有已知的财务利益或个人关系可能会影响本文报告的工作。

    CRediT作者贡献声明

    马俊:撰写——原始草稿,可视化,验证,软件,资源,项目管理,方法论,调查,形式分析。肖庆军:撰写——原始草稿,监督,方法论,资金获取,形式分析。吴炳进:可视化,验证,资源,数据整理。陈航:方法论,调查,形式分析。张永超:可视化,验证,方法论。程光:验证,形式分析。

    利益冲突声明

    作者声明以下财务利益/个人关系可能被视为潜在的利益冲突:
    肖庆军报告获得了中国国家自然科学基金的支持。肖庆军报告获得了中国国家重点研发计划的支持。肖庆军报告获得了南京Sinovatio科技公司的支持。

    致谢

    本工作部分得到了中国国家自然科学基金(项目编号62372106)、中国国家重点研发计划(项目编号2020YFB1805204)、南京Sinovatio科技公司的资助、江苏省应用数学研究中心(项目编号BK20233002)以及东南大学大数据计算中心的支持。
    相关新闻
    生物通微信公众号
    微信
    新浪微博
    • 搜索
    • 国际
    • 国内
    • 人物
    • 产业
    • 热点
    • 科普

    热点排行

      今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

      版权所有 生物通

      Copyright© eBiotrade.com, All Rights Reserved

      联系信箱:

      粤ICP备09063491号