内部相关性、宏函数、主题、主题痕迹
本课程介绍了以下分析模式:内部相关性、宏观功能、主题以及主题痕迹。
内部相关性
有时,我们可能会观察到某个功能活动以及日志中的基本事实,并希望在日志的另一部分中找到该活动与这些事实之间的关联。如果这种内部相关性符合我们的问题描述,我们就能提出一个合理甚至可能是最佳的问题解释。以下是一个使用 WindowHistory 追踪工具的例子。
当第三方应用程序频繁失去焦点时,我们怀疑是终端服务客户端进程导致的。然而,经过检查后发现,对应的 WindowHistory 日志片段实际上属于该应用程序:
对应的终端服务客户端窗口日志片段并未显示任何前台切换,但另一个应用程序的主窗口却出现了大量前台变化:
我们发现,大多数情况下,应用 A 的窗口失去焦点的同时,应用 B 的窗口获得了焦点。
宏功能
宏功能 是由多个日志消息构成的一个单一语义单元,其中每个单独的消息充当“微功能”的角色。这一概念借鉴自功能主义语言学。例如,一段软件日志片段记录了尝试更新数据库的过程:
这些宏功能并不一定来自传统意义上的同一 ATID(如示例中所示),除非我们将某些片段(如“DB”)组合成伴随线程。
主题
当我们查看软件日志片段时,常常能识别出一些特定的主题,例如客户端-服务器交互、发布-订阅通知、数据库查询、插件序列初始化等。该模式名称来源于数学中的“动机”概念。它不同于主日志,后者对应于正常用例或正常运行的软件场景,通常包含多个主题——这在复杂的软件环境中很常见。而在另一端,则存在软件叙事单元(基本叙事单位)和宏功能(单一语义单元)。主题有助于弥合软件构建与软件诊断之间的巨大鸿沟:软件叙事单元对应实现模式,宏功能对应设计模式,而主题则对应架构模式,尽管这些类别之间可能存在重叠。
主题化日志
我们可以将一个日志消息流“整合”为另一个更小的日志。类比当代数学中的“动机积分”,我们将这种分析模式称为主题化日志。存在边界情况:整个日志可能被简化为一条消息,或者每条消息都与另一条不同的消息(可能是更短的消息,甚至是数字)相关联。集成进主题化日志的消息集合可以与集成进商日志中的消息集合完全不同(例如基于动机),而商日志则是将具有相同共同属性的消息集合进行压缩。
Quiz
你有一个大型软件追踪数据,其中包含来自各个组件的大量关于资源获取、使用和释放的消息。分析这类资源生命周期相关信息时,最适合使用哪种分析模式来简化你的追踪数据?