掌桥专利:专业的专利平台
掌桥专利
首页

基于方向偏差的业务异常检测方法、装置和介质

文献发布时间:2023-06-19 09:57:26


基于方向偏差的业务异常检测方法、装置和介质

技术领域

本发明涉及网络业务异常检测领域,具体而言,涉及一种利用网络中的业务学习基线根据计算的向量方向偏差来检测业务异常的方法、装置和介质。

背景技术

迄今已经存在诸多研究以基于流量基线进行异常检测,其主要利用网络流量某方面的特征,比如带宽bps、包速率pps、报文长度或者其他某个特征字段的值等,统计特征向量以形成基线,设定容忍度区间,然后把当前的实际流量特征与基线值进行对比,并计算实际值与基线值的差异,如果该差异落在容忍度区间内,则认为是正常误差,否则认为流量异常。基于基线阈值的方法,通常按照百分比或绝对值设置阈值范围。

基于阈值范围判断流量是否异常的方法,在大部分场景下是可以满足要求的,但是也存在一些不能及时发现问题的场景。比如,某一个维度特征基线的阈值的范围是10-20之间,那么只要检测数据落在这个区间范围内就是正常场景。在正常的场景下,检测数据应该是围绕15上下波动,如果监测到该数据长期等于19,那么很有可能是存在业务异常的,但传统的基于阈值的检测判断方案无法识别这类异常。然而这种异常判断对于工业控制系统尤其重要,如果温度或压力等数据长期处于高位或长期处于低位,都很有可能导致工业系统损坏,造成严重的后果。2010年发现的“震网”病毒基本就是采用这种攻击方式,导致伊朗的铀浓缩离心机的转速长时间在高负荷和低负荷两个极端情况下运行,最后导致加速老化,损毁率很高。

结合上述场景,考虑到现有的流量异常检测算法的局限性,本专利采用向量方向偏差检测算法,能更准确的识别业务数据的变化特征,有效检测这类业务异常情况。

发明内容

业务异常检测是所有网络业务系统都面临的技术问题。业务异常检测最常用的算法是建立各种流量基线,然后设置容忍度或阈值范围,通过检查实际业务数据是否满足基线范围要求,来判断业务是否异常。

在工控控制系统中,一些业务数据曲线不仅要符合容忍度或阈值的要求,还需要满足变化方向的要求。如果监测数据虽然在容忍度范围内却长期高位不变(如前文所述,长期等于19),则很有可能已经出现异常情况,需要及时报警检修。

鉴于该情况而做出了本发明,根据本发明的基于方向偏差的业务异常检测方法、装置和介质主要通过对比相同周期的业务基线和实际曲线的变化方向,来有效检测业务异常。相比传统的异常检测算法,本发明的业务异常检测方法、装置和介质在基线容忍度或阈值的基础上,引入向量方向偏差的概念,计算实时数据和基线数据的方向偏差,从而侧重曲线波动方向的检测,能及时检查出业务数据走向偏离了基线的正确方向,从而更准确的识别业务数据的变化特征,发现一些更隐藏的业务异常。而且,本发明的业务异常检测方法、装置和介质计算方式简单,对CPU消耗极少,易于工程化实施。

根据本发明的第一方面,提供一种业务异常检测方法,所述方法包括:

业务基线生成步骤,基于特定业务特征的历史业务数据,生成业务数据随时间变化的业务基线(Base_t,Base_v),其中,Base_t表示时间,Base_v表示基线数据;

实际业务数据统计步骤,统计所述特定业务特征的实际业务数据随时间的变化曲线(Real_t,Real_v),其中,Real_t表示时间,Real_v表示实际业务数据;

容忍度判定步骤,根据容忍度算法,判断在时间Real_t处的所述实际业务数据Real_v是否符合所述业务基线(Base_t,Base_v)的容忍度范围;

方向偏差计算步骤,分别计算在相邻数据点的基线数据的基线向量Base_d和对应的所述实际业务数据的实际业务数据向量Real_d,并且比较所述基线向量Base_d与所述实际业务数据向量Real_d,以获得所述方向偏差d;以及

业务异常判定步骤,综合连续的多个数据点中的所有相邻数据点的所述方向偏差d,以判定是否出现业务异常。

进一步地,Base_t与Real_t的时间间隔相同,并且所述基线数据和所述实际业务数据的周期相同。

