关于后端:京东云开发者|提高IT运维效率深度解读京东云AIOps落地实践

57次阅读

共计 5110 个字符,预计需要花费 13 分钟才能阅读完成。

基于深度学习对运维时序指标进行异样检测,疾速发现线上业务问题

工夫序列的异样检测是理论利用中的一个关键问题,尤其是在 IT 行业。咱们没有采纳传统的基于阈值的办法来实现异样检测,而是通过深度学习提出了一种无阈值办法:基于 LSTM 网络的基线(一个 LSTM 框架辅助几个优化步骤)和无监督检测(神经网络和多种机器学习算法的组合)协同综合剖析工夫序列。当工夫序列显示出清晰的周期性状态的状况下基线体现良好,而无监督检测在效率要求高且周期性不太清晰的状况下表现出色。通过两个并行模块的互补设计,能够在不依赖阈值设定和调整的状况下实现无阈值异样检测。京东云外部实践证明,咱们所提出的无阈值办法取得了精确的预测和牢靠的检测。

在过来的几年中,aiops 业界提出了各种解决异样检测问题的办法。机器学习 (ML) 和深度学习 (DL) 颇受欢迎。在传统的 ML 中,通常采纳 K-means、基于密度的空间聚类和隔离森林 (IForest) 等聚类办法。除了 ML,因为其弱小的迫近能力,应用深度神经网络 (DNN) 进行工夫序列预测和异样检测被越来越多的算法同学应用。多层感知器 (MLP) 是一种根本的 DNN 架构,用于评估工夫序列上异样检测的性能。此外,循环神经网络 (RNN) 及其变体,如长短期记忆 (LSTM) 网络和门控循环单元 (GRU) 是解决与工夫序列相干的问题的罕用办法。

对于大多数上述用于解决异样检测的办法,个别是工夫序列是否超出预约义的下限和上限。然而,固定阈值无奈表征具备外在动静趋势变动的工夫序列,从而导致异样剖析不精确。此外,因为单个阈值无奈涵盖所有​异常情况,因而该办法也容易脱漏异样。此外,设置下限和上限的过程是一项简单且重要的工作,总是须要为各种状况定义新的阈值,耗时长且迁移性差。

为了解决上述问题,咱们介绍一种新办法,即通过 DL 进行无阈值异样检测。

咱们的办法不须要预约义下限和上限,而是通过抽取一些易于调整的参数,在小范畴内主动搜寻适配不同场景的监控数据,进而实现无阈值异样检测:基于 LSTM 网络的基线模块(LnB)和无监督检测模块(UnD)。具体来说,LnB 生成基线,该基线可能以自适应和主动的形式表征工夫序列的动静特色。LnB 的框架是用 LSTM 网络构建的,长短周期识别方法是此框架的奉献之一,它引入了一种纠正机制,能够实现更精确的拟合,生成的基线形容了检测到的工夫序列的次要特色,提供了代替传统阈值的限度。UnD 是一种 DL 和多种 ML 算法的合并模型,基于投票机制从各个角度检测到的工夫序列是否失常。两个模块中的任何一个检测到异样表明产生了异样。两个模块的交融使咱们所提出的办法可能以互补和全面的形式无效地剖析具备不确定性或各种周期性的工夫序列。

工夫序列 X =(x1, x2, …, xt), 咱们的指标是确定下一步 xt+1 的值是否异样。历史值有助于模型学习指标以后和将来的状态,但与预测值间隔越近的点对模型预测的影响越大。因而,咱们抉择应用工夫序列 Xt-T:t 的序列,而不是取工夫序列的单个步长或整个历史序列来进行异样检测。T 是抉择作为模型训练输出的序列长度。下图 1 为无阈值异样检测的总体框架包含两个阶段,即训练过程和在线检测。

LnB 和 UnD 两个模块都能够独自实现异样检测。然而两个模块有不同的善于方面,每个模块的构造差别为检测到的工夫序列提供了不同维度的检测后果。其中,LnB 将更长期间的历史数据输出到模块中,它能够很好地阐明特定工夫序列的长期行为,然而 LnB 对那些周期性不明确的指标的异样检测能力较弱。相同,UnD 从一个 DL 模型和多个 ML 模型中取得投票后果,对具备不确定性或各种周期性的工夫序列具备更强的鲁棒性。此外,UnD 在输出的检测指标的历史数据有余的状况下提供了更正当的检测。

图 1 中的实线箭头示意前向流,而虚线箭头示意反向流传训练。在失去每个模块的检测后果后,依据为每个模块设置的损失函数别离对 LnB 和 UnD 进行反向流传训练,LnB 和 UnD 都进行更新,即模型训练。在模型训练之后,LnB 学习生成一个自适应基线,同时,LnB 为 UnD 赋予 基于无监督学习预测将来异样状态的能力。

