一种云环境下基于时序数据的异常检测系统的制作方法

文档序号:18630169发布日期:2019-09-06 23:30阅读:193来源:国知局
一种云环境下基于时序数据的异常检测系统的制作方法

本发明涉及一种检测系统,具体涉及一种云环境下基于时序数据的异常检测系统,属于时序数据异常检测技术领域。



背景技术:

随着云技术的发展,数据中心管理的机器规模以指数化的方式增长,同时巨大的运维工作量也让运维成本不断上升。如何能有效的提高自动化运维效率,也成为急需解决的问题。运维的目的是保证生产的平稳运行,系统监控即是最基础的环节。在数据中心,有着海量的基于时间序列的监控指标,这些指标值都是带有时间戳。因此可以分析各种趋势、比例,以及检测异常。在运维工作中,异常检测是关键环节,决定了系统的可靠性。对于时间序列的监控数据,在实际生产环境中,通常是根据经验来设置阀值,当超过或者低于一定阀值的时候产生告警信息。但这种缺乏客观依据的方式,易导致频繁的接受告警信息或者漏掉重要的告警信息。所以,需要一种异常检测机制,能够针对不同的序列类型做出不同的策略的方式,在基于量化的标准的同时,找到异常指标并告警通知用户。如:秒杀活动的情形,一定是非周期性的,如果使用针对周期性的策略,就会判定为不合理的异常,因此,迫切的需要一种新的方案解决上述技术问题。



技术实现要素:

本发明正是针对现有技术中存在的问题,提供一种云环境下基于时序数据的异常检测系统,该系统在私有云环境中部署大量的it基础设施,包括主机、存储、计算单元等等,基础环境的正常平稳运行是生产的保障,通常都有监控系统实时获取整体系统运行的指标,比如:各个主机的cpu使用率、内存使用率、网络流量等等。这些指标可以做到实时采集,但在告警处理中,目前的私有云产品都是基于阀值的告警方式。本发明提出的监控系统及动态算法来检测异常,可避免规则化告警的僵化设置。

为了实现上述目的,本发明的技术方案如下,一种云环境下基于时序数据的异常检测系统,其特征在于,所述系统包括以下模块:collector数据采集模块、汇聚模块,数据存储模块、analyst分析模块以及告警通知模块,本发明的特点在于在采集模块和数据存储模块中间加入了汇聚模块,并不是直接将数据传入存储,所述collector数据采集模块定时采集所在设备的业务指标数据在,汇聚模块中对数据片段进行规整,数据片段积累到达指定数量,一起压入队列中,另有工作线程对队列监听,将队列中的数据异步传输到数据存储模块,此种架构和发送机制对比直接连接的方式,提供了缓冲,避免频繁传输小数据块,同时对处理性能有提升。存储模块用于存储时间序列数据,并将数据传送至分析模块,所述analyst分析器模块用于对时序数据进行分析,通过告警通知模块推送通知消息给用户。本发明的核心在于分析模块,采用综合的算法来对不同的时序数据类型做异常分析。

作为本发明的一种改进,所述collector数据采集模块安装在服务器或工作站的系统中,作为一种agent,定时采集所在设备的业务指标数据,例如cpu利用率、内存利用率、io数据等,所采集数据都有时间标签,因此为时序数据。

作为本发明的一种改进,所述采集模块上传数据至汇聚模块中,汇聚模块用于收集数据,统一提交到存储,为避免大量小数据量的网络开销,以及数据规整清理工作,汇聚模块内部维护数个队列,采集的时序数据作为片段压入队列中,当队列满的时候,统一提交到存储模块的redis保存。

作为本发明的一种改进,存储模块用于存储时间序列数据,在本方案中,使用redis来存储数据。考虑到实时性要求,redis的集群可以提供极高的读写性能。而且根据时效性,方案在redis中只保留一定时间范围内的数据。analyst分析器模块用于对时序数据进行分析,对于不同的业务数据类型,本模块会按照动态算法来分析时序数据,判断具体某个点的数据是否正常,这种判断不依赖预先设定的固定阀值,而是根据业务数据的类型和特点,实时计算出合理范围,然后判断业务指标是否在合理范围内,若超过合理范围,则判断为异常点,通过告警通知模块推送通知消息给用户。

作为本发明的一种改进,所述analyst分析器模块中的动态算法计算方法如下:判断指标是周期性的或者是非周期性的;