进一步地,在所述方向偏差计算步骤中,将相邻的两个所述基线数据定义为(Base_t1,Base_v1),(Base_t2,Base_v2),其中,

当Base_v2-Base_v1>0时,Base_d=1;

当Base_v2-Base_v1=0时,Base_d=0;

当Base_v2-Base_v1<0时,Base_d=-1;并且其中,

将对应的相邻的两个所述实际业务数据定义为(Real_t1,Real_v1),(Real_t2,Real_v2),其中,

当Real_v2-Real_v1>0时,Real_d=1;

当Real_v2-Real_v1=0时,Real_d=0;

当Real_v2-Real_v1<0时,Real_d=-1。

进一步地,所述基线数据的基线向量Base_d与所述实际业务数据向量Real_d的所述方向偏差d=Real_d-Base_d,其中,

当d=0时,表示所述实际业务数据与所述基线数据的所述方向偏差一致;

当d=2或d=-2时,表示所述实际业务数据与所述基线数据的所述方向偏差最大,且向量方向相反。

进一步地,在业务异常判定步骤中,通过将所述多个数据点中的所述所有相邻数据点的所述方向偏差d累加而计算总和方向偏差D,并且

当所述总和方向偏差D超过预先设定的方向偏差阈值范围时,判定所述实际业务数据异常。

进一步地,根据所述多个数据点的个数,确定所述方向偏差阈值范围。

进一步地,在容忍度判定步骤中,如果所述实际业务数据Real_v超过所述容忍度范围,则直接判定所述业务数据异常。

进一步地,在所述业务基线生成步骤中,以所述特定业务特征作为检测对象,基于所述特定业务特征的所述历史业务数据,按照业务周期学习建立业务基线模型,以形成和时间相关的所述业务基线(Base_t,Base_v)的曲线。

根据本发明的第二方面,提供了一种业务异常检测装置,所述装置包括:

业务基线生成模块,该业务基线生成模块用于基于特定业务特征的历史业务数据,生成业务数据随时间变化的业务基线(Base_t,Base_v),其中,Base_t表示时间,Base_v表示基线数据;

实际业务数据统计模块,该实际业务数据统计模块用于统计所述特定业务特征的实际业务数据随时间的变化曲线(Real_t,Real_v),其中,Real_t表示时间,Real_v表示实际业务数据;

容忍度判定模块,该容忍度判定模块用于根据容忍度算法,判断在时间点Real_t处的所述实际业务数据Real_v是否符合所述业务基线(Base_t,Base_v)的容忍度范围;

方向偏差计算模块,该方向偏差计算模块用于分别计算在相邻数据点的基线数据的基线向量Base_d和对应的所述实际业务数据的实际业务数据向量Real_d,并且比较基线向量Base_d与所述实际业务数据向量Real_d,以获得所述方向偏差d;以及

业务异常判定模块,该业务异常判定模块用于综合连续的多个数据点中的所有相邻数据点的所述方向偏差d,以判定是否出现业务异常。

进一步地,Base_t与Real_t的时间间隔相同,并且所述基线数据和所述实际业务数据的周期相同。

进一步地,所述方向偏差计算模块将相邻的两个所述基线数据设定为(Base_t1,Base_v1),(Base_t2,Base_v2),其中,

当Base_v2-Base_v1>0时,Base_d=1;

当Base_v2-Base_v1=0时,Base_d=0;

当Base_v2-Base_v1<0时,Base_d=-1;并且其中,

所述方向偏差计算模块将对应的相邻的两个所述实际业务数据设定为(Real_t1,Real_v1),(Real_t2,Real_v2),其中,

当Real_v2-Real_v1>0时,Real_d=1;

当Real_v2-Real_v1=0时,Real_d=0;

当Real_v2-Real_v1<0时,Real_d=-1。

进一步地,所述基线数据的基线向量Base_d与所述实际业务数据向量Real_d的所述方向偏差d=Real_d-Base_d,其中,

当d=0时,表示所述实际业务数据与所述基线数据的所述方向偏差一致;并且

当d=2或d=-2时,表示所述实际业务数据与所述基线数据的所述方向偏差最大,且完全相反。

进一步地,所述业务异常判定模块通过将所述多个数据点中的所述所有数据点的所述方向偏差d累加而计算总和方向偏差D,并且

当所述总和方向偏差D超过预先设定的方向偏差阈值范围时,判定所述实际业务数据异常。

根据本发明的第三方面,提供了一种业务异常检测装置,所述装置包括存储程序的存储单元和处理单元,其中,

