论文标题丨Trace-Log Combined Microservice Anomaly Detection through Graph-based Deep Learning
论文来源丨ICSE 2022
论文链接丨https://cspengxin.github.io/publications/icse22-DeepTraLog.pdf
源码链接丨暂未开源

TL;DR

目前微服务系统中的 Trace 和 Log 异常检测方法不能捕获到 Trace 和 Log 间复杂的层次调用和交互特征,因此这篇文章中结合 Log 和 Trace 数据提出了一种基于 GNN 深度学习方法 DeepTraLog,可以把 Trace 间复杂的调用结构和服务的日志时间统一建模到图结构中,然后用 Deep SVDD 模型进行异常检测。实验部分证明 DeepTraLog 相比于其它 baselines 在基准服务中可以达到较高的 precision (0.93) 和 recall (0.97)。

Algorithm/Model

模型的整体架构如下所示

DeepTraLog

主要想法:对于每个 Trace,span 作为节点,每个 span 的对应的 log 通过 TF-IDF 嵌入作为特征向量,以此构建 TEG(trace event graph),示例如下

TEG

以 Gated Graph Neural Network + Attention 学习图特征,以 Deep-SVDD 作为异常检测器。异常分数计算如下

ans(hg)=hgc2R^2\operatorname{ans}\left(h_{g}\right)=\left\|h_{g}-c\right\|^{2}-\hat{R}^{2}

其中cc 为SVDD 的球心,R^\hat{R} 为球面半径。值大于 0 说明为异常,Trace 中每个 span 的注意力权重为每个 span 的异常分数。

Experiments

不同方法的实验对比结果如下

实验结果

特征分布

Thoughts

  • 从业务层面看 Log 即可体现 Trace 是否异常,无需针对 Log 进行 Embedding 在放在 Trace 上异常检测,后续说不定出现 Metric-Trace-Log combined 模型。
  • 模型集大成者,且单分类的 Deep-SVDD 模型其实对不同 Trace 模式的特征 embedding + anomaly detection 效果不好。