流、交错、不变量、模式、集合
本课程介绍了以下分析模式:消息流、消息交错、消息不变性、消息模式和消息集。
消息流
消息流 是一种将 NetFlow 概念推广到软件行为叙述中的追踪与日志分析模式。我们基于 活动关联线程(如 PID 和 TID)的集合来统计消息。该模式也涵盖了按源地址.目标地址聚合的网络流量数据。此外,也可使用其他属性进行聚合,例如按 活动线程 或消息集进行分析。
消息交错
我们将 消息交错 的示例——锚点消息——提炼为本模式。它用于描述不同锚点消息的叠加情况,例如进程启动与退出、DLL 加载与卸载等:
消息不变性
大多数来自同一段源代码(PLOT)的软件追踪消息包含不变部分(如函数名和变量名)、描述信息,以及可变部分(如指针值和错误码)。消息不变性 是一种适用于对比多个追踪文件中消息差异的分析模式。例如,在一次故障排查场景中,某个用户未能正确创建特定对象。我们怀疑该用户配置链接了不同版本的对象。为此,我们分别为每位用户记录了独立的应用调试日志,结果发现问题用户的版本为 0x4,而其他正常用户的版本均为 0x5。
消息模式
接下来是我们在追踪与日志分析中称为 消息模式 的一种模式。它是一组来自 活动线程 或 活动关联线程 的有序消息序列,并包含可用于匹配另一组有序消息的不变特征。这些消息可以出现在同一追踪或日志中(内部相关性),也可以出现在不同追踪或日志中(跨相关性)。以下图表展示了一次典型的消息模式实例:
消息集
在大型软件日志中,我们常常需要根据某些条件筛选消息。这些条件可能包括一组 错误消息,一组包含 基本事实 的消息,或其他特定谓词。随后,我们可以将筛选出的消息作为 锚点消息 使用,或作为反向 枢纽消息,以辅助后续分析。
Quiz
你希望在问题数据库中搜索特定消息。为了获得有意义的搜索结果,你应该了解哪种分析模式?