文章链接:http://jorge-cardoso.github.io/publications/Papers/CP-2019-089-IEEECloud-Anomaly_Detection_from_Tracing_and_MDL.pdf

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,抽取两种数据形式:

  1. textual label(表示event类型)

    HTTP code + HTTP pattern + hostIP (考虑top-M frequent labels, '!0’表示填充)

  2. response time(表示服务性能)

对于考虑textual单形式的数据,所有的traces处理后得到的训练数据shape为D1=(Nt,Tl,Nl)D_1=(N_t, T_l, N_l)

  • NtN_t: the number of all recorded traces.

  • TlT_l: the maximum allowed trace length.

  • NlN_l: the number of unique labels.

对于考虑time的数据,首先将response time归一化到【0,1】;得到的训练数据的shape为D2=(Nt,Tl,1)D_2=(N_t, T_l, 1) ;

对于以上两种形式的数据,文中首先提出了单一形式的的模型,如下图所示:

包含以下两种形式:

  • D1D_1: Structural Anomaly Detection (SAD).

  • D2D_2: Response Time Anomaly Detection (RTAD).

通过预测下一个event发生的概率与trace中是否相同来检测异常(其实最好的是top-K预测),以上的单形式模型明显不是本文主要的novelty,下面就提出了多形式LSTM模型,主要想法就是如何将D1D_1D2D_2结合作为模型的输入:

两种形式的数据融合作为一个模型的输入,优化的损失函数如下:

jointloss=meansquarederror(responsetime)+categoricalcrossentropy(eventlabel)joint-loss = mean-squared-error (response-time) + categorical-cross-entropy (event-label)

Experiment Detail

简单的实验结果如下:

Thoughts

第一篇关于anomaly detection 相关的文章,目测现在用LSTM处理异常这种时序的数据有天然的优势。文中提出的多形式数据的模型实际上理论解释不足,模型设计的合理性没有说明。对于文中event label的构造不一定合理。

联系作者