发明内容
针对上述技术问题,本说明书实施例提供一种指标异常发现方法和装置,技术方案如下:
根据本说明书实施例的第一方面,提供一种指标异常发现方法,该方法包括:
获取预设时间段内,包含时间点和对应所述时间点的指标值的时间序列数据;
将所述时间序列数据拆解为非误差数据与误差数据,其中,非误差数据包括指标周期数据与指标趋势数据,误差数据为既不符合预置的指标周期规律,也不符合根据所述时间序列数据计算出的指标走势的数据;
使用预设的假设检验算法计算时间序列内误差数据的分布规律,并确定当前误差数据是否符合所述时间序列内误差数据的分布规律;
根据计算结果确定当前指标值的异常情况。
根据本说明书实施例的第二方面,提供一种指标异常发现装置,该装置包括:
时间序列获取模块:用于获取预设时间段内,包含时间点和对应所述时间点的指标值的时间序列数据;
时间序列拆解模块:用于将所述时间序列数据拆解为非误差数据与误差数据,其中,非误差数据包括指标周期数据与指标趋势数据,误差数据为既不符合预置的指标周期规律,也不符合根据所述时间序列数据计算出的指标走势的数据;
误差数据计算模块:用于使用预设的假设检验算法计算时间序列内误差数据的分布规律,并确定当前误差数据是否符合所述时间序列内误差数据的分布规律;
指标异常确定模块:用于根据计算结果确定当前指标值的异常情况。
根据本说明书实施例的第三方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现一种指标异常发现,该方法包括:
获取预设时间段内,包含时间点和对应所述时间点的指标值的时间序列数据;
将所述时间序列数据拆解为非误差数据与误差数据,其中,非误差数据包括指标周期数据与指标趋势数据,误差数据为既不符合预置的指标周期规律,也不符合根据所述时间序列数据计算出的指标走势的数据;
使用预设的假设检验算法计算时间序列内误差数据的分布规律,并确定当前误差数据是否符合所述时间序列内误差数据的分布规律;
根据计算结果确定当前指标值的异常情况。
本说明书实施例所提供的技术方案,提供了一种指标异常发现方法,本说明书将一段时间内的指标数据拆解为非误差相关数据和误差相关数据,并检测当前误差相关数据是否符合一段时间内多个误差相关数据构成的概率分布规律,进而由当前误差相关数据的异常情况判断当前指标数据的异常情况。本说明书提供的方法根据一段时间内指标数据的自身规律自动判断当前指标的异常情况,比起现有技术简单设定报警阈值来说,本说明书提供的方法可降低误报率且较少人工设定消耗的时间。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在实际工作中里,有越来越多的数据指标需要进行异常监测,举例说明,网页的访问流量就是一种需要监控的指标,如果该指标出现异常,则需要进行报警处理,以确定是否发生网络攻击等问题。
现有技术中,通常需要人工设定每个指标的报警阈值,一种常用的策略就是将指标当前值与其同比值或环比值进行对比。举例说明,将指标的当前值与该指标24小时前的数据值进行对比,若两者差距在预设范围内,则认为该指标当前值没有异常。但这样的简单对比可能发生误报,且当需要监控的指标较多时,人工对各个指标设定报警阈值需要消耗很多时间。
针对以上问题,本说明书实施例提供一种指标异常发现方法,以及一种用于执行该方法的指标异常发现装置,下面对本实施例涉及的指标异常发现方法进行详细说明,参见图1所示,该方法可以包括以下步骤:
S101,获取预设时间段内,包含时间点和对应所述时间点的指标值的时间序列数据;
通常情况下,时间点与对应时间点的指标值是从指标采集源自动记录的,如自动记录网页每分钟的访问流量,并将该指标值(访问流量)和对应的记录时间通过时间序列的方式进行展示。参考图2,为通过图像对一段时间序列数据进行展示的示意图;
其中,指标数据的产生和采集是一个按时间固定发生的过程,当指标采集较频繁时,一段时间内累计的指标数据量就会很大,而在进行指标异常检测时,使用较长时间内的指标数据对检测的精确性更有利,但直接使用这段时间内所有的指标数据又会因为计算量较大会拖慢检测的时间。因为该异常检测通常需要较短时间检测一次-如每分钟检测一次,必须控制该检测时间在一定阈值内。
因此,通常将异常检测需要使用的指标数据分为两部分,即历史指标数据与实时指标数据,本步骤中提到的时间序列数据为实时指标数据,是最近一段时间的指标数据,用于异常检测计算。而历史指标数据是实时指标数据之前一段时间的数据,将历史指标数据中的可用参数进行离线提取,并将提取出的离线特征参数加入的实时异常检测计算中,以减少使用大量数据进行异常检测计算的压力。
S102,将所述时间序列数据拆解为非误差数据与误差数据,其中,非误差数据包括指标周期数据与指标趋势数据,误差数据为既不符合预置的指标周期规律,也不符合根据所述时间序列数据计算出的指标走势的数据;
具体地,可将时间序列数据拆解为指标周期数据,指标趋势数据与指标残差数据。参考图3与图4,分别为指标周期数据和指标趋势数据,这两者为非误差相关数据。将时间序列数据拆解为指标周期数据和指标趋势数据通常可使用的方式有两种,分别是「加性分解」和「乘性分解」,即「原始序列=周期+趋势+残差」和「原始序列=周期*趋势*残差」。在实际使用时,可以根据不同指标选择不同的拆解模式。具体地,可通过离线计算枚举的方式,选择该指标数据更适合使用的拆解模式。
其中,指标的趋势数据用于表征在时间序列数据中,指标的整体运行情况趋势,仍以网站流量进行举例,指标趋势数据是一般会随着网站经营情况较缓慢地上涨和下落,参考图2与图4,通常采用计算时间序列数据各个时间点的滑动平均值的方式确定各个时间点的指标趋势数据。
在时间序列数据中去掉指标趋势数据后,在剩余数据中,周期值是其中较为明显的重复规律。最常见的是以天为周期的指标,比如系统流量等指标数据;在一些特殊情况下也会出现以周为规律的指标以及以月为规律的指标,比如每个月月初的时候可能会有一些活动导致系统流量增加。因此,需要通过上文陈述过的历史数据离线枚举上述周期,选择最合适该类指标的周期值用以拆解计算,具体可参考图2与图5。
指标周期数据和指标趋势数据可以视为对原时间序列数据的拟合数据,而残差数据可以视为残余下来的误差数据,具体的残差形式可参考图6。
S103,使用预设的假设检验算法计算时间序列内误差数据的分布规律,并确定当前误差数据是否符合所述时间序列内误差数据的分布规律;
通常情况下,误差数据是符合正态分布规律的。使用时间序列数据中的各个误差值构建出该正态分布图,参考图7所示,
假设检验算法,即是认为数据分布在中间区域是正常的,当误差数据出现在偏离中心区域较远的地方时,则认为它可能是异常的。因此,可以设定一个置信区间,通过该置信区间决定是否「拒绝」当前指标值。且对于不同种类的指标值,可使用不同的置信区间来设定更合适的监测“严格”度。
在本发明提供的其中一种实施例中,使用假设检验算法进行异常检出时,可认为误差数据是符合t分布的,此时可使用G-ESD(Generalized Extreme StudentizedDeviate,一种通过概率分布检验异常的算法)算法进行异常检出。
S104,根据计算结果确定当前指标值的异常情况。
本说明书实施例还提供一种更为具体的在指标异常发现方法,参见图8所示,该方法可以包括以下步骤:
S801,获取预设时间段内,包含时间点和对应所述时间点的指标值的时间序列数据;
S802,将所述时间序列数据拆解为非误差数据与误差数据,其中,非误差数据包括指标周期数据与指标趋势数据,误差数据为既不符合预置的指标周期规律,也不符合根据所述时间序列数据计算出的指标走势的数据;
S803,根据时间序列内的误差数据构建正态分布图,并设定用于判定异常的置信区间;
S804,获取当前误差数据,判断所述当前误差数据是否落在所述正态分布图的置信区间内;
S805,对所述时间序列数据进行掉0异常检测,获取掉0异常检测数据;
S806,将判断结果与掉0异常检测数据组成异常检测结果;
S807,根据预设的过滤条件,从异常检测结果中去除业务相关的非异常指标变化。
S808,输出过滤后的异常检测结果。
具体地,可参考图9,由于不同种类的指标稳定地表现出周期性规律事件尺度是不一样的,如网站的访问流量,对于较多人访问的页面的流量,可能每天某分钟的值都是相对稳定的;而对于不经常有人访问的页面的流量,可能按小时聚合起来才会比较稳定。聚合区间越大,会导致报警的时效性降低。可针对不同指标选择不同的聚合区间。
指标掉0现象是系统中较为常见的异常,该类检测的时效性较高,因此在对指标的异常检测中,通常将该类检测作为一项额外的异常检验,以对报警时效性进行弥补。
经过假设检验对误差数据进行计算,并综合掉0异常检测获取异常检测结果后,其中可能还会包含很多业务相关的指标波动,并不应该认为是异常。因此需要一些过滤条件,根据这些预设的过滤条件,从异常检测结果中去除业务相关的非异常指标变化。提高报警的有效性,避免误报警。
相应于上述方法实施例,本说明书实施例还提供一种指标异常发现装置,参见图10所示,所述装置可以包括:时间序列获取模块1010,时间序列拆解模块1020,误差数据计算模块1030和指标异常确定模块1040。
时间序列获取模块1010:用于获取预设时间段内,包含时间点和对应所述时间点的指标值的时间序列数据;
时间序列拆解模块1020:用于将所述时间序列数据拆解为非误差数据与误差数据,其中,非误差数据包括指标周期数据与指标趋势数据,误差数据为既不符合预置的指标周期规律,也不符合根据所述时间序列数据计算出的指标走势的数据;
误差数据计算模块1030:用于使用预设的假设检验算法计算时间序列内误差数据的分布规律,并确定当前误差数据是否符合所述时间序列内误差数据的分布规律;
指标异常确定模块1040:用于根据计算结果确定当前指标值的异常情况。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述指标异常发现,所述方法至少包括:
获取预设时间段内,包含时间点和对应所述时间点的指标值的时间序列数据;
将所述时间序列数据拆解为非误差数据与误差数据,其中,非误差数据包括指标周期数据与指标趋势数据,误差数据为既不符合预置的指标周期规律,也不符合根据所述时间序列数据计算出的指标走势的数据;
使用预设的假设检验算法计算时间序列内误差数据的分布规律,并确定当前误差数据是否符合所述时间序列内误差数据的分布规律;
根据计算结果确定当前指标值的异常情况。
图11示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1110、存储器1120、输入/输出接口1130、通信接口1140和总线1150。其中处理器1110、存储器1120、输入/输出接口1130和通信接口1140通过总线1150实现彼此之间在设备内部的通信连接。
处理器1110可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1120可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1120可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1120中,并由处理器1110来调用执行。
输入/输出接口1130用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1140用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1150包括一通路,在设备的各个组件(例如处理器1110、存储器1120、输入/输出接口1130和通信接口1140)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1110、存储器1120、输入/输出接口1130、通信接口1140以及总线1150,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的指标异常发现,所述方法至少包括:
获取预设时间段内,包含时间点和对应所述时间点的指标值的时间序列数据;
将所述时间序列数据拆解为非误差数据与误差数据,其中,非误差数据包括指标周期数据与指标趋势数据,误差数据为既不符合预置的指标周期规律,也不符合根据所述时间序列数据计算出的指标走势的数据;
使用预设的假设检验算法计算时间序列内误差数据的分布规律,并确定当前误差数据是否符合所述时间序列内误差数据的分布规律;
根据计算结果确定当前指标值的异常情况。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。