所述处理单元执行所述程序用以实现第一方面所述的方法中的各个步骤。

根据本发明的第四方面,提供了一种计算机可读介质,其中,

所述介质上存储有程序,该程序被执行用以实现如第一方面所述的方法中的各个步骤。

以下结合本发明的附图及优选实施方式对本发明的技术方案做进一步详细地描述,本发明的有益效果将进一步明确。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,但其说明仅用于解释本发明,并不构成对本发明的不当限定。

图1是示出根据本发明一优选实施例的基于方向偏差的业务异常检测方法的各个步骤的示意图;

图2是示出根据本发明一优选实施例的基于方向偏差的业务异常检测装置的配置的示意图;

图3示出实际业务数据和业务基线在一个时间段内的随时间变化的曲线的一个具体实例;

图4示出实际业务数据和业务基线在另一个时间段内的随时间变化的曲线的另一个具体实例;以及

图5是示出根据本发明一优选实施例的基于方向偏差的业务异常检测装置的计算机系统的示意性配置的图。

具体实施方式

下面将结合本发明的具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分优选实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面结合图1描述根据本发明的基于方向偏差的业务异常检测方法的详细步骤。

图1是示出根据本发明一优选实施例的基于方向偏差的业务异常检测方法的各个步骤的示意图,如图1所示,根据本发明的基于方向偏差的业务异常检测方法包括业务基线生成步骤S1、实际业务数据统计步骤S2、容忍度判定步骤S3、方向偏差计算步骤S4和业务异常判定步骤S5。

下文将结合图1详细描述上述基于方向偏差的业务异常检测方法的各个步骤。

S1:业务基线生成步骤

基于特定业务特征的历史业务数据,生成业务数据随时间变化的业务基线(Base_t,Base_v)。

具体的,以确定的业务特征作为检测对象,基于该业务特征的历史业务数据,按照业务周期学习建立业务基线模型,以形成和时间相关的业务基线的曲线。业务基线一般表示一个2维向量,每一个基线值可以用(Base_t,Base_v)表示,Base_t代表时间,Base_v代表基线业务数据。一个实际的业务基线可图形化表示为一条曲线,其中时间Base_t一般是等差数列,即时间间隔相同。

业务特征可以是网络流量Kbps、包速率pps、CPU、内存、温度、转速、电压、气压等。

S2:实际业务数据统计步骤

统计所述特定业务特征的实际业务数据随时间的变化曲线(Real_t,Real_v)。

具体地,实时统计实际业务数据随时间的变化,每个实际业务数据可以用(Real_t,Real_v)表示,Real_t代表时间,Real_v代表实际业务数据。实际业务数据随时间的变化可图形化表示为一条曲线,其中,时间Real_t一般是等差数列,即时间间隔相同,并且优选的,时间Base_t与时间Real_t的时间间隔相同,并且所述基线数据和所述实际业务数据的周期(单位时间长度,即,单个周期)相同。

S3:容忍度判定步骤

根据容忍度算法,判断在时间点Real_t处的实际业务数据Real_v是否符合业务基线(Base_t,Base_v)的容忍度范围。

具体的,如果所述实际业务数据Real_v超过容忍度范围,则判定实际业务数据异常,并可以将该异常结果直接进行上报处理。

作为一个实例,本发明所依据的容忍度算法可以采用例如绝对值偏差或比例偏差。

S4:方向偏差计算步骤,对实际业务数据和同周期的基线数据进行向量方向偏离检测,分别计算在相邻时间点的基线数据的基线向量Base_d和对应的实际业务数据的实际业务数据向量Real_d,并且比较基线向量Base_d与实际业务数据向量Real_d,以获得方向偏差d。

具体步骤如下:

首先以实际业务数据和基线数据中的对应的2个数据点为例进行说明。假设,基线数据中的2个数据点为(Base_t1,Base_v1)和(Base_t2,Base_v2),实际业务数据中的对应的2个数据点为(Real_t1,Real_v1)和(Real_t2,Real_v2)]。并且,两个数据的时间差相同,即Base_t2-Base_t1=Real_t2-Real_t1。

假定基线向量为Base_d,实际业务数据向量为Real_d,则具体计算方式的以伪代码形式表示如下:

用同样的算法计算实时数据的向量偏差Real_d:

