一、背景
日志数据是一种广泛可用的数据资源,用于记录各种软件系统中运行时的系统状态和关键事件。开发人员通常利用日志数据来获取系统状态、检测异常和定位根本原因。隐藏的丰富信息为分析系统问题提供了一个很好的视角。因此,通过在大量日志数据中挖掘日志信息,数据驱动的方法可以帮助增强系统的健康、稳定性和可用性。
随着现代计算机系统规模和复杂性的增加,日志数据呈爆炸式增长。有大量数据驱动的方法可以自动检测异常,例如基于主成分分析(PCA)的方法、基于不变挖掘的方法和基于工作流的方法,基于深度学习的方法如:DeepLog、LogAnomaly、LogRobust等在异常检测中取得了显著的效果。
现有方法是基于一些在现实的生产环境中无法满足的强假设而构建的,在生产环境中应用上述方法时,有两个主要挑战:
- 不断变化的日志:在实际开发和维护中的那些软件系统中,日志格式在实践中不断变化。
- 潜在的性能问题:性能问题是部分故障的常见表现,指的是部分功能被破坏。为了解决上述挑战,提出了基于深度学习的日志异常检测模型- SwissLog。
大型系统不可避免地会遇到故障,导致日志模式发生变化。主要有如下几种故障:
▲ 四种日志序列变化模式*
故障1:序列顺序变化
图(a)中的异常序列与正常序列相反,如图(b)所示,