在线检测不须要训练步骤,所以按入参格局输出工夫序列,可间接失去检测后果。这训练和在线检测两个模块的具体介绍如下:

其中 f 示意模型学习所采纳的网络,Ti 示意第 i 天的数据。在训练阶段,a 和 b 会及时随着传入的指标数据自动更新,造成可适应的基线。在测试状态下,y ‘ final 是咱们的最终预测。长短周期辨认的重点是引入校对项,为历史上最有价值的“记忆”赋予更多的权重。

如上所述,有两种办法用于辨认长短周期,即峰值检测和 SBD 间隔计算。每天的峰值数量、每天的峰值最大值以及每天第一和第二个最大值的残差是用于辨认长短周期,除了这种峰值查看,SBD 是辨认长短周期的代替办法。假如咱们有两个输出序列 X 和 Y(在咱们的例子中,14 天的数据被均匀分成两局部)。两个序列的 SBD 后果能够依据以下等式计算,

其中 SBD 的范畴从 0 到 2,在咱们的案例中 s=0。SBD 越小,阐明两个序列属于同一周期的类似度越高。

最佳开始工夫通过寻找不同工夫粒度(如 10s 和 1min)下的最佳开始工夫来关注拟合精度。待检测的工夫序列总是遵循肯定的周期性,但依据咱们的试验验证,在不同地位抉择的开始工夫可能会导致拟合精度不同。咱们选取均方根误差 (RMSE) 用作优化搜寻过程的指标函数:

其中 y’ 代表预测后果,而 y 代表根本事实。k 示意检测到的序列中的第 k 个起始地位。采纳 L -BFGS 通过最小化指标函数实现主动搜寻。

基线生成 LnB 的外围过程是基线生成。与 RNN 相比,LSTM 蕴含了三个门,即忘记门、输出门和输入门,这种门设计在辨认历史中的重要信息方面体现出更好的性能,加重了对近程历史的依赖和梯度隐没。输出数据经 LSTM,输入实践上暗示了失常数据的冀望。因而,咱们将损失函数训练为:

通过缩小理论值和预测值之间的误差,网络能够学习预测工夫序列的失常行为。

咱们抉择 95% 置信区间,计算基线的下限和上限:

LnB 的最初一步是自适应调整,这是实现“自适应”的关键步骤。通过 LSTM 取得的下限和上限是初始基线。而后通过极值点平滑和插值批改初始基线。即初始基线中的所有峰点和谷点都造成了初始下限和上限。而后采纳拉格朗日插值进行细粒度数据填充以造成平滑的基线。

DL (GRU) 和 ML(IForest、基于角度的异样值检测 -ABOD 和基于集群的部分异样值因子 -CBLOF)从多个级别检测异样,不须要标签信息或阈值定义。作为回归工作,GRU 学习给定工夫序列的正态分布并输入对将来的预测。与 LSTM 从长期历史中捕获外在特色的能力相比,GRU 在数据量有余且须要效率的状况下实践上体现良好。与 LnB 不同,UnD 将较短的序列作为输出。因而,UnD 中的 GRU 单元是 LnB 的补充。另一方面,IForest、ABOD 和 CBLOF 是用于异样检测的三种基于 ML 的聚类算法。UnD 的最终检测是 GRU、IForest、ABOD 和 CBLOF 通过投票计划的合并后果。

对于 GRU,咱们采纳与 LnB 雷同的损失函数。区别在于输出长度(在下一节中解释)。训练有素的 GRU 会给出预测的精确值 y’。在这里,定义异样权重 (AW) 以确定预测是否异样。

AW 是异样辨认的要害决定因素,并且依据教训常识主动学习以满足在咱们的案例中检测到的异样百分比应在 1%-3% 以内的条件。当波及到不同的畛域或数据集时,也能够依据教训常识确定 AW。IForest、ABOD 和 CBLOF 是罕用的异样值检测办法,它们的输入后果能够看作是一个形容异样概率的分数。而后将所有 GRU、IForest、ABOD 和 CBLOF 的检测后果编码并拼接成一个 one-hot 矩阵,其中 0 示意失常,1 示意异样,如图 3 所示的示例。接下来,咱们失去每个工夫步对应的“1”的总数。通过与投票数 n(在咱们的例子中 n = 2)的比拟,如果“1”的总数不小于 n,则合并后果被检测为异样,反之亦然。n 是一个参数,须要通过几个简略的试验来确定,例如逐步增加值或放大范畴。