即,可以解释为当Base_v2-Base_v1>0时,Base_d=1;当Base_v2-Base_v1=0时,Base_d=0;当Base_v2-Base_v1<0时,Base_d=-1。

当Real_v2-Real_v1>0时,Real_d=1;当Real_v2-Real_v1=0时,Real_d=0;当Real_v2-Real_v1<0时,Real_d=-1。

从而,通过上述计算分别获得了基线向量Base_d和实际业务数据向量Real_d的值,基于这两个向量,计算方向偏差d,其中,

方向偏差d=Real_d-Base_d。

基于上述基线向量Base_d和实际业务数据向量Real_d的值,可见,d的取值范围是-2≤d≤2。

根据上述计算过程的描述可知:

当d=0时,表示实际数据的方向偏差和基线数据的方向偏差完全一致;

当d=2时,表示实际数据的方向偏差和基线数据的方向偏差为正,并达到最大值,含义为基线向量方向向下,但是实际数据向量的方向向上。

当d=-2时,表示实际数据的偏差和基线数据的方向偏差为负,并达到最大值,含义为基线向量方向向上,但是实际数据向量的方向向下。

所以,根据d值,可以判断2个数据点的向量的方向偏差。

S5:业务异常判定步骤

综合连续的多个数据点中的所有相邻数据点的所述方向偏差d,以判定是否出现业务异常。具体的,通过将所述多个数据点中的所有相邻数据点的所述方向偏差d累加而计算总和方向偏差D,并且当所述总和方向偏差D超过预先设定的方向偏差阈值范围时,判定实际业务数据异常。

由于实际的业务数据总是允许其围绕基线数据上下波动,因此只依靠上述2个数据点的方向偏差不足以判断业务是否异常。鉴于此,为了更准确的判断异常,需要汇集连续的多个数据点的方向偏差进行综合判断。

假设以综合10个业务点的数据为例,来判断方向偏差。10个业务数据共形成9个线段,分别对每一个线段计算方向偏差d,分别记为d1、d2、d3...d9,总和方向偏差记为D,则D可以表示为:

可见,D的值越大,表示实际业务数据的实际业务数据向量与基线数据的基线向量的方向偏差越大;如果实际数据围绕基线数据上下波动,则d值中会出现正数和负数,总和方向偏差D的值会得到消减。实际上,如果基线值比较准确,在取样空间足够大时,D趋近于0。但是取样太大,过多的历史数据会影响异常判断的及时性,所以进行异常判断时,不适合取样过多。理论上来讲,取样个数不能大于1个业务周期内的数据个数,否则可能因周期抵消波动,弱化方向偏差的检测。比如,业务周期是40个点,即每40个点后重新开始一轮循环,那么取样就应该小于40,具体需要参考业务数据的波形来确定取样的个数。一般10个左右比较合适,具体取样个数可以根据业务的实际需求进行调整。

根据业务的实际需求而确定取样个数后,再根据取样个数确定方向偏差阈值范围,从而可以判断总和方向偏差是否超出方向偏差阈值范围,超出该阈值范围则代表业务异常。

以上详细描述了根据本发明的基于方向偏差的业务异常检测方法的各个步骤。为了有助于理解,下文将以一个具体实例,描述本发明的基于方向偏差的业务异常检测方法如何基于方向偏差进行业务异常检测。

应当理解的是,以下文字仅仅用以描述本发明的一种或几种具体的实施方式,并不对本发明具体请求的保护范围进行严格限定。

本实施例的业务数据基线针对某个业务进程的内存占用(特定业务特征)。为简化描述,不描述内存单位,比如内寸占用为20MB,则记录为20。另外,该实施例省略了传统的容忍度判定过程,即,前文描述的步骤S3。假设在步骤S3中,实际业务数据都没有超过容忍度范围。

假设某一段时间内的内存占用的业务基线的基线数据(通过步骤S1获得)和实际业务数据(通过步骤S2获得)的值如下表(表1)所示:

表1

参见图3所示,其示出了实际业务数据1和业务基线所对应的随时间变化的曲线。

计算各个相邻的数据点之间的Base_d分别为1、-1、-1、1、1、1、-1、1、0。

计算各个相邻的数据点之间的Real_d1分别为-1、1、1、1、-1、1、-1、-1、-1。

计算方向偏差d1=Real_d1-Base_d,分别为-2、2、2、0、-2、0、0、-2、-1。

对应的总和方向偏差D1为以上计算方向偏差d1的总和,即D1=-3。

