异常检测方法、装置、电子设备及介质
技术领域
本说明书实施例涉及智能监控技术领域,尤其涉及一种异常检测方法、装置、电子设备及介质。
背景技术
信息化时代,随着业务需求的不断变化,种类繁多的业务以及支撑平台应运而生,伴随而来的是对这些业务和平台的监控需求,以保证其正常运行。如果发现异常,及时报警和止损。然而,不合理的监控方法会导致报警不准,甚至会导致误报和漏报,不利于保证业务和平台的正常运行。
发明内容
本说明书实施例提供了一种异常检测方法、装置、电子设备及介质。
第一方面,本说明书实施例提供了一种异常检测方法,所述方法包括:当检测到用于触发预设的聚合窗口的触发事件时,判断所述聚合窗口内数据是否满足预设补全条件,其中,所述聚合窗口内数据包括流式获取并分发至所述聚合窗口内的目标数据,每个目标数据均包括监控指标信息以及生成所述监控指标信息的时间戳;当满足所述预设补全条件时,基于所述聚合窗口内数据以及所述每个目标数据的时间戳,对所述聚合窗口内的目标数据进行补全;确定补全数据后的聚合窗口内目标数据中监控指标信息是否存在异常。
第二方面,本说明书实施例提供了一种异常检测装置,所述装置包括:判断模块,用于当检测到用于触发预设的聚合窗口的触发事件时,判断所述聚合窗口内数据是否满足预设补全条件,其中,所述聚合窗口内数据包括流式获取并分发至所述聚合窗口内的目标数据,每个目标数据均包括监控指标信息以及生成所述监控指标信息的时间戳;数据补全模块,用于当满足所述预设补全条件时,基于所述聚合窗口内数据以及所述每个目标数据的时间戳,对所述聚合窗口内的目标数据进行补全;检测模块,用于确定补全数据后的聚合窗口内目标数据中监控指标信息是否存在异常。
第三方面,本说明书实施例提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述第一方面提供的异常检测方法的步骤。
第四方面,本说明书实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面提供的异常检测方法的步骤。
本说明书实施例有益效果如下:
本说明书实施例提供的异常检测方法,通过在检测到用于触发预设的聚合窗口的触发事件时,先判断该聚合窗口内数据是否满足预设补全条件,其中,聚合窗口内数据包括流式获取并分发至所述聚合窗口内的目标数据,当满足时,基于聚合窗口内数据以及每个目标数据的时间戳,对聚合窗口内的目标数据进行补全,然后再确定补全数据后的聚合窗口内目标数据中监控指标信息是否存在异常。这样在对目标数据进行实时监控过程中,对聚合窗口内数据进行补全,避免了由于网络延时等原因数据未及时到达所导致的聚合窗口数据缺失对实时异常检测结果的影响,有利于提高实时异常检测结果的准确性,减少漏报和误报,保证业务和平台的正常运行。
附图说明
图1为一种适用于本说明书实施例的一种运行环境示意图;
图2为本说明书实施例第一方面提供的一种异常检测方法的流程图;
图3为本说明书实施例第一方面提供的数据清洗示意图;
图4为本说明书实施例第一方面提供的窗口数据分布示意图;
图5为本说明书实施例第二方面提供的一种异常检测装置的模块框图;
图6为本说明书实施例第三方面提供的一种电子设备的结构示意图。
具体实施方式
本说明书实施例提供了一种异常检测方法,通过流式处理,对监控指标进行实时异常检测,该方法包括:当检测到用于触发预设的聚合窗口的触发事件时,判断聚合窗口内数据是否满足预设补全条件,其中,聚合窗口内数据包括流式获取并分发至该聚合窗口内的目标数据,每个目标数据均包括监控指标信息以及生成该监控指标信息的时间戳;当满足预设补全条件时,基于该聚合窗口内数据以及每个目标数据的时间戳,对该聚合窗口内的目标数据进行补全;确定补全数据后的聚合窗口内目标数据中监控指标信息是否存在异常。
在上述过程中,考虑到流式处理过程中,由于网络延时带来的数据未及时到达引起的窗口数据缺失,在实时监测的时候会使得报警不准,甚至会导致误报和漏报,而在一些应用场景中,尤其是高可用场景的监控中,报警不准将会严重影响业务和平台的正常运行,在进行聚合窗口流式计算之前,先对触发流式计算的聚合窗口内的数据进行补全,避免了由于网络延时等原因数据未及时到达所导致的聚合窗口数据缺失对实时异常检测结果的影响,有利于提高实时异常检测结果的准确性,减少漏报和误报,保证业务和平台的正常运行。可以理解的是,高可用场景即为需要保持持续对外提供高度可用的特性和状态的场景。
图1出了一种适用于本说明书实施例提供的异常检测方法的运行环境示意图。如图1所示,本说明书实施例提供的异常检测方法可以应用于包括多个服务器的系统构架中。上述多个服务器中的部分服务器101(图1中示出了3个)可以作为业务系统进行具体的业务处理;另一部分服务器102(图1中示出了1个)可以作为监控服务器,用于执行本说明书实施例提供的异常检测方法,对业务系统服务器的目标数据进行处理,检测作为业务系统的服务器的监控指标信息是否存在异常。
其中,服务器为一个具有数据运算、存储功能以及网络交互功能的电子设备。需要说明的是,图1中示出的服务器个数仅为示例,本实施例中并不具体限定上述服务器的数量。无论是作为业务系统的部分服务器,还是监控服务器均可以为一个服务器,还可以为几个服务器,或者,由若干服务器形成的服务器集群。
为了更好的理解本说明书实施例提供的异常检测方法,下面通过附图以及具体实施例对本说明书实施例的技术方案做详细的说明,应当理解本说明书实施例以及实施例中的具体特征是对本说明书实施例技术方案的详细的说明,而不是对本说明书技术方案的限定,在不冲突的情况下,本说明书实施例以及实施例中的技术特征可以相互组合。
本说明书实施例中,术语“多个”表示“两个以上”,即包括两个或大于两个的情况。术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
第一方面,本说明书实施例提供了一种异常检测方法。如图2所示,所述方法至少可以包括以下步骤S200-步骤S204。
步骤S200,当检测到用于触发预设的聚合窗口的触发事件时,判断聚合窗口内数据是否满足预设补全条件,其中,聚合窗口内数据包括流式获取并分发至聚合窗口内的目标数据,每个目标数据均包括监控指标信息以及生成监控指标信息的时间戳。
本说明书实施例采用流式处理框架,流式地读取目标数据,进行数据异常检测。在流式计算中,数据是没有边界的,源源不断的数据从输入流向输出,但是计算是需要边界的,无论是增量计算还是全量计算,都需要一个范围。那么,把无限的数据流划分成一段一段的数据集,则需要通过窗口实现。
本实施例中,聚合窗口为预先设置的时间窗口,具体地,窗口类型可以是滑动窗口,即窗口数据有固定大小,并且有固定的窗口重建频率,窗口数据有叠加。当然,在本说明书其他实施例中,聚合窗口可以是滚动窗口,即窗口数据有固定的大小,窗口数据无叠加。
具体来讲,触发事件可以是通过watermark或者延时机制触发窗口计算的事件。可以理解的是,watermark是流式计算中非常重要的概念,用于处理乱序事件,通常用watermark机制结合窗口(window)来实现。流处理从事件产生,到流经source,再到operator,中间是有一个过程和时间的。虽然大部分情况下,流到operator的数据都是按照事件产生的时间顺序来的,但是也不排除由于网络、背压等原因,导致乱序的产生(out-of-order或者说late element)。但是对于late element,不能无限期的等下去,需要有个机制来保证一个特定的时间后,触发窗口去进行计算,这个特别的机制,就是watermark。
另外,在步骤S200中,聚合窗口内的目标数据是通过流式获取并分发至聚合窗口内的。因此,可以理解的是,在执行步骤S200之前,还包括:流式获取目标数据,目标数据还包括监控维度信息,监控维度信息用于标识该目标数据的来源;将流式获取的目标数据分发到与该目标数据的监控维度信息对应的聚合窗口中。
本实施例中,目标数据可以根据具体应用场景中系统的日志得到。例如,在对系统的高可用性进行监控的场景中,系统日志中包含有能够反映系统运行情况的数据,如CPU使用率、磁盘使用率、内存使用率、调用数据库失败的次数以及gc(Garbage Collection,垃圾回收)次数等。并且,日志中还会带有来源地址,如产生该日志的服务器对应的机器ip,域名,应用名、接口名等,用于唯一标识该日志的来源,即该日志对应的服务器。同时,日志信息的打印是带有时间戳的。可以理解的是,系统/软件/网站/平台等在运行过程中,高可用性是其非常重要的一个健壮性指标之一,保持持续对外提供高度可用的特性和状态,是衡量一个系统好坏非常重要的一点。
具体来讲,上述流式获取目标数据可以包括:实时获取系统的日志,并对实时获取的日志进行数据清洗,得到目标数据。具体来讲,从系统中每台机器的海量的日志中,根据正则和模糊匹配,抽取出需要监控的监控指标信息,并获取日志对应的监控维度信息以及时间戳,得到一个流式数据信息,即目标数据。其中,时间戳为日志的打印时间即目标数据的产生时间。假设系统中每台机器每间隔一分钟打印一次日志,则针对每台机器,相邻两个日志对应的目标数据的时间戳的间隔为一分钟。
例如,图3示出了对系统日志进行数据清洗得到目标数据的示意图。图3中对系统日志进行数据清洗,得到的目标数据包括三个监控维度D1、D2和D3的监控维度信息。当然,图3中示出的三个监控维度仅为示例,对监控维度个数不作限制。如图3所示,通过对实时获取到的每个日志进行数据清洗,就可以先后得到每个日志对应的目标数据。例如,在第一个目标数据示例中,监控维度信息包括:A2、C1和C2,时间戳(time)为t1,监控指标的指标值(value)为:3.1;在第二个目标数据示例中,监控维度信息包括:A1、C1和C1,时间戳(time)为t2,监控指标的指标值(value)为:5.3;在第三个目标数据示例中,监控维度信息包括:A2、C1和C2,时间戳(time)为t3,监控指标的指标值(value)为:19.2;第四个目标数据示例中,监控维度信息包括:A1、C1和C1,时间戳(time)为t3,监控指标的指标值(value)为:2.8;等等。
本说明书实施例中,监控指标信息为需要进行异常检测的指标信息,可以包括监控指标以及监控指标的指标值。当然,在对单一指标进行监控的场景中,监控指标信息也可以为监控指标的指标值。在本实施例的一种应用场景中,监控指标可以为系统的高可用指标,例如,可以包括但不限于CPU使用率、磁盘使用率、内存使用率、调用数据库失败的次数以及gc次数中的任意一种或多种组合。当然,在本说明书其他实施例中,监控指标信息也可以为其他指标信息,例如接口方法调用耗时参数、接口方法调用结果参数、数据库操作的接口方法耗时参数或数据库操作的接口方法结果参数等。
此外,监控维度信息用于标识目标数据的来源,具体监控维度可以根据实际监控需求以及监控指标信息设置,不同监控指标对应的监控维度可以不同。例如,当需要对单个服务器的某指标进行监控时,监控维度信息用于标识目标数据对应的服务器,如可以包括但不限于机器ip和域名。这样就可以将监控指标信息与服务器对应起来,便于后续针对每个服务器分析单机监控指标信息是否存在异常。
再例如,当需要对服务于某应用的所有服务器的某指标进行监控时,监控维度信息用于标识目标数据对应的服务器以及该服务器服务的应用,如可以包括但不限于机器ip、域名、应用名以及接口名。这样就可以将监控指标信息与服务器以及服务器服务的应用对应起来,便于后续针对服务于某应用的服务器群组分析监控指标信息是否存在异常。
又例如,当需要以机房为单位的服务器集群的某指标进行监控时,监控维度信息用于标识目标数据对应服务器以及该服务器所在的机房,如可以包括但不限于机器ip、域名以及所在机房的标识。这样就可以将监控指标信息与服务器以及服务器所在的机房对应起来,便于后续以机房为单位分析监控指标信息是否存在异常。
对于流式读取的目标数据,需要按照目标数据的监控维度信息进行聚合,即每读取一个目标数据,就将该目标数据分发到与该目标数据的监控维度信息对应的聚合窗口中。可以理解的是,当需要对不同监控指标进行监控时,则需要按照监控指标信息以及监控维度信息进行聚合。
在一种实施方式中,可以将监控维度信息相同且监控指标相同的目标数据分发到同一聚合窗口中。例如,上述图3中的第一个目标数据示例和第三个目标数据示例的监控维度信息相同,均为A2、C1和C2,且对应于同一监控指标,则会被分发到同一聚合窗口中,而第二个目标数据示例和第四个目标数据示例则均会被分发另一个聚合窗口中。
具体来讲,可以预先配置多个聚合窗口,且配置监控维度信息、监控指标信息以及聚合窗口之间的映射关系,从而基于该映射关系,将目标数据分发到与该目标数据的监控维度信息以及监控指标信息对应的聚合窗口中,其中,同一聚合窗口内的目标数据的监控维度信息相同且监控维度信息对应的监控指标相同。
在本说明书其他实施例中,也可以将监控维度信息中的一个或多个维度信息确定为特征维度信息,可以将监控维度信息中特征维度信息相同且监控指标相同的目标数据分发到同一聚合窗口中。例如,监控维度信息包括机器ip,域名,应用名和接口名,也可以将机器ip确定为特征维度信息,将机器ip相同且监控指标相同的目标数据分发到同一聚合窗口中。
需要说明的是,为了尽量降低以下窗口数据补全过程对异常检测实时性的影响,聚合窗口大小可以基于实际应用场景中单位时间内系统日志的数据规模以及以下步骤S204中实际采用的异常检测算法要求,经过多次试验设置,以实现对海量日志数据分钟级、甚至是秒级延时的智能监控。其中,单位时间为预先设置的日志打印时间间隔。例如,在对10万台机器进行高可用指标监控的场景中,每台机器每分钟打印一次日志,且步骤S206中采用N-sigma算法时,聚合窗口大小可以设置为30分钟。
另外,在实际应用场景中,会根据不同的场景需求,给出最适合的聚合窗口触发要求,比如基于watermark的触发器。聚合窗口的触发要求确定后,就可以确定聚合窗口的划分,也就确定了当前聚合窗口对应的时间点序列。其中,当前聚合窗口对应的时间点序列即为在分发给该聚合窗口的目标数据均按时到达的情况下,该聚合窗口内目标数据的时间戳由小到大排序构成的序列。当然,在实际应用场景中,由于网络延时等原因可能会使得某些目标数据未及时到达相应聚合窗口,从而导致在触发该聚合窗口计算时,该聚合窗口存在数据缺失。
在本说明书一实施例中,可以将聚合窗口对应的时间点序列中,距离当前时间最近的时间点作为报警时间点,除报警时间点以外的其他时间点为参考时间点,以检测报警时间点的目标数据中监控指标信息是否存在异常。当检测到用于触发所述聚合窗口的触发事件时,需要先对聚合窗口内的数据进行补全校验,即判断聚合窗口内数据是否满足预设补全条件,即是否需要进行数据补全。
为了方便描述,假设聚合窗口对应的时间点序列中,各时间点对应的目标数据按照时间点由小到大的顺序分别为:Vt-n、Vt-(n-1)、…、Vt-2、Vt-1和Vt,其中,Vt为报警时间点的目标数据,Vt-n、Vt-(n-1)、…、Vt-2和Vt-1均为参考时间点的目标数据。具体来讲,触发计算的聚合窗口内的数据分布包括以下几种情况:
(1)数据齐全,即聚合窗口对应的时间点序列中每个时间点的目标数据均到达。如图4中的(a)图所示,图4中,有斜线填充的方框表示该时间点的数据丢失,无填充的方框表示该时间点的数据未丢失。
(2)部分参考时间点的检测数据丢失,报警时间点的目标数据未丢失。如图4中的(b)图所示,存在两个参考时间点的目标数据Vt-(n-1)和Vt-2丢失。
(3)部分参考时间点的目标数据丢失,且报警时间点的目标数据也丢失。如图4中的(c)图所示,存在两个参考时间点的目标数据Vt-(n-1)和Vt-2丢失,报警时间点的目标数据Vt丢失。
(4)仅丢失报警时间点的目标数据。如图4中的(d)图所示,仅报警时间点的目标数据Vt丢失。
(5)全部参考时间点的目标数据均丢失,仅剩报警时间点的目标数据,如图4中的(e)图所示。
(6)数据全丢失,即聚合窗口对应的时间点序列中每个时间点的目标数据均未到达,如图4中的(f)图所示。
需要说明的是,本实施例中,部分参考时间点的目标数据丢失是指存在一部分参考时间点的目标数据丢失,另一部分参考时间点的目标数据未丢失。且为了能够根据聚合窗口内数据,检测报警时间点的目标数据中监控指标信息是否存在异常,至少存在两个参考时间点的目标数据未丢失。
在上述几种数据分布中,当数据全丢失时,不满足上述预设补全条件,返回第一提示信息,第一提示信息用于指示不进行异常告警,即不执行以下步骤S202。例如,第一提示信息可以为特定字符如“null”。当全部参考时间点的目标数据均丢失,仅剩报警时间点的目标数据时,不满足上述预设补全条件,返回第二提示信息,第二提示信息用于指示不进行异常告警,即不执行以下步骤S202。其中,第二提示信息可以与第一提示信息相同,也可以不同。当不同时,可以分别用于指示不同的数据分布情况。当数据齐全时,显然不需要进行数据补全,不满足上述预设补全条件,返回第三提示信息,第三提示信息用于指示不进行数据补全,直接进行异常告警。
当仅丢失报警时间点的目标数据或部分参考时间点的目标数据丢失时,满足上述预设补全条件,继续执行以下步骤S202。
在一种实施方式中,上述步骤S200中,判断聚合窗口内数据是否满足预设补全条件的实施过程可以包括:基于聚合窗口中每个目标数据的时间戳,确定聚合窗口中的数据分布;当该数据分布与预设数据分布匹配时,判定聚合窗口内数据满足预设补全条件,当不属于预设数据分布时,判定聚合窗口内数据不满足预设补全条件。其中,预设数据分布包括两种,一种为仅丢失报警时间点的目标数据,另一种为部分参考时间点的目标数据丢失且存在至少两个参考时间点的目标数据未丢失。当该数据分布属于以上两种中的任意一种时,判定该数据分布与预设数据分布匹配,反之,则不匹配。
在另一种实施方式中,判断聚合窗口内数据是否满足预设补全条件的实施过程可以包括:判断聚合窗口内是否存在数据丢失,且是否存在至少两个参考时间点的目标数据未丢失;当聚合窗口内存在数据丢失且至少存在两个参考时间点的目标数据未丢失时,判定聚合窗口内数据满足上述预设补全条件,反之,当聚合窗口内数据齐全即均未丢失时或者是仅存在小于或等于一个参考时间点的目标数据未丢失时,判定聚合窗口内数据不满足上述预设补全条件。
步骤S202,当满足预设补全条件时,基于聚合窗口内数据以及每个目标数据的时间戳,对聚合窗口内的目标数据进行补全。
当步骤S200中判定聚合窗口内数据满足预设补全条件时,先对聚合窗口内丢失的目标数据进行补全,然后再执行以下步骤S204。
在本实施例的一种实施方式中,可以分别针对报警时间点的数据丢失和参考时间点的数据丢失设置不同的补全规则,在聚合窗口内数据满足上述预设补全条件时,针对聚合窗口内目标数据的数据分布采用相应的补全规则进行补全。此时,基于聚合窗口内数据以及每个目标数据的时间戳,对聚合窗口内的目标数据进行补全的实施过程可以包括:基于聚合窗口内每个目标数据的时间戳,确定聚合窗口内数据的数据分布;基于上述数据分布对聚合窗口内数据进行补全。
具体来讲,根据上述对聚合窗口内的数据分布的分析。聚合窗口内的数据丢失情况包括:部分参考时间点的数据丢失和/或报警时间点的数据丢失。由此,基于上述数据分布对聚合窗口内数据进行补全的实施方式可以包括以下两种中的任意一种或两种组合。
第一种,当基于上述数据分布确定聚合窗口内参考时间点的目标数据存在丢失时,按照时间由小到大的顺序,依次将每个丢失目标数据的参考时间点作为第一目标时间点,用该第一目标时间点的前一个参考时间点的目标数据填补该第一目标时间点的目标数据。
第二种,当基于上述数据分布确定聚合窗口内报警时间点的目标数据丢失时,将聚合窗口对应的时间点序列中距离报警时间点最近的参考时间点作为第二目标时间点,用第二目标时间点的目标数据填补报警时间点的目标数据;并获取除该第二目标时间点以外其余参考时间点的目标数据中指标值的均值,用该均值替换该第二目标时间点的目标数据中的指标值。
上述针对性地对参考时间点的丢失数据以及报警时间点的丢失数据进行补全,且直接用最近的前一个时间点的数据进行填补,简单方便,耗时少,有利于保证异常检测的实时性。当然,除了上述补全方式以外,在本说明书其他实施例中,也可以采用其他数据补全方式,例如,插值法补全,平滑补全等。
以图4中的(b)、(c)和(d)图所示数据分布为例,假设Vt-n、Vt-(n-1)、…、Vt-2、Vt-1、Vt对应的时间点序列由小到大依次表示为t1、t2、…、tn-2、tn-1、tn,其中,tn为报警时间点,t1、t2、…、tn-2和tn-1均为参考时间点。
在图4中的(b)图中,参考时间点t2的目标数据Vt-(n-1)和参考时间点tn-2的目标数据Vt-2丢失,此时,数据补全过程包括:先将参考时间点t2作为第一目标时间点,用t2的前一个参考时间点t1的目标数据Vt-n填补t2的目标数据,然后将参考时间点tn-2作为第一目标时间点,用tn-2的前一个参考时间点tn-3的目标数据Vt-3填补tn-2的目标数据。
在图4中的(c)图中,参考时间点t2的目标数据Vt-(n-1)、参考时间点tn-2的目标数据Vt-2以及报警时间点tn的目标数据Vt丢失。此时,数据补全过程包括:先将参考时间点t2作为第一目标时间点,用t2的前一个参考时间点t1的目标数据Vt-n填补t2的目标数据,然后将参考时间点tn-2作为第一目标时间点,用tn-2的前一个参考时间点tn-3的目标数据Vt-3填补tn-2的目标数据。
在完成参考时间点的数据补全之后,再对报警时间点tn进行数据补全,将距离报警时间点tn最近的时间点即参考时间点tn-1作为第二目标时间点,用tn-1的目标数据填Vt-1补报警时间点tn的目标数据;然后,获取除tn-1以外其余参考时间点即t1、t2、…、tn-2的目标数据中指标值的均值,用该均值替换tn-1的目标数据Vt-1中的指标值。例如,在对CPU使用率进行监测时,Vt-1的CPU使用率为0.52,而t1、t2、…、tn-2的目标数据中CPU使用率的均值为0.48,则将Vt-1的CPU使用率0.52用0.48替换。
在图4中的(d)图中,仅报警时间点的目标数据Vt丢失,此时,数据补全过程包括:将距离报警时间点tn最近的时间点即参考时间点tn-1作为第二目标时间点,用tn-1的目标数据填Vt-1补报警时间点tn的目标数据。然后,获取除tn-1以外其余参考时间点即t1、t2、…、tn-2的目标数据中指标值的均值,用该均值替换tn-1的目标数据Vt-1中的指标值。
步骤S204,确定补全数据后的聚合窗口内目标数据中监控指标信息是否存在异常。
在完成对聚合窗口内的数据补全后,则可以根据预设算法确定补全数据后的聚合窗口内目标数据中监控指标信息是否存在异常。
在本说明书一实施例中,可以将聚合窗口设置为滑动窗口,滑动步长设置为一个时间点,此时,在每次触发窗口进入计算过程时,上述确定补全数据后的聚合窗口内目标数据中监控指标信息是否存在异常包括:根据补全数据后的聚合窗口内的目标数据,确定报警时间点的目标数据中监控指标信息是否存在异常。这样就可以先后实现对每个时间点数据的实时异常检测。当然,在本说明书其他实施例中,也可以通过比较补全数据后的聚合窗口内所有目标数据,确定聚合窗口内每个时间点的目标数据中监控指标信息是否存在异常,例如,可以将监控指标值出现异变的时间点的目标数据确定为异常,如可以通过3Sigma准则确定监控指标信息存在异常的时间点。
具体来讲,在一种实施方式中,可以采用N-sigma算法确定补全数据后的聚合窗口内报警时间点的监控指标信息是否存在异常。具体实施过程包括:针对补全数据后的聚合窗口内数据,计算所有参考时间点的目标数据的均值和标准差;基于该均值和标准差,计算聚合窗口内报警时间点的目标数据的标准分数;当该标准分数超过预设阈值时,则判定报警时间点的目标数据中监控指标信息存在异常,以进一步进行告警,反之,则不存在异常。
其中,预设阈值根据实际需要设置,例如,在标准分数范围为0-1时,预设阈值可以设置为0.8或0.9等。需要说明的是,目标数据的均值和标准差是指目标数据中监控指标值的均值和标准差。基于该均值和标准差,将报警时间点的目标数据中监控指标值进行Z-score的计算,就可以得到报警时间点的目标数据的标准分数。也就是说,假设均值用μ表示,标准差用σ表示,则报警时间点的目标数据的标准分数为:(St-μ)/σ,St表示报警时间点的目标数据中监控指标的指标值。
当然,除了N-sigma算法以外,在本说明书其他实施例中,预设算法还可以采用其他的异常检测算法,例如,一些统计或者机器学习方法如三次指数平滑(Holt Winter)算法,局部异常因子(Local Outlier Factor,LOF),孤立森林(Isolaed Forest)算法等。
本说明书实施例提供的异常检测方法,对要检测的目标数据进行流式处理,在流式框架形成的聚合窗口内,对由于网络延时带来的数据未及时到达引起的数据丢失进行补全,有利于提高实时异常检测结果的准确性,减少漏报和误报,保证业务和平台的正常运行。进一步,通过配置窗口大小,能够实现海量日志数据分钟级、甚至是秒级延时的智能监控。
另外,本方案还具有普适性,能够直接用于新的场景,在海量数据处理的时候,能够直接进行接入,处理海量高并发场景下的异常监控问题。
第二方面,基于与前述第一方面实施例提供的异常检测方法同样的发明构思,本说明书实施例还提供了一种异常检测装置。如图5所示,该异常检测装置50包括:
判断模块51,用于当检测到用于触发预设的聚合窗口的触发事件时,判断所述聚合窗口内数据是否满足预设补全条件,其中,所述聚合窗口内数据包括流式获取并分发至所述聚合窗口内的目标数据,每个目标数据均包括监控指标信息以及生成所述监控指标信息的时间戳;
数据补全模块52,用于当满足所述预设补全条件时,基于所述聚合窗口内数据以及所述每个目标数据的时间戳,对所述聚合窗口内的目标数据进行补全;
检测模块53,用于确定补全数据后的聚合窗口内目标数据中监控指标信息是否存在异常。
在一种可选的实施例中,所述判断模块51用于:
判断所述聚合窗口内是否存在数据丢失,且是否存在至少两个参考时间点的目标数据未丢失,其中,所述参考时间点为所述聚合窗口对应的时间点序列中除报警时间点以外的其他时间点,所述报警时间点为所述时间点序列中距离当前时间最近的时间点;
当所述聚合窗口内存在数据丢失且至少存在两个参考时间点的目标数据未丢失时,判定所述聚合窗口内数据满足所述预设补全条件。
在一种可选的实施例中,所述检测模块53用于:
根据补全数据后的聚合窗口内的目标数据,确定所述报警时间点的目标数据中监控指标信息是否存在异常。
在一种可选的实施例中,所述数据补全模块52包括:
分布确定子模块521,用于基于所述聚合窗口内每个目标数据的时间戳,确定所述聚合窗口内数据的数据分布;
第一补全子模块522,用于当基于所述数据分布确定所述聚合窗口内参考时间点的目标数据存在丢失时,按照时间由小到大的顺序,依次将每个丢失目标数据的参考时间点作为第一目标时间点,用所述第一目标时间点的前一个参考时间点的目标数据填补所述第一目标时间点的目标数据;
其中,所述参考时间点为所述聚合窗口对应的时间点序列中除报警时间点以外的其他时间点,所述报警时间点为所述时间点序列中距离当前时间最近的时间点。
在一种可选的实施例中,所述监控指标信息包括监控指标的指标值,所述数据补全模块52还包括:第二补全子模块523,用于:
当基于所述数据分布确定所述聚合窗口内报警时间点的目标数据丢失时,
将所述聚合窗口对应的时间点序列中距离所述报警时间点最近的参考时间点作为第二目标时间点,用所述第二目标时间点的目标数据填补所述报警时间点的目标数据;
获取除所述第二目标时间点以外其余参考时间点的目标数据中指标值的均值,用所述均值替换所述第二目标时间点的目标数据中的指标值。
在一种可选的实施例中,上述异常检测装置50还包括:
数据获取模块,用于流式获取目标数据,所述目标数据还包括监控维度信息,所述监控维度信息用于标识所述目标数据的来源;
分发模块,用于将流式获取的目标数据分发到与所述目标数据的监控维度信息对应的聚合窗口中。
在一种可选的实施例中,所述监控指标信息为系统的高可用指标信息,所述数据获取模块用于:实时获取所述系统的日志,并对所述日志进行数据清洗,得到所述目标数据。
需要说明的是,本说明书实施例所提供的异常检测装置50,其中各个模块执行操作的具体方式已经在上述第一方面提供的方法实施例中进行了详细描述,此处将不做详细阐述说明。
第三方面,基于与前述实施例提供的异常检测方法同样的发明构思,本说明书实施例还提供了一种电子设备,如图6所示,包括存储器604、一个或多个处理器602及存储在存储器604上并可在处理器602上运行的计算机程序,所述处理器602执行所述程序时实现前文第一方面提供的异常检测方法的步骤。
其中,在图6中,总线架构(用总线600来代表),总线600可以包括任意数量的互联的总线和桥,总线600将包括由处理器602代表的一个或多个处理器和存储器604代表的存储器的各种电路链接在一起。总线600还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口605在总线600和接收器601和发送器603之间提供接口。接收器601和发送器603可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器602负责管理总线600和通常的处理,而存储器604可以被用于存储处理器602在执行操作时所使用的数据。
可以理解的是,图6所示的结构仅为示意,本说明书实施例提供的电子设备还可包括比图6中所示更多或者更少的组件,或者具有与图6所示不同的配置。图6中所示的各组件可以采用硬件、软件或其组合实现。
第四方面,基于与前述实施例中提供的异常检测方法同样的发明构思,本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文第一方面提供的异常检测方法的步骤。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本说明书的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本说明书范围的所有变更和修改。
显然,本领域的技术人员可以对本说明书进行各种改动和变型而不脱离本说明书的精神和范围。这样,倘若本说明书的这些修改和变型属于本说明书权利要求及其等同技术的范围之内,则本说明书也意图包含这些改动和变型在内。