通过投票计划的合并后果能够从不同方面揭示外在特色,因为 GRU 的回归后果蕴含显示减少或缩小趋势的准确值,而 ML 后果出现 0 或 1 仅示意异样与否,但具备更精确的决策,因为这些模型能够利用从附加维度或测量中捕捉的信息(例如,基于角度视角的 ABOD 和基于概率视角的 CBLOF)。因而,多个高级算法的合并后果能够充分利用给定的数据进行全面的预测。

咱们的模型次要有三个步骤,具体介绍如下:

第一步:数据预处理

LnB 和 UnD 对数据拆分和连贯有不同的要求,两个模块的输出数据是不同的。例如,以后工夫为 t,工夫序列的周期性为 T(如 7 天)。咱们的指标是检测 t+1 时刻的值是否异样。在这种状况下,LnB 的输出是过来 2*T 周期(即 14 天)收集的历史数据。抉择 2*T 周期的起因是 14 天之前的历史数据重要性较低,如果只收集一个周期的数据,可能会受到异样事件的影响。相同,UnD 采纳最相干的信息而不是应用长历史,并且抉择三个滑动窗口笼罩的序列作为输出数据。三个窗口的长度别离为 30 分钟、60 分钟和 60 分钟。

从图 4 能够看出,UnD 输出中有 3 个段串联,即 [Xt-30min:t, Xt+1-1day-30min:t+1- 1day+30min, Xt+1-7days-30min: t+1-7 天 +30 分钟]。这种连贯提供了一种新的输出结构设计,为特色学习和将来预测提供了最相干的信息。总之,LnB 将过来 14 天的序列作为输出,而 UnD 将过来 30 分钟、1 天前的 60 分钟和 7 天前的 60 分钟作为输出。

数据填充采纳 K-NN 作为数据填充办法,以确保所有输出样本的长度雷同且可读。数据过滤为保障输出数据的有效性,对输出数据进行平滑过滤,以打消因噪声引起的毛刺。数据转换对训练后果和疾速收敛十分重要。在输出训练过程之前,原始数据还须要一个转换过程,包含归一化和对数转换,如(7)所示。

归一化防止了不同维度的副作用,有利于模型疾速收敛。此外,它还确保输入不会超过输出的最小值和最大值,因为在输入上施行了指数变换。同时,对数变换能够在不扭转数据特色和数据相关性的状况下,加重方差,平滑变动。

第二步:模型训练

如图 1 中的流程图所示,LnB 和 UnD 都是依据训练数据别离训练的。然而,如上所述,两个模块的输出是不同的。LnB 将较长的历史数据作为输出,并尝试捕捉检测到的工夫序列的丰盛信息,而 UnD 将最相干但较短的序列部署为训练数据。UnD 中的 GRU 和 LnB 通过缩小第二局部中介绍的损失函数来学习检测到的序列的失常行为。同时,IForest、ABOD 和 CBLOF 学习了无监督聚类模型。上述单元的所有输入都是一步超前的异样检测。

第三步:在线异样检测

在运行时,传入的数据首先进入预处理模块,而后同时进入 LnB 和 UnD。输出数据的格局应与训练阶段统一。如果两个模块的任一后果异样,则提醒待检测数据异样。LnB 和 UnD 的交融机制对工夫序列进行了全面的检测,升高了潜在异样脱漏的概率。另一方面,LnB 中较长的历史输出和 UnD 中的多模型投票计划无效地防止了将失常的误认为是异样的。

通过京东外部多场景多组数据验证,模型在线上运行的成果评估如下表所示:

此外,能够灵便抉择“and”或“or”来整合 LnB 和 UnD 的后果。没有对立的规定,要看理论场景的需要。在咱们的落地实际场景中,这两个数据集都须要保障召回率,因而咱们采取“或”操作,这意味着无论哪个检测到异样都会报警。如果须要较低的正告级别,咱们能够抉择“和”作为积分运算。抉择三个风行的基线 IForest、ABOD 和 CBLOF 进行比拟。此外。咱们还比拟了咱们的办法和独自应用 LnB 或 UnD 的办法的后果,如上表所示。从定量比拟中,很显著,所提出的办法,即 LnB+UnD 在两者中都取得了最高的 F1 分数数据集。LnB+UnD 的组合比独自采纳 LnB 或 UnD 成果更好。而且咱们的模型优于其余三个基线,这也证实了咱们并行机制的有效性和必要性。

咱们提出的一种用于工夫序列剖析的无阈值异样检测办法,即 LSTM 构建的 LnB 和 DL、ML 模型交融机制构建的 UnD,以互补和智能的形式实现异样检测。在具备不同长短周期和变化趋势的实在实际场景的两个数据集上进行了试验,比拟后果证实了咱们办法的有效性和准确性。

  • Threshold-free Anomaly Detection for Streaming Time Series through Deep Learning. ICMLA.
  • ieeexplore 检索:https://ieeexplore.ieee.org/a…

作者:张静

正文完
 0