假设另一段时间的内存占用基线数据和实际业务数据的值如下表(表2)所示:

表2

参见图4所示,其示出了实际业务数据2和业务基线所对应的随时间变化的曲线。

计算各个相邻的数据点之间的Base_d分别为1、-1、-1、1、1、1、-1、1、0。

计算各个相邻的数据点之间的Real_d2分别为1、1、1、1、1、1、1、1、1。

计算方向偏差d2=Real_d2-Base_d,分别为0、2、2、0、0、0、2、0、1。

对应的总和方向偏差D2为以上计算方向偏差d2的总和,即D2=7。

如果将方向偏差阈值范围设定为[-6,6],则根据以上计算可知,D1在方向偏差阈值范围内,而D2超过了方向偏差阈值范围,则判定实际业务数据1正常,而实际业务数据2存在业务异常。

可见,在实际业务数据2中,虽然其在步骤S3中符合容忍度范围,即,没有超过内存占用的阈值范围,但是由于其方向偏差超过了方向偏差阈值,因此可能存在业务异常,需要引起关注。

以上详细描述了本发明的基于方向偏差的业务异常检测方法及其具体实施例,根据本发明的基于方向偏差的业务异常检测方法,主要通过对比相同周期的业务基线和实际曲线的变化方向,来有效检测业务异常。相比传统的异常检测算法,本发明的业务异常检测方法在基线容忍度或阈值的基础上,引入向量方向偏差的概念,计算实时数据和基线数据的方向偏差,从而侧重曲线波动方向的检测,能及时检查出业务数据走向偏离了基线的正确方向,从而更准确的识别业务数据的变化特征,发现一些更隐藏的业务异常。而且,本发明的业务异常检测方法计算方式简单,对CPU消耗极少,易于工程化实施。

本发明的另一方面,提供了一种基于方向偏差的业务异常检测装置100如图2所示,根据本发明的基于方向偏差的业务异常检测装置100包括业务基线生成模块110、实际业务数据统计模块120、容忍度判定模块130、方向偏差计算模块140和业务异常判定模块150。

下文将结合图2详细描述上述基于方向偏差的业务异常检测装置100的各个模块。

业务基线生成模块110

该业务基线生成模块110用于基于特定业务特征的历史业务数据,生成业务数据随时间变化的业务基线(Base_t,Base_v)。

具体的,业务基线生成模块110以确定的业务特征作为检测对象,基于该业务特征的历史业务数据,按照业务周期学习建立业务基线模型,以形成和时间相关的业务基线的曲线。业务基线一般表示一个2维向量,每一个基线值可以用(Base_t,Base_v)表示,Base_t代表时间,Base_v代表基线业务数据。一个实际的业务基线可图形化表示为一条曲线,其中时间Base_t一般是等差数列,即时间间隔相同。

业务特征可以是网络流量Kbps、包速率pps、CPU、内存、温度、转速、电压、气压等。

实际业务数据统计模块120

该实际业务数据统计模块120用于统计所述特定业务特征的实际业务数据随时间的变化曲线(Real_t,Real_v)。

具体地,实际业务数据统计模块120实时统计实际业务数据随时间的变化,每个实际业务数据可以用(Real_t,Real_v)表示,Real_t代表时间,Real_v代表实际业务数据。实际业务数据随时间的变化可图形化表示为一条曲线,其中,时间Real_t一般是等差数列,即时间间隔相同,并且优选的,时间Base_t与时间Real_t的时间间隔相同,并且所述基线数据和所述实际业务数据的周期(单位时间长度)相同。

容忍度判定模块130

容忍度判定模块130用于根据容忍度算法,判断在时间点Real_t处的实际业务数据Real_v是否符合业务基线(Base_t,Base_v)的容忍度范围。

具体的,如果实际业务数据Real_v超过容忍度范围,则容忍度判定模块130判定实际业务数据异常,并可以将该异常结果直接进行上报处理。

作为一个实例,本发明所依据的容忍度算法可以采用例如绝对值偏差或比例偏差。

方向偏差计算模块140

该方向偏差计算模块140用于对实际业务数据和同周期的基线数据进行向量方向偏离检测,分别计算在相邻时间点的基线数据的基线向量Base_d和对应的所述实际业务数据的实际业务数据向量Real_d,并且比较所述基线向量Base_d与所述实际业务数据向量Real_d,以获得方向偏差d。

具体步骤如下:

首先以实际业务数据和基线数据中的对应的2个数据点为例进行说明。假设,基线数据中的2个数据点为(Base_t1,Base_v1)和(Base_t2,Base_v2),实际业务数据中的对应的2个数据点为(Real_t1,Real_v1)和(Real_t2,Real_v2)]。并且,两个数据的时间差相同,即Base_t2-Base_t1=Real_t2-Real_t1。

假定基线向量为Base_d,实际业务数据向量为Real_d,则方向偏差计算模块140所执行的具体计算方式的以伪代码形式表示如下:

并且,方向偏差计算模块140用同样的算法计算实时数据的向量偏差Real_d:

即,可以解释为当Base_v2-Base_v1>0时,Base_d=1;当Base_v2-Base_v1=0时,Base_d=0;当Base_v2-Base_v1<0时,Base_d=-1。

当Real_v2-Real_v1>0时,Real_d=1;当Real_v2-Real_v1=0时,Real_d=0;当Real_v2-Real_v1<0时,Real_d=-1。

从而,方向偏差计算模块140通过上述计算分别获得了基线向量Base_d和实际业务数据向量Real_d的值,基于这两个向量,计算方向偏差d,其中,

方向偏差d=Real_d-Base_d。

基于上述基线向量Base_d和实际业务数据向量Real_d的值,可见,d的取值范围是-2≤d≤2。

根据上述计算过程的描述可知:

当d=0时,表示实际数据的方向偏差和基线数据的方向偏差完全一致;

当d=2时,表示实际数据的方向偏差和基线数据的方向偏差为正,并达到最大值,含义为基线向量方向向下,但是实际数据向量的方向向上。

当d=-2时,表示实际数据的偏差和基线数据的方向偏差为负,并达到最大值,含义为基线向量方向向上,但是实际数据向量的方向向下。

所以,根据d值,可以判断2个数据点的向量的方向偏差。

业务异常判定模块150

业务异常判定模块150用于综合连续的多个数据点的所述方向偏差d,以判定是否出现业务异常。具体的,业务异常判定模块150通过将所述多个数据点中的所有相邻数据点的所述方向偏差d累加而计算总和方向偏差D,并且当所述总和方向偏差D超过预先设定的方向偏差阈值范围时,判定所述实际业务数据异常。

由于实际的业务数据总是允许其围绕基线数据上下波动,因此只依靠上述2个数据点的方向偏差不足以判断业务是否异常。鉴于此,为了更准确的判断异常,业务异常判定模块150需要汇集连续的多个数据点的方向偏差进行综合判断。

假设业务异常判定模块150以综合10个业务点的数据为例,来判断方向偏差。10个业务数据共形成9个线段,分别对每一个线段计算方向偏差d,分别记为d1、d2、d3...d9,总和方向偏差记为D,则D可以表示为:

可见,D的值越大,表示实际业务数据的实际业务数据向量与基线数据的基线向量的方向偏差越大;如果实际数据围绕基线数据上下波动,则d值中会出现正数和负数,总和方向偏差D的值会得到消减。实际上,如果基线值比较准确,在取样空间足够大时,D趋近于0。但是取样太大,过多的历史数据会影响异常判断的及时性,所以进行异常判断时,不适合取样过多。理论上来讲,取样个数不能大于1个业务周期内的数据个数,否则可能因周期抵消波动,弱化方向偏差的检测。比如,业务周期是40个点,即每40个点后重新开始一轮循环,那么取样就应该小于40,具体需要参考业务数据的波形来确定取样的个数。一般10个左右比较合适,具体取样个数可以根据业务的实际需求进行调整。

业务异常判定模块150根据业务的实际需求而确定取样个数后,再根据取样个数确定方向偏差阈值范围,从而可以判断总和方向偏差是否超出方向偏差阈值范围,超出该阈值范围则代表业务异常。

以上描述了根据本发明的基于方向偏差的业务异常检测装置,根据本发明的基于方向偏差的业务异常检测装置,主要通过对比相同周期的业务基线和实际曲线的变化方向,来有效检测业务异常。相比传统的异常检测算法及其装置,本发明的业务异常检测装置在基线容忍度或阈值的基础上,引入向量方向偏差的概念,计算实时数据和基线数据的方向偏差,从而侧重曲线波动方向的检测,能及时检查出业务数据走向偏离了基线的正确方向,从而更准确的识别业务数据的变化特征,发现一些更隐藏的业务异常。而且,本发明的业务异常检测装置计算方式简单,对CPU消耗极少,易于工程化实施。