指标类型基本分为周期性和非周期性两大类,对于不同的类型,需要采用不同的算法进行判断,这一部分是预定义在系统中的。

对于非周期性的,计算近期差值;

首先确定近期选取的点数n,假设现在时刻是t,采样周期为1分钟,n个点分别为t0,t1…,tn.分别计算n个数据点的最大值,最小值和平均值,记为avg,min,max;

计算阀值threshold=min(max-avg,avg-min);

即计算最大值和平均值的差值,平均值和最小值的差值,然后取二者小的一个;

设定计数器count为0;

对n个数据,计算t0-ti,i=1..n,如果差值大于阀值,则计数器加1;

最后得到计数器count为差值大于阀值的数目tc,如果tc大于某个固定值,则认为此项检测当前时刻的值是一个异常点;

计算加权移动平均;

在时间t,选取较大的采样点数m,例如m=50,计算m个点的指数移动加权平均,计算方式如下:

ewma(t)=λy(t)+(1-λ)ewma(t-1)fort=1,2,...,m.

其中ewma(t):为t时刻的加权平均值;

λ为加权系数0<λ<1,表明最近值所占的权重,经试验取为0.65,

y(t)为在时间t得到的采样值;

ewma(t-1)为t-1时刻的加权移动平均值;

然后计算标准差,根据标准差计算公式;

其中xi为在i时刻的采样值,μi表示在i时刻的加权移动平均值,即μi=ewma(i)

根据3σ理论,如果在t时刻的采样值大于μi+3σ或者小于μi-3σ,则认为t时刻的值为异常,用公式表达即异常条件为:

y(t)>μt+3σory(t)>μt-3σ;

对于周期性的,以同期数据做比较,比如每天的9点30,可能是计算高峰期,那么和9点前的数据比较就意义不大,应该用前n天的9点30的数据做比较,比如监控一个月30天的数据。

但是对于周期性的数据,采样计算n个点的移动平均,而不是指数加权的移动平均,我们认为周期性数据权重一样,计算方式如下:

ma(t)=ma(t-1)+y(t)/n–y(t-n)/nfort=1,2,...,n;

其中ma(t):为t时刻的移动平均值;

y(t)为在时间t得到的采样值;

ma(t-1)为t-1时刻的移动平均值;

这里将t-1时刻的移动平均值,加上当前时刻的值的影响,然后减去原来第一个值的影响;

然后计算标准差,根据标准差计算公式;

其中xi为在i时刻的采样值,μi表示在i时刻的加权移动平均值,即μi=ewma(i)

根据3σ理论,如果在t时刻的采样值大于μi+3σ或者小于μi-3σ,则认为t时刻的值为异常,用公式表达即异常条件为

y(t)>μt+3σory(t)>μt-3σ;

计算同期数据的偏离程度;

在某些情况下,我们需要绝对值的突变可能是正常的,我们需要比较相对大小的变化。还是以为周期性数据为例子,监控30天的数据,每天取9点的采样值。定义w(t)=(y(t)-y(t-1))/y(t-1)其中t=1,2,...,n;

w(t)即为偏离程度,y(t)为当前时刻的采样值,y(t-1)为前一时刻的采样值;

再根据w(t)计算移动平均值;

ma(t)=ma(t-1)+w(t)/n–w(t-n)/nfort=1,2,...,n;

其中ma(t):为t时刻的移动平均值;

w(t)为在时间t计算的偏离程度;

ma(t-1)为t-1时刻的移动平均值;

这里将t-1时刻的移动平均值,加上当前时刻的值的影响,然后减去原来第一个值的影响。

然后计算标准差,根据标准差计算公式:

其中xi为在i时刻的采样值,μi表示在i时刻的加权移动平均值,即μi=ewma(i);

根据3σ理论,如果在t时刻的偏离度大于μi+3σ或者小于μi-3σ,则认为t时刻的值为异常,用公式表达即异常条件为

w(t)>μt+3σorw(t)>μt-3σ;

最终告警判定

最终告警的判断根据指标是否具有周期性,如果是非周期性指标,只要满足第2步或者第3步任一判定为异常,即认定此点为异常指标,触发告警通知;

如果是周期性指标,只要满足第4步或者第5步任一判定为异常,即认定此点为异常指标,触发告警通知;

告警通知模块提供信息通道,可以以短信、邮件或者微信方式及时通知用户,告知检测的异常数据。

