1. 概述
大型集群系统中,可能存在软件问题和硬件问题导致的系统故障,严重影响了系统的高可用性。这就要求7*24小时,对系统不间断监控。这就意味着需要不间断地监控大量时间序列数据,以便检测系统潜在的故障和异常现象。然而,实际当中的系统异常很多,且不容易发现;从而导致人工方式监控方式效率很低。
异常场景本质上是一个或者多个数据点;数据点一般在系统运行过程中产生,且能反应系统的功能是否正常,多以日志形式呈现。当系统功能发生异常时,就会产生异常数据。快速高效地发现这些异常值,对于快速止损具有重要意义。对此,我们提出一种基于时间序列的异常识别模型,用来及时发现异常。
对于多数系统,一般都有成功率、流量等指标,故障发生时,这些指标也会出现响应的异常。我们将系统成功率、流量统一称为特征值变量,并对其进行建模,从而方便后续其它特征变量的扩展。为了更好地感知这些特征变量的突变,需要对特征变量进行计算处理或者空间转换。那么异常识别问题就转换为以下两个问题:
- 特征变量的计算处理和转换
- 突变的判断
针对这两个关键问题,我们将在下文中进行建模和分析。
2. 异常识别
如下图,通过计算器进行特征变量的计算处理和转换,通过异常检测器来判断数值的突变,从而解决上面的两个问题。其中,异常检测器由比较器和决策器组成。
对于给定时间序列二维矩阵 X = { x t m ∈ R : ∀ t ≥ 0 , ∀ m ≥ 0 } X=\{x^m_t∈R:∀t≥0, ∀m≥0\} X={
xtm∈R:∀t≥0,∀m≥0} , x t m x_t^m xtm为 t t t时刻的第m个指标的真实数据, u t m u_t^m utm表示时间 t t t的 x t m x_t^m xtm的计算值, y t m y_t^m ytm为第m个指标的输出结果, y t y_t yt为整体预测结果。
x t m x_t^m xtm通过计算器得到计算值 u t m u_t^m utm,然后 x t m x_t^m xtm 和 u t m u_t^m utm分别作为比较器的输入,得到第m个指标的输出 y t m y_t^m ytm。 y t 1 y_t^1 yt1, y t 2 y_t^2 yt2… y t m y_t^m ytm作为决策器的输入得到 y t y_t yt。 y t y_t yt是一个二元值,可以用TRUE
(表示输出数据正常),FALSE
(表示输入数据异常)表示。下面对计算器和检测器进行说明。
2.1 计算器
计算器用来对输入值 x t m x_t^m xtm 进行计算或者空间转换,从而得到特征变量的计算值 u t m u_t^m u