另外,本发明的实施例还提供了基于方向偏差的业务异常检测方法和装置所应用的计算机系统,下面参考图5,其为适于用来实现本发明实施例的基于方向偏差的业务异常检测装置的计算机系统的结构示意图。图5所示仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图5所示,计算机系统300包括中央处理单元(CPU)301,其可以根据存储在只读存储器(ROM)302中的程序或者从存储部分308加载到随机访问存储器(RAM)303中的程序而执行各种适当的动作和处理。在RAM 303中,还存储有系统300操作所需的各种程序和数据。CPU 301、ROM302以及RAM 303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。

以下部件连接至I/O接口305:包括键盘、鼠标等的输入部分306;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分303;包括硬盘等的存储部分308;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分309。通信部分309经由诸如因特网的网络执行通信处理。驱动器310也根据需要连接至I/O接口305。可拆卸介质311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器310上,以便于从其上读出的计算机程序根据需要被安装入存储部分308。

特别地,根据本发明公开的实施例,上文参考流程图描述的步骤可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行图1所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分309从网络上被下载和安装,和/或从可拆卸介质311被安装。在该计算机程序被中央处理单元(CPU)301执行时,执行本发明的系统中限定的上述功能。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本发明各种实施例的方法、装置和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块及其单元也可以设置在处理器中,例如,可以描述为:一种处理器包括业务基线生成模块、实际业务数据统计模块、容忍度判定模块、方向偏差计算模块和业务异常判定模块。其中,这些模块的名称在某种情况下并不构成对该模块及其单元本身的限定,例如,方向偏差计算模块还可以被描述为“方向偏差获取模块”。

作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:

S1:业务基线生成步骤

基于特定业务特征的历史业务数据,生成业务数据随时间变化的业务基线(Base_t,Base_v)。

具体的,以确定的业务特征作为检测对象,基于该业务特征的历史业务数据,按照业务周期学习建立业务基线模型,以形成和时间相关的业务基线的曲线。业务基线一般表示一个2维向量,每一个基线值可以用(Base_t,Base_v)表示,Base_t代表时间,Base_v代表基线业务数据。一个实际的业务基线可图形化表示为一条曲线,其中时间Base_t一般是等差数列,即时间间隔相同。

业务特征可以是网络流量Kbps、包速率pps、CPU、内存、温度、转速、电压、气压等。

S2:实际业务数据统计步骤

统计所述特定业务特征的实际业务数据随时间的变化曲线(Real_t,Real_v)。

具体地,实时统计实际业务数据随时间的变化,每个实际业务数据可以用(Real_t,Real_v)表示,Real_t代表时间,Real_v代表实际业务数据。实际业务数据随时间的变化可图形化表示为一条曲线,其中,时间Real_t一般是等差数列,即时间间隔相同,并且优选的,时间Base_t与时间Real_t的时间间隔相同,并且所述基线数据和所述实际业务数据的周期(单位时间长度)相同。

S3:容忍度判定步骤

根据容忍度算法,判断在时间点Real_t处的实际业务数据Real_v是否符合业务基线(Base_t,Base_v)的容忍度范围。

具体的,如果所述实际业务数据Real_v超过容忍度范围,则判定实际业务数据异常,并可以将该异常结果直接进行上报处理。

作为一个实例,本发明所依据的容忍度算法可以采用例如绝对值偏差或比例偏差。

S4:方向偏差计算步骤,对实际业务数据和同周期的基线数据进行向量方向偏离检测,分别计算在相邻时间点的基线数据的基线向量Base_d和对应的所述实际业务数据的实际业务数据向量Real_d,并且比较所述基线向量Base_d与所述实际业务数据向量Real_d,以获得所述方向偏差d。

作为一个实例,本发明所依据的容忍度算法可以采用例如绝对值偏差或比例偏差。

具体步骤如下:

首先以实际业务数据和基线数据中的对应的2个数据点为例进行说明。假设,基线数据中的2个数据点为(Base_t1,Base_v1)和(Base_t2,Base_v2),实际业务数据中的对应的2个数据点为(Real_t1,Real_v1)和(Real_t2,Real_v2)]。并且,两个数据的时间差相同,即Base_t2-Base_t1=Real_t2-Real_t1。

假定基线向量为Base_d,实际业务数据向量为Real_d,则具体计算方式的以伪代码形式表示如下:

If(Base_v2-Base_v1>0)Then

Base_d=1

Else If(Base_v2-Base_v1==0)Then

Base_d=0

Else

Base_d=-1;

用同样的算法计算实时数据的向量偏差Real_d:

If(Real_v2-Real_v1>0)Then

Real_d=1

Else If(Real_v2-Real_v1==0)Then

Real_d=0

Else

Real_d=-1;

即,可以解释为当Base_v2-Base_v1>0时,Base_d=1;当Base_v2-Base_v1=0时,Base_d=0;当Base_v2-Base_v1<0时,Base_d=-1。

当Real_v2-Real_v1>0时,Real_d=1;当Real_v2-Real_v1=0时,Real_d=0;当Real_v2-Real_v1<0时,Real_d=-1。

从而,通过上述计算分别获得了基线向量Base_d和实际业务数据向量Real_d的值,基于这两个向量,计算方向偏差d,其中,

方向偏差d=Real_d-Base_d。

基于上述基线向量Base_d和实际业务数据向量Real_d的值,可见,d的取值范围是-2≤d≤2。

根据上述计算过程的描述可知:

当d=0时,表示实际数据的方向偏差和基线数据的方向偏差完全一致;

当d=2时,表示实际数据的方向偏差和基线数据的方向偏差为正,并达到最大值,含义为基线向量方向向下,但是实际数据向量的方向向上。

当d=-2时,表示实际数据的偏差和基线数据的方向偏差为负,并达到最大值,含义为基线向量方向向上,但是实际数据向量的方向向下。

所以,根据d值,可以判断2个数据点的向量的方向偏差。

S5:业务异常判定步骤

综合连续的多个数据点的所述方向偏差d,以判定是否出现业务异常。具体的,通过将所述多个数据点中的所有相邻数据点的所述方向偏差d累加而计算总和方向偏差D,并且当所述总和方向偏差D超过预先设定的方向偏差阈值范围时,判定实际业务数据异常。

由于实际的业务数据总是允许其围绕基线数据上下波动,因此只依靠上述2个数据点的方向偏差不足以判断业务是否异常。鉴于此,为了更准确的判断异常,需要汇集连续的多个数据点的方向偏差进行综合判断。

假设以综合10个业务点的数据为例,来判断方向偏差。10个业务数据共形成9个线段,分别对每一个线段计算方向偏差d,分别记为d1、d2、d3...d9,总和方向偏差记为D,则D可以表示为:

可见,D的值越大,表示实际业务数据的实际业务数据向量与基线数据的基线向量的方向偏差越大;如果实际数据围绕基线数据上下波动,则d值中会出现正数和负数,总和方向偏差D的值会得到消减。实际上,如果基线值比较准确,在取样空间足够大时,D趋近于0。但是取样太大,过多的历史数据会影响异常判断的及时性,所以进行异常判断时,不适合取样过多。理论上来讲,取样个数不能大于1个业务周期内的数据个数,否则可能因周期抵消波动,弱化方向偏差的检测。比如,业务周期是40个点,即每40个点后重新开始一轮循环,那么取样就应该小于40,具体需要参考业务数据的波形来确定取样的个数。一般10个左右比较合适,具体取样个数可以根据业务的实际需求进行调整。

根据业务的实际需求而确定取样个数后,再根据取样个数确定方向偏差阈值范围,从而可以判断总和方向偏差是否超出方向偏差阈值范围,超出该阈值范围则代表业务异常。

以上详细描述了本发明的各个实施例,根据本发明的基于方向偏差的业务异常检测方法、装置和介质主要通过对比相同周期的业务基线和实际曲线的变化方向,来有效检测业务异常。相比传统的异常检测算法,本发明的业务异常检测方法、装置和介质在基线容忍度或阈值的基础上,引入向量方向偏差的概念,计算实时数据和基线数据的方向偏差,从而侧重曲线波动方向的检测,能及时检查出业务数据走向偏离了基线的正确方向,从而更准确的识别业务数据的变化特征,发现一些更隐藏的业务异常。而且,本发明的业务异常检测方法、装置和介质计算方式简单,对CPU消耗极少,易于工程化实施。

以上所述仅为本申请的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

相关技术
  • 基于方向偏差的业务异常检测方法、装置和介质
  • 异常业务检测装置、异常业务检测方法及异常业务检测程序
技术分类

06120112362099