相对于现有技术,本发明具有如下优点,1)该方案提出的时序数据异常监控方法,通过算法建立动态模型来做异常检测,提高了数据中心的运维效率,适用于企业私有云、数据中心等集中化运行的环境中,不依赖于固定的经验化的阀值设置;2)动态计算的范围具备自适应性,减少了配置工作量。另一方面,在生产环境中,需要监控的项目指标可能成百上千,依赖每项指标指定阀值的方式也是难以维护的,本方案为运维工作中自动发现问题,为实现智能运维提供了新的解决方案。以vmware虚拟化的监控为例,vmware的性能指标包括内存,cpu,磁盘,网络的监控168项指标,如果要根据不同的业务单独区分监控,假设有10调业务线,那么就是1680个设置项。这1680个设置项通过人的经验去设置是十分巨大的工作量。而且要求专家对1680个设置项的阀值进行定义也是不容易的。而通过本方案,基于采集的历史数据,自动地设定阀值,只有极少量的指标需要采用专家定义的方式。在固定阀值下,收到的短信告警最多500条/天,邮件最多900封/天。而通过本方案,告警数量可以减少50%以上。

附图说明

图1为本发明系统框架图;

图2为本发明汇聚模块的数据流向图;

图3为本发明异常检测框架逻辑示意图。

具体实施方式:

为了加深对本发明的理解,下面结合附图对本实施例做详细的说明。

实施例1:参见图1-图3,在一个制造业实施实例中,环境为虚拟化的基础设施,包括4台物理主机,承载运行120台虚拟主机。要求对这部分设备的cpu,内存,磁盘io各种指标进行监控。因此实施基于时序数据的异常检测系统,所述系统逻辑上包括以下模块:collector数据采集模块、数据存储模块、analyst分析模块以及告警通知模块,所述collector数据采集模块定时采集所在设备的业务指标数据通过汇聚模块传输到数据存储模块,所述存储模块用于存储时间序列数据,并将数据传送至分析模块,所述analyst分析器模块用于对时序数据进行分析,通过告警通知模块推送通知消息给用户。从物理部署维度,collector数据采集模块安装在4台主机和120台虚拟主机中,汇聚端和analyst分析模块以及告警通知模块部署在独立的一台主机中,可以是物理主机也可以是虚拟主机。数据存储独立部署在另一台主机中,可以是物理主机也可以是虚拟主机。

其中,所述collector数据采集模块安装在服务器或工作站的系统中,作为一种agent,定时采集所在设备的业务指标数据,例如cpu利用率、内存利用率、io数据等,所采集数据都有时间标签,因此为时序数据。

所述collector数据采集模块采集所在系统的cpu利用率,内存利用率等指标,采集数据时使用数据帧格式,当待发送数据积累到规定大小时,才封装为一个帧发送到汇聚端,汇聚端采用队列机制,帧进入队列,当队列满后,一次将队列中的数据上报到redis中,上报数据使用redis对应的开发接口,例如:通过java编程语言开发接口api将数据上传,需保证汇聚端到redis服务器的网络畅通。

其中,所述采集模块上传数据至汇聚模块中,汇聚模块用于收集数据,统一提交到存储,为避免大量小数据量的网络开销,以及数据规整清理工作,汇聚模块内部维护数个队列,采集的时序数据作为片段压入队列中,当队列满的时候,统一提交到存储模块的redis保存。

其中,存储模块用于存储时间序列数据,在本方案中,使用redis来存储数据。考虑到实时性要求,redis的集群可以提供极高的读写性能。而且根据时效性,方案在redis中只保留一定时间范围内的数据。analyst分析器模块用于对时序数据进行分析,对于不同的业务数据类型,本模块会按照动态算法来分析时序数据,判断具体某个点的数据是否正常,这种判断不依赖预先设定的固定阀值,而是根据业务数据的类型和特点,实时计算出合理范围,然后判断业务指标是否在合理范围内,若超过合理范围,则判断为异常点,通过告警通知模块推送通知消息给用户。

所述analyst分析器模块中的动态算法计算方法如下:判断指标是周期性的或者是非周期性的;

指标类型基本分为周期性和非周期性两大类,对于不同的类型,需要采用不同的算法进行判断,这一部分是预定义在系统中的。

对于非周期性的,计算近期差值;

