CLOUD 2019丨基于多模态深度学习方法调用链异常检测方法
TL;DR
目前,基于深度学习的AIOps方法考虑到的都是单一形式的数据,例如logs的文本属性或者traces中的实时响应时间,没有考虑到不同形式数据之间的关系。本文首先基于trace structure单一形式的数据提出一种异常检测的模型,然后利用LSTM将单一形式的结构扩展到多数据形式的结构。在实验测试集上本文提出的模型比当前基于深度学习的方法好。
Dataset/Algorithm/Model
文中使用的数据(tracing data)包含两种形式(也就是文章中提到的Multimodal,个人感觉说的有点大):
service response time
causal relationships
对于一条tracing data,由多个events组成,如下图所示:
对于每个event,至少需要包含以下信息:
trace ID,event ID, parent ID
protocol,host IP, HTTP return code, HTTP URL
response time, timestamp
目前有了tracing data,但是还需要经过一系列的预处理才能作为LSTM的输入。文中的处理方法如下:
对于每个event,抽取两种数据形式:
textual label(表示event类型)
HTTP code + HTTP pattern + hostIP (考虑top-M frequent labels, '!0’表示填充)
response time(表示服务性能)
对于考虑textual单形式的数据,所有的traces处理后得到的训练数据shape为:
: the number of all recorded traces.
: the maximum allowed trace length.
: the number of unique labels.
对于考虑time的数据,首先将response time归一化到【0,1】;得到的训练数据的shape为 ;
对于以上两种形式的数据,文中首先提出了单一形式的的模型,如下图所示:
包含以下两种形式:
: Structural Anomaly Detection (SAD).
: Response Time Anomaly Detection (RTAD).
通过预测下一个event发生的概率与trace中是否相同来检测异常(其实最好的是top-K预测),以上的单形式模型明显不是本文主要的novelty,下面就提出了多形式LSTM模型,主要想法就是如何将和结合作为模型的输入:
两种形式的数据融合作为一个模型的输入,优化的损失函数如下:
Experiment Detail
简单的实验结果如下:
Thoughts
第一篇关于anomaly detection 相关的文章,目测现在用LSTM处理异常这种时序的数据有天然的优势。文中提出的多形式数据的模型实际上理论解释不足,模型设计的合理性没有说明。对于文中event label的构造不一定合理。