首先确定近期选取的点数n,假设现在时刻是t,采样周期为1分钟,n个点分别为t0,t1…,tn.分别计算n个数据点的最大值,最小值和平均值,记为avg,min,max;

计算阀值threshold=min(max-avg,avg-min);

即计算最大值和平均值的差值,平均值和最小值的差值,然后取二者小的一个;

设定计数器count为0;

对n个数据,计算t0-ti,i=1..n,如果差值大于阀值,则计数器加1;

最后得到计数器count为差值大于阀值的数目tc,如果tc大于某个固定值,则认为此项检测当前时刻的值是一个异常点;

计算加权移动平均;

在时间t,选取较大的采样点数m,例如m=50,计算m个点的指数移动加权平均,计算方式如下:

ewma(t)=λy(t)+(1-λ)ewma(t-1)fort=1,2,...,m.

其中ewma(t):为t时刻的加权平均值;

λ为加权系数0<λ<1,表明最近值所占的权重,经试验取为0.65,

y(t)为在时间t得到的采样值;

ewma(t-1)为t-1时刻的加权移动平均值;

然后计算标准差,根据标准差计算公式;

其中xi为在i时刻的采样值,μi表示在i时刻的加权移动平均值,即μi=ewma(i)

根据3σ理论,如果在t时刻的采样值大于μi+3σ或者小于μi-3σ,则认为t时刻的值为异常,用公式表达即异常条件为:

y(t)>μt+3σory(t)>μt-3σ;

对于周期性的,以同期数据做比较,比如每天的9点30,可能是计算高峰期,那么和9点前的数据比较就意义不大,应该用前n天的9点30的数据做比较,比如监控一个月30天的数据。

但是对于周期性的数据,采样计算n个点的移动平均,而不是指数加权的移动平均,我们认为周期性数据权重一样,计算方式如下:

ma(t)=ma(t-1)+y(t)/n–y(t-n)/nfort=1,2,...,n;

其中ma(t):为t时刻的移动平均值;

y(t)为在时间t得到的采样值;

ma(t-1)为t-1时刻的移动平均值;

这里将t-1时刻的移动平均值,加上当前时刻的值的影响,然后减去原来第一个值的影响;

然后计算标准差,根据标准差计算公式;

其中xi为在i时刻的采样值,μi表示在i时刻的加权移动平均值,即μi=ewma(i)

根据3σ理论,如果在t时刻的采样值大于μi+3σ或者小于μi-3σ,则认为t时刻的值为异常,用公式表达即异常条件为

y(t)>μt+3σory(t)>μt-3σ;

计算同期数据的偏离程度;

在某些情况下,我们需要绝对值的突变可能是正常的,我们需要比较相对大小的变化。还是以为周期性数据为例子,监控30天的数据,每天取9点的采样值。定义w(t)=(y(t)-y(t-1))/y(t-1)其中t=1,2,...,n;

w(t)即为偏离程度,y(t)为当前时刻的采样值,y(t-1)为前一时刻的采样值;

再根据w(t)计算移动平均值;

ma(t)=ma(t-1)+w(t)/n–w(t-n)/nfort=1,2,...,n;

其中ma(t):为t时刻的移动平均值;

w(t)为在时间t计算的偏离程度;

ma(t-1)为t-1时刻的移动平均值;

这里将t-1时刻的移动平均值,加上当前时刻的值的影响,然后减去原来第一个值的影响。

然后计算标准差,根据标准差计算公式:

其中xi为在i时刻的采样值,μi表示在i时刻的加权移动平均值,即μi=ewma(i);

根据3σ理论,如果在t时刻的偏离度大于μi+3σ或者小于μi-3σ,则认为t时刻的值为异常,用公式表达即异常条件为

w(t)>μt+3σorw(t)>μt-3σ;

最终告警判定

最终告警的判断根据指标是否具有周期性,如果是非周期性指标,只要满足第2步或者第3步任一判定为异常,即认定此点为异常指标,触发告警通知;

如果是周期性指标,只要满足第4步或者第5步任一判定为异常,即认定此点为异常指标,触发告警通知;

告警通知模块提供信息通道,可以以短信、邮件或者微信方式及时通知用户,告知检测的异常数据。

需要说明的是上述实施例,并非用来限定本发明的保护范围,在上述技术方案的基础上所作出的等同变换或替代均落入本发明权利要求所保护的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1