一种异常检测方法、装置和监控设备与流程

文档序号:12666861阅读:207来源:国知局
一种异常检测方法、装置和监控设备与流程

本发明涉及计算机与互联网技术领域,尤其涉及一种异常检测方法、装置和监控设备。



背景技术:

随着互联网技术的蓬勃发展,计算机已经成为人们日常办公或交流必不可少的工具。用户在使用计算设备时,网络设备会生成log、url和trace等各种文本数据,这些文本数据中记载着日期、时间、使用者及动作等相关操作的描述。通过分析这些文本数据,运维人员可以实时监控系统和网络的健康状况,以及用户的使用情况等。

但是这些文本数据通常数量巨大,且较难读懂,对其进行分析比较耗时耗力,从而根据文本数据进行异常检测比较困难。因此,需要提供一种更高效和更准确的异常检测方法。



技术实现要素:

鉴于上述问题,本发明提出了一种异常检测方法、装置和监控设备,以力图解决或者至少解决上面存在的问题。

根据本发明的一个方面,提供一种异常检测方法,在监控设备中执行,适于对一个或多个应用服务器中的目标应用进行异常检测,该方法包括:获取用户访问目标应用时所生成的日志文件,日志文件包括多条文本数据;根据文本模式库对日志文件进行模式匹配,生成各条文本数据分别对应的文本模式;根据文本模式对文本数据进行分类统计,得到统计结果;以及根据统计结果判断目标应用是否发生异常。

可选地,在根据本发明的方法中,统计结果包括每个应用服务器所生成的日志文件中、各种文本模式在不同时段下分别对应的文本数据条数。根据统计结果判断目标应用是否发生异常的步骤包括:根据所述统计结果确定各种文本模式所对应的文本数据条数随着时间的变化规律;如果某个应用服务器所生成的日志文件中、具有某个文本模式的文本数据条数在某时段内不符合所述变化规律,则判定该应用服务器中的目标应用在该时段内发生异常。

可选地,在根据本发明的方法中,根据统计结果判断目标应用是否发生异常的步骤还包括:如果某个应用服务器中所生成的日志文件中具有某个文本模式的文本数据条数,在某时段内与其他应用服务器对应的文本数据条数有明显差异,则判定该应用服务器中的目标应用在该时段内发生异常。

可选地,在根据本发明的方法中,变化规律通过文本数据条数随着时间的变化曲线来表示。

可选地,在根据本发明的方法中,文本数据条数在某时段内不符合所述变化规律的情况包括:该文本模式所对应的文本数据条数在某一时段内激增或骤降;或者出现一种新的文本模式。

可选地,在根据本发明的方法中,还包括,根据如下方法生成文本模式库:获取目标应用的历史日志文件,其中历史日志文件中包括多条文本数据;对所述历史日志文件中的每条文本数据进行分词处理;对历史日志文件中的文本数据进行第一次遍历,统计出所有文本数据中每个单词的出现次数,并从中筛选出出现次数大于第一阈值的单词作为高频词,将高频词与该高频词的出现次数相关联的存储为高频词词典;分别从历史日志文件中的每条文本数据中筛选出高频词,构成该条文本数据对应的高频词元组;根据各高频词在文本数据中的出现次数,计算任意两个高频词之间的依赖度;对历史日志文件中的文本数据进行第二次遍历,根据文本数据对应的高频词元组,生成每条文本数据的预选文本模式;根据高频词之间的依赖度,对文本数据的预选文本模式进行修正,得到文本数据的修正文本模式;以及对文本数据的修正文本模式进行相似度合并,得到文本模式库。

可选地,在根据本发明的方法中,在对每条文本数据进行分词处理前,还包括步骤:将每条文本数据中的预定类型的关键词替换为预定词,预定类型的关键词包括时间、日期、ip地址和数字中的至少一个。

可选地,在根据本发明的方法中,任意两个高频词wi和wj之间的依赖度包括wi出现时wj出现的第一条件概率p(wj|wi),以及wj出现时wi出现的第二条件概率p(wi|wj)。统计任意两个高频词之间的依赖度的步骤包括:统计任意两个高频词wi和wj在同一条文本数据中出现的次数n(wi,wj);根据p(wj|wi)=n(wi,wj)/n(wi)计算第一条件概率,以及根据p(wi|wj)=n(wi,wj)/n(wj)计算的第二条件概率;其中,n(wi)和n(wj)分别是高频词wi和wj在所有文本数据中出现的次数。

根据本发明的另一个方面,提供一种异常检测装置,驻留在监控设备中,适于对一个或多个应用服务器中的目标应用进行异常检测,该装置包括:数据获取单元,适于获取用户访问目标应用时所生成的日志文件,日志文件包括多条文本数据;模式生成单元,适于根据文本模式库对日志文件进行模式匹配,生成各条文本数据分别对应的文本模式;模式统计单元,适于根据文本模式对文本数据进行分类统计,得到统计结果;以及异常检测单元,适于根据所述统计结果判断目标应用是否发生异常。

根据本发明的又一方面,提供一种监控设备,包括如上所述的异常检测装置。

根据本发明的技术方案,通过统计每个应用服务器所生成的日志文件中、各种文本模式在不同时段下分别对应的文本数据条数,得到该文本数据条数的变化规律。这样,如果某时段内某个应用服务器所生成的日志文件中、具有某个文本模式的文本数据条数不符合该变化规律,则可以判定该应用服务器中的目标应用在该时段内发生异常。或者,如果某个应用服务器中所生成的日志文件中具有某个文本模式的文本数据条数,在某时段内与其他应用服务器对应的文本数据条数有明显差异,也可以判定该应用服务器中的目标应用在该时段内发生异常。之后,运维人员就可以根据该时段发生异常的文本数据内容,分析目标应用发生异常的原因。这样的话,只需要关注文本模式对应的文本数据条数的变化即可判断应用是否发生异常,就可以做到快速的异常检测与故障定位,这样明显比较省事省力,提高开发效率。

附图说明

为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。

图1示出了根据本发明一个实施例的异常检测系统100的结构框图;

图2示出了根据本发明一个实施例的监控设备200的结构框图;

图3示出了根据本发明一个实施例的异常检测方法400的流程图;

图4示出了根据本发明一个实施例的不同文本模式在不同时刻所对应的文本数据条数的变化曲线;

图5示出了图4中的文本模式5所对应的文本数据条数发生异常时的具体变化曲线;

图6示出了根据本发明一个实施例的多个应用服务器中的日志文件中每个文本模式所对应的文本数据条数的示例直方图;

图7示出了根据本发明一个实施例的文本模式库的生成方法500的流程图;

图8a和8b分别示出了根据本发明一个实施例的log文本的部分数据,以及由该log文本所生成的文本模式;

图9a和9b分别示出了根据本发明另一个实施例的url文本的部分数据,以及由该url文本数据所生成的文本模式;

图10示出了根据本发明一个实施例的异常检测装置600的结构框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

如前所述,用户访问网络设备产生的日志文件所包含的文本数据通常数量巨大,且较难读懂,因此,对日志数据进行数据挖掘,并从中提取有用的知识是非常有必要的。在本发明的实施例中,可以根据这些文本数据生成文本模式,文本模式即在一段文本中经常出现的频繁信息或消息序列,在生产系统中,由于很多操作都是固定、可重复的,导致从这些网络行为中产生的文本数据存在很多规律性的文本结构。进而根据对文本模式的统计结果进行异常检测。

其中,可以从源码中获得文本模式,也可以通过词频和反向词频(TF-IDF)之类的自然语言特征对日志文本进行聚类来获得文本模式。本发明实施例对生成文本数据对应的文本模式的方法不做限制,本领域技术可以根据需要进行选择。

图1示出了根据本发明一个实施例的异常检测系统100的示意图。如图1所示,异常检测系统100包括监控设备200和多个应用服务器310、320和330等。应当指出,图1中所示的异常检测系统100仅是示例性的,在具体的实践情况中,异常检测系统100中可以具有不同数量的监控设备和应用服务器,监控设备和应用服务器也可以驻留在多个地理位置中,本发明对异常检测系统中所包括的监控设备以及被监控的应用服务器的配置方式不做限制。

监控设备200可以是桌面计算机、笔记本计算机、服务器或工作站。监控设备200还可以实现为小尺寸便携(或者移动)电子设备的一部分,这些电子设备可以是诸如手机、平板电脑、个人媒体播放器设备、无线网络浏览设备、可穿戴设备(如智能手表、智能眼镜等)、应用专用设备、或者可以包括上面任何功能的混合设备。虽然图1中仅示出了一个监控设备200,但是本领域技术人员可以意识到,异常检测系统100中还可以包括多个监控设备,这些监控设备可以驻留在多个地理位置中。

监控设备200可以与一个或多个应用服务器相连,或者与应用服务器对应的日志服务器相连,以获取用户访问各应用服务器中的目标应用时所生成的日志文件,并根据预先生成的文本模式库对日志文件进行模式匹配,得到每种文本模式在不同时间所对应的文本数据条数。

图2布置为实现根据本发明的异常检测装置600的示例监控设备200的结构框图。如图2所示,在基本配置202中,监控设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。

取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。

取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器206可以包括操作系统220、一个或者多个应用222以及程序数据224。在一些实施方式中,应用222可以布置为在操作系统上利用程序数据224进行操作。

监控设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置102经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个A/V端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个I/O端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。

网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。

监控设备200可以实现为小尺寸便携(或者移动)电子设备的一部分。监控设备200还可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。在一些实施例中,监控设备200被配置为执行根据本发明的异常检测方法400,应用222中包括根据本发明的异常检测装置600。异常检测装置600可以作为搜索引擎的一个插件驻留于监控设备200的浏览器中,或作为一个独立的软件安装于监控设备200中,本发明对装置600在监控设备200中的存在形式不做限制。

图3示出了根据本发明一个实施例的异常检测方法400,适于监控设备200中执行,如图3所示,该方法始于步骤S410。

在步骤S410中,获取用户访问目标应用时所生成的包括多条文本数据的日志文件。根据一个实施例,该日志文件可以是error trace文件。

随后,在步骤S420中,根据文本模式库对日志文件进行模式匹配,生成各条文本数据分别对应的文本模式。其中,文本模式库是根据目标应用的历史日志文件生成的,预先存储在监控设备或数据库中,供监控设备对新获取到的日志文件中的文本数据进行模式匹配。除了可以采用现有技术中的各种方法来生成文本模式库之外,本发明实施例还提供一种更便捷且精确的文本模式生成方法,其具体生成方法将在后文介绍。

随后,在步骤S430中,根据文本模式对文本数据进行分类统计,得到统计结果。其中,统计结果包括每个应用服务器所生成的日志文件中、各种文本模式在不同时段下分别对应的文本数据条数。

随后,在步骤S440中,根据统计结果判断目标应用是否发生异常。

根据一个实施例,可以根据统计结果确定各种文本模式所对应的文本数据条数随着时间的变化规律。如果某个应用服务器所生成的日志文件中、具有某个文本模式的文本数据条数在某时段内不符合该变化规律,则判定该应用服务器中的目标应用在该时段内发生异常。

一般地,文本数据条数不符合变化规律的情况可以为:该文本模式所对应的文本数据条数在某一时段内激增或骤降;或者出现一种新的文本模式。发现目标应用出现异常后,维护人员就可以根据该出现异常的文本模式内容以及该文本模式所对应的文本数据进行故障定位,从而分析得到应用发生异常的原因。例如,若某一个时段内系统出现异常,如机器的内存利用率突然增加,同时有一个新的文本模式出现且高速增长,则可以查看这个新出现的文本模式。若其中有关键字“memory leak”,则可以认为该机器出现内存泄露问题,并且还可以去查找具体的代码,以进行准确的故障定位。

根据一个实施例,变化规律可以通过文本数据条数随着时间的变化曲线来表示。例如,监控设备200获取到了某应用在2016年8月21日0点到2016年到8月28号23:59:59这8天的error trace文件,共有14298条数据,统计后发现共有如下9个文本模式(其具体内容详见后文),可匹配99.92%的文本数据。这9个文本模式在不同时刻所匹配的文本数据条数如图4所示,从中可以看出每个文本模式所匹配的文本数据条数的变化规律。

对图4而言,这9个文本模式的内容分别为:

模式1:***|errorData|***,[***,[[***,"Errors/WebTransaction/Uri/index.php","mysql_connect():The mysql extension is deprecated and will be removed in the future:use mysqli or PDO instead","/mnt/nfs/UCenter/lib/db.class.php",{"request_uri":"http://uc.vkeplus.com/index.php","custom_params":[],"parameter_groups":[["Request headers",{"Referer":""}],["Response headers",{"Status":"200"}]],"stack_trace":["Error Info:mysql_connect():The mysql extension is deprecated and will be removed in the future:use mysqli or PDO instead","PHP ERROR TYPE:Unknown error","At File:/mnt/nfs/UCenter/lib/db.class.php","Line Number:41"],"request_params":[]},*{1.1},Count:8797

模式2:***|errorData|***,[***,[[***,"Errors/WebTransaction/Uri/vyanke/index.php","Unsupported operand types","/mnt/nfs/vkbrother.com/api/vyanke/protected/components/HControll er.php",{"request_uri":"http://app.vyanke.com/vyanke/index.php","custom_para ms":[],"parameter_groups":[["Request headers",*{1.1},["Response headers",{"Status":"200"}]],"stack_trace":["Error Info:Unsupported operand types","PHP ERROR TYPE:Fatal error","At File:/mnt/nfs/vkbrother.com/api/vyanke/protected/components/HController.php","Line Number:258"],"request_params":[]},*{1.1},Count:5057

模式3:***|errorData|***,[***,[[***,"Errors/WebTransaction/Uri/api.php","preg_replace():The/e modifier is deprecated,use preg_replace_callback instead","/mnt/nfs/weiengine/addons/zmcn_sign/processor.php(1):runtime-created function(1):eval()'d code(1):eval()'d code",{"request_uri":"http://site.vkbrother.com/api.php","custom_params":[],"pa rameter_groups":[["Request headers",{"Referer":""}],["Response headers",{"Status":"200"}]],"stack_trace":["Error Info:preg_replace():The/e modifier is deprecated,use preg_replace_callback instead","PHP ERROR TYPE:Unknown error","At File:/mnt/nfs/weiengine/addons/zmcn_sign/processor.php(1):runtime-created function(1):eval()'d code(1):eval()'d code","Line Number:1"],"request_params":[]},*{1.1},Count:93

模式4:***|errorData|***,[***,[[***,"Errors/WebTransaction/Uri/index.php","Class'Services_Requests'not found","/mnt/nfs/WeCenter/system/class/cls_http.inc.php",*{1.1},"custom_params":[],"parameter_groups":[["Reques t headers",*{1.1},["Response headers",{"Status":"200"}]],"stack_trace":["Error Info:Class'Services_Requests'not found","PHP ERROR TYPE:Fatal error","At File:/mnt/nfs/WeCenter/system/class/cls_http.inc.php","Line Number:393"],"request_params":[]},*{1.1},Count:137

模式5:***|errorData|***,[***,[[***,"Errors/WebTransaction/Uri/vyanke/index.php","Access to undeclared static property:HS_ConfigController::$PARAM_SEPARATER","/mnt/nfs/vkbrother.com/api/vyanke/protected/controllers/v2/HS_ConfigController.php",{"request_uri":"http://app.vyanke.com/vyanke/index.php","custom_params":[],"parameter_groups":[["Request headers",*{1.1},["Response headers",{"Status":"200"}]],"stack_trace":["Error Info:Access to undeclared static property:HS_ConfigController::$PARAM_SEPARATER","PHP ERROR TYPE:Fatal error","At File:/mnt/nfs/vkbrother.com/api/vyanke/protected/controllers/v2/HS_ConfigCont roller.php","Line Number:17"],"request_params":[]},*{1.1},Count:86

模式6:***|errorData|***,[***,[[***,"Errors/WebTransaction/Uri/vyanke/index.php","syntaxerror,*{2.3},{"request_uri":"http://app.vyanke.com/vyanke/i ndex.php","custom_params":[],"parameter_groups":[["Request headers",{"Referer":""}],["Response headers",{"Status":"200"}]],"stack_trace":["Error Info:syntax error,*{1.2},"PHP ERROR TYPE:Parse error",*{2.2},"request_params":[]},*{1.1},Count:46

模式7:***|errorData|***,[***,[[***,"Errors/WebTransaction/Uri/vyanke/index.php","syntax xerror,*{2.2},{"request_uri":"http://app.vyanke.com/vyanke/index.php","custom_params":[],"parameter_groups":[["Request headers",{"Referer":"http://www.vyanke.com"}],["Response headers",{"Status":"200"}]],"stack_trace":["Error Info:syntax error,*{1.1},"PHP ERROR TYPE:Parse error",*{2.2},"request_params":[]},*{1.1},Count:31

模式8:***|errorData|***,[***,[[***,*{1.1},"preg_replace():The/e modifier is deprecated,use preg_replace_callback instead",*{2.2},"custom_params":[],"parameter_groups":[["Request headers",{"Referer":""}],["Response headers",{"Status":"200"}]],"stack_trace":["Error Info:preg_replace():The/e modifier is deprecated,use preg_replace_callback instead","PHP ERROR TYPE:Unknown error",*{2.2},"request_params":[]},*{1.1},Count:20

模式9:***|errorData|***,[***,[[***,"Errors/WebTransaction/Uri/vyanke/index.php",*{2.2},{"request_uri":"http://app.vyanke.com/vyanke/index.php","custom_params":[],"parameter_groups":[["Request headers",{"Referer":""}],["Response headers",{"Status":"200"}]],*{1.1},"PHP ERROR TYPE:Fatal error",*{2.2},"request_params":[]},*{1.1},Count:19

从图4中可以看到主流模式符合周期性数据的变化规律,但模式5所对应的文本数据条数在21号的9点-12点间突然升高(椭圆形标注的区域),生成该曲线的一个毛刺点,这时就可以认为用户在访问目标应用时发生了重大异常(毛刺异常检测),该模式所对应的文本数据条数的详细变化曲线在图5中示出。对于发生异常的文本模式,可以结合其具体文本模式内容或日志代码来确定发生异常的原因,例如,从上文模式5的具体内容中可以看到在HS_ConfigController.php文件的第17行中,用户访问了未声明的静态属性,导致访问出现错误,这样就实现了根据文本模式来进行异常检测和故障定位。

根据另一个实施例,如果某个应用服务器中所生成的日志文件中具有某个文本模式的文本数据条数,在某时段内与其他应用服务器对应的文本数据条数有明显差异,则判定该应用服务器中的目标应用在该时段内发生异常。

这里,针对每个应用服务器的日志文件的分析,可以将每个文本模式所对应的文本数据条数生成为变化曲线的形式进行对比,也可以生成为直方图的形式进行对比,或者其他简单直观的图像形式,本发明对此不作限制。图6为执行同一类服务的四个应用服务器所生成的日志文件中、具有同一文本模式的文本数据条数的直方图展示,每组直方图中从左至右分别为文本模式1、文本模式2和文本模式3所对应的文本数据条数。理论上各文本模式的类别及个数应该大体相同,但在应用服务器2中,文本模式2所对应的文本数据条数与其他三个的文本数据条数具有明显差异,因此可以认为用户在访问应用服务器2中的目标应用时发生了异常。

另外,还可以根据全量数据统计每个应用经常出现的主流文本模式,以及经常出现的主流错误进行分析,也可以通过分析那些偶然出现的异常点得到系统的潜在问题。进一步地,还可以综合终端上的所有应用,得到终端经常出现的主流错误,如分析安卓系统手机或ios系统手机经常出现的主流错误,从而为系统开发提供一定的数据支持。

图7示出了根据一个实施例的文本模式库的生成方法500的流程图,如图7所示,该方法始于步骤S510。

在步骤S510,获取目标应用中包括多条文本数据的历史日志文件,并对历史日志文件中的每条文本数据进行分词处理。其中,历史日志文件可以为log文本库、url文本库或trace文本库;文本数据为非结构化文本或半结构化文本。其中,非结构化文本和普通纯文本相比,其具有一定的结构性,但和具有严格理论模型的关系数据库的数据相比,其结构性又稍微弱一些。

具体地,分词方法可以采用自定义的分词规则进行处理,如w1 w2 w3是一行文本,则可以将其分词为[w1][w2][w3]。当然,也可以采用其他现有的分词方法,本发明对此不作限制。

根据一个实施例,在步骤S510之前,还可以包括步骤:将每条文本数据中的预定类型的关键词替换为预定词。其中,预定类型的关键词可以为时间、日期、ip地址或数字类等关键词。具体地,可以将将时间类关键词替换为DATE,日期类关键词替换为TIME,数字类关键词替换为NUM,以及将ip地址类关键词替换为IP。这些替换后的字符在后续处理中当作普通词来处理。当然,也可以替换为其他特定词,本发明对替换词的形式不做限制。其中,对预定类型的关键词判断可以采用正则匹配方法。

随后,在步骤S520中,对历史日志文件的文本数据进行第一次遍历,统计出每个单词的出现次数,并从中筛选出出现次数大于第一阈值的单词作为高频词,将高频词与该高频词的出现次数相关联的存储为高频词词典,如存储为词典D<string,int>。

根据一个实施例,第一阈值的取值为max(支持度×文本数据行数,第四阈值),其中,支持度可以为0.05‰-0.15‰,具体可以为0.01%;第四阈值可以取值为4-6,具体可以为5。

随后,在步骤S530中,从历史日志文件的每条文本数据中筛选出高频词,构成该条文本数据对应的高频词元组。也就是,每条文本数据对应一个高频词元组。

随后,在步骤S540中,根据各高频词在文本数据中的出现次数,计算任意两个高频词之间的依赖度。其中,任意两个高频词wi和wj之间的依赖度包括wi出现时wj出现的第一条件概率p(wj|wi),以及wj出现时wi出现的第二条件概率p(wi|wj)。

具体地,计算任意两个高频词之间的依赖度可以首先统计任意两个高频词wi和wj在同一条文本数据中出现的次数n(wi,wj)。例如,如果w1和w2这两个单词在第1行、第2-3行,第5-10行都出现了,则n(w1,w2)=9。之后,再根据p(wj|wi)=n(wi,wj)/n(wi)计算第一条件概率,根据p(wi|wj)=n(wi,wj)/n(wj)计算的第二条件概率。其中,n(wi)和n(wj)分别是高频词wi和wj在所有文本数据中出现的次数。

随后,在步骤S550中,对历史日志文件中的文本数据进行第二次遍历,根据文本数据对应的高频词元组,生成每条文本数据的预选文本模式。

具体地,可以根据文本数据对应的高频词元组,统计每条文本数据中相邻两个高频词wi和wi+1之间的非高频词的数目m(wi,wi+1)。如果m(wi,wi+1)≠0,则将统计到的数目m(wi,wi+1)以第一通配符的形式插入到高频词元组中的高频词wi和wi+1之间,从而得到该条文本数据的预选文本模式。其中,第一通配符的表示方法可以为:*{m(wi,wi+1),m(wi,wi+1)},代表某条文本数据中相邻的两个高频词wi和wi+1之间有m(wi,wi+1)个非高频词。当然这只是一个示例性的说明,也可以用其他方式进行表示,本发明对此不作限制。

例如,若某条文本数据为:w1 A B C w2 D E w3 F w4,其中,用大写表示的为非高频词,则该条文本对应的高频词元组为w1 w2 w3和w4,且相邻两个高频词之间的非高频词数目分别为3、2、1,则该条文本数据的预选文本模式为:w1*{3,3} w2*{2,2} w3*{1,1} w4,记为预模式一。

之后,以类似的方法对其他条文本数据进行处理,若某条文本数据为:w1F G w2H I F w3J K w4,则其生成的预选文本模式为w1*{2,2} w2*{3,3} w3{2,2} w4,记为预模式二。

根据本发明的一个实施例,如果有多条文本数据的对应高频词元组相同,则可以将这多条文本数据的所对应的多个预选文本模式按照如下方式进行合并:对多个预选文本模式进行一次遍历,确定其中每个预选文本模式中任意两个相邻的高频词wi和wi+1之间的非高频词数目m(wi,wi+1),并从中选出最小值mmin(wi,wi+1)和最大值mmax(wi,wi+1);以及对于其中任意一个预选文本模式,将该预选文本模式中任意两个相邻的高频词wi和wi+1之间的内容修改为用最小值mmin(wi,wi+1)和最大值mmax(wi,wi+1)表示的第二通配符,从而得到合并后的预选文本模式。

具体地,第二通配符的表示方法可以为:*{mmin(wi,wi+1),mmax(wi,wi+1)},代表在多条文本数据中相邻的两个高频词wi和wi+1之间的非高频词数目,最少有mmin(wi,wi+1)个,最多有mmax(wi,wi+1)个。当然这只是一个示例性的说明,也可以用其他方式进行表示,本发明对此不作限制。

按照上述例子将预模式一和预模式二进行合并,w1和w2之间的的高频词,最少为2个,最多为3个;w2和w3之间的高频词,也是最少为2个,最多为3个;w3和w4之间则分别是1个和2个。因此,将这两个预模式为w1*{2,3} w2*{2,3} w3*{1,2} w4

这里,若有k条文本数据都满足预定结构格式,并将其进行合并为预模式三,则认为与预模式三匹对的文本数据共有k条。

随后,在步骤S560中,根据高频词之间的依赖度,对文本数据的预选文本模式进行修正,得到文本数据的修正文本模式。

具体地,对预选文本模式进行修正步骤可以包括:计算预选文本模式中任意一个高频词wi与同行的其他高频词的加权依赖度p(wi)=[p(wi|w1)+p(wi|w2)+…+p(wi|wn))]/(n-1),其中n代表该条文本的高频词数目,且n≠i。如果该加权依赖度小于第二阈值,则将该高频词wi作为高频词wi-1和wi+1之间的一个非高频词从该预选文本模式中删除,并相应的修改wi-1和wi+1之间的通配符。其中,wi-1和wi+1分别是该预选文本模式中高频词wi前后相邻的两个高频词,第二阈值可以取0.3-0.5,具体可以取0.4。

另外,对于预选文本模式中同行的高频词w1、w2…wn,如果i=1,则最后在修改通配符时,需要修改的是w2左侧的通配符;如果i=n,则最后需要修改的是wn-1右侧的通配符。

例如,对于将预模式一和预模式二合并后的预模式三w1*{2,3} w2*{2,3} w3*{1,2} w4,对于其中的高频词w2,该预选文本模式中w1与同行的其他高频词的加权依赖度p(w1)=[p(w1|w2)+p(w1|w3)+p(w1|w4))]/3。如果其值为0.2,小于0.4,则可以认为w1不应该是该行的常用词,将其作为非高频词进行处理,即将其在预选文本模式中删掉。相应地,也要修改w2左侧的通配符,将该通配符的最小值和最大值都加1,得到修正文本模式*{3,4} w2*{2,3} w3*{1,2} w4,记为预模式四。

当然,如果是w2与同行的其他高频词的加权依赖较低,则将w2删掉后需要相应修改w1和w3之间的通配符,得到的修正文本模式为w1*{5,7} w3*{1,2} w4

这里,在对文本模式进行修订时,同时考虑到了wi对wj的依赖度,以及wj对wi的依赖度,两个依赖度都比较高时,才将其保留在文本模式的同一行中,而不是只要有一个高就可以都保留,这样做可避免因单方面依赖度过低而影响整个文本模式的确定,以及生成的文本模式匹配度低的问题。

应当理解,可以对合并后的预选文本模式的基础上进行加权依赖度计算,并根据计算结果对该合并后的预选文本模式进行修正;也可以对合并前的预选文本模式的进行加权依赖度计算计算,并更新过预选文本模式后再进行合并的操作。另外,在将预模式三修正为预模式四的过程中,其所匹对的文本数据并未改变,因此与预模式四匹对的文本行数依然为有k行。

随后,在步骤S570中,对文本数据的修正文本模式进行相似度合并,得到文本模式库。

具体地,对于任意两个修正文本模式,分别计算其序列长度l1和l2,并从中选出最大值max(l1,l2),其中,修正文本模式的序列长度为其所包括的高频词的数目,也就是通配符不计算到序列长度中。之后,确定这两个修正文本模式之间的最长公共子序列,并计算该最长公共子序列的长度l3。其中,最长公共子序列(Longest Common Subsequence,LCS),是指若一个序列S分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则S称为已知序列的最长公共子序列。之后,计算该最长公共子序列的长度l3与序列长度的最大值的比值。如果该比值不小于第三阈值,则将这两个修正文本模式进行合并。其中,第三阈值可以取0.6-0.9,具体可以取0.8。

进一步地,对文本数据的修正文本模式进行相似度合并的步骤可以包括:确定两个待合并的修正文本模式中未计入最长公共子序列中的高频词wi;将该高频词wi作为其相邻两个高频词wi-1和wi+1之间的一个非高频而删除,并相应地修改其相邻两个高频词wi-1和wi+1之间的通配符。其中,对于修正文本模式中同行的高频词w1、w2…wn,若i=1,则最后修改通配符时,需要相应地修改w2左侧的通配符;若i=n,则相应地修改wn-1右侧的通配符。

这里,在统计最长公共子序列时,需要在考虑高频词出现顺序的前提下计算任意两个修正文本模式的相似文本长度。相似度合并后得到的文本模式,从结构上看是保留了构成最长公共子序列的高频词部分,并将保留的高频词中任两个高频词之间的内容都作为非高频词进行处理。通过统计保留后的任两个高频词之间非高频词数目的最小值和最大值,来相应地修改这两个高频词之间的通配符。这样合并的文本模式,既能够更好地保留文本模式的语义,也不会过分合并而消除太多语义。

若有预模式五:w1{1,3} w2{4,4} w3{1,1} w4{2,2} w5

预模式六:w1{2,3} w2{2,2} w6{1,1} w4{1,3} w5

在两个预模式中,其序列长度均为5;w1、w2、w4和w5的单词和顺序相同,这两个预模式的最长公共子序列为4,因此可以进行合并。统计得到w1和w2之间的非高频词数目,最小值为1,最大值为3。将w3和w6都作为非高频词,统计得到w2和w4之间的非高频词数目,最小为4,最大为6。而w4和w5之间的两个值分别是1和3。因此,最后合并后得到的文本模式为:w1 {1,3} w2 {4,6} w4 {1,3} w5

这里,若与预模式五匹对的文本数据共有k1行,与预模式六匹对的文本数据共有k2行,则将这两个预模式合并后的文本模式所匹对的文本数据共有有k1+k2行。

图8a和8b分别示出了根据本发明一个实施例的log文本的部分数据,以及由该完整的log文本数据所生成的文本模式。在该log文本中共有1997条日志数据,其所生成的文本模式只有两个,其中第一个文本模式匹对的文本数据有1373条,第二个文本模式匹对的文本数据有624条,其匹配度与覆盖率非常高。图9a和9b分别示出了根据本发明一个实施例的url文本的部分数据,以及由该完整的url文本数据所生成的文本模式。其中,该url文本中共有63034条url数据,其生成的文本模式只有十几种,这些文本模式可以覆盖到99.9%的文本数据。可见,根据本发明中的方法所生成的文本模式库,能够精准又广泛的覆盖大部分文本数据,极大地方便了后续的数据处理与分析过程。

图10示出了根据本发明一个实施例的异常检测装置600的结构框图,驻留在监控设备中,适于对一个或多个应用服务器中的目标应用进行异常检测。如图6所示,该装置包括:数据获取单元610、模式生成单元620、模式统计单元630和异常检测单元640。

数据获取单元610适于获取用户访问目标应用时所生成包括多条文本数据的日志文件。

模式生成单元620适于根据文本模式库对日志文件进行模式匹配,生成各条文本数据分别对应的文本模式。

模式统计单元630适于根据文本模式对文本数据进行分类统计,得到统计结果。其中,统计结果包括每个应用服务器所生成的日志文件中、各种文本模式在不同时段下分别对应的文本数据条数。

异常检测单元640适于根据所述统计结果判断目标应用是否发生异常。具体地,异常检测单元640可以在发现某个应用服务器所生成的日志文件中、具有某个文本模的文本数据条数在某时段内不符合变化规律时,判定该应用服务器中的目标应用在该时段内发生异常。另外,异常检测单元640还可以在发现某个应用服务器所生成的日志文件中具有某个文本模式的文本数据条数,在某时段内与其他应用服务器对应的文本数据条数有明显差异时,判定该应用服务器中的目标应用在该时段内发生异常。

另外,变化规律通过文本数据条数随着时间的变化曲线来表示。文本数据条数在某时段内不符合变化规律的情况包括:该文本模式所对应的文本数据条数在某一时段内激增或骤降;或者出现一种新的文本模式。

根据一个实施例,装置600还包括模式库生成单元(图中未示出),适于根据以下方法生成文本模式库:获取目标应用中包括多条文本数据的历史日志文件,并对历史日志文件中的每条文本数据进行分词处理;对历史日志文件中的文本数据进行第一次遍历,统计出所有文本数据中每个单词的出现次数,并从中筛选出出现次数大于第一阈值的单词作为高频词,将高频词与该高频词的出现次数相关联的存储为高频词词典;分别从历史日志文件中的每条文本数据中筛选出高频词,构成该条文本数据对应的高频词元组;根据各高频词在文本数据中的出现次数,计算任意两个高频词之间的依赖度;对历史日志文件中的文本数据进行第二次遍历,根据文本数据对应的高频词元组,生成每条文本数据的预选文本模式;根据高频词之间的依赖度,对文本数据的预选文本模式进行修正,得到文本数据的修正文本模式;以及对文本数据的修正文本模式进行相似度合并,得到文本模式库。关于文本模式库的生成方法,其具体细节已在基于图7-图9的描述中详细公开,在此不再赘述。

根据本发明的异常检测装置600,其具体细节已在基于图1-图9的描述中详细公开,在此不再赘述。

根据本发明的技术方案,通过统计每个应用服务器所生成的日志文件中、各种文本模式在不同时段下分别对应的文本数据条数,得到该文本数据条数的变化规律。如果某时段内某个应用服务器所生成的日志文件中、具有某个文本模式的文本数据条数不符合该变化规律,则可以判定该应用服务器中的目标应用在该时段内发生异常。或者,如果发现某个应用服务器中所生成的日志文件中具有某个文本模式的文本数据条数,在某时段内与其他应用服务器对应的文本数据条数有明显差异,也可以判定该应用服务器中的目标应用在该时段内发生异常。之后,运维人员就可以根据该时段发生异常的文本数据内容,分析目标应用发生异常的原因。这样的话,只需要关注文本模式对应的文本数据条数的变化即可判断应用是否发生异常,就能做到快速的故障定位,明显比较省事省力,提高开发效率。

B10、如B9所述的装置,其中,所述统计结果包括每个应用服务器所生成的日志文件中、各种文本模式在不同时段下分别对应的文本数据条数;所述异常检测单元进一步适于:根据所述统计结果确定各种文本模式所对应的文本数据条数随着时间的变化规律;如果某个应用服务器所生成的日志文件中、具有某个文本模的文本数据条数在某时段内不符合所述变化规律时,则判定该应用服务器中的目标应用在该时段内发生异常。

B11、如B10所述的装置,其中,所述异常检测单元进一步适于:如果某个应用服务器所生成的日志文件中具有某个文本模式的文本数据条数,在某时段内与其他应用服务器对应的文本数据条数有明显差异,则判定该应用服务器中的目标应用在该时段内发生异常。

B12、如B10所述的装置,其中,所述变化规律通过文本数据条数随着时间的变化曲线来表示。

B13、如B10所述的装置,其中,所述文本数据条数在某时段内不符合所述变化规律的情况包括:该文本模式所对应的文本数据条数在某一时段内激增或骤降;或者出现一种新的文本模式。

B14、如B9-B13中任一项所述的装置,还包括模式库生成单元,适于根据以下方法生成文本模式库:所述目标应用的历史日志文件,所述历史日志文件包括多条文本数据;对历史日志文件中的每条文本数据进行分词处理;对历史日志文件中的文本数据进行第一次遍历,统计出所有文本数据中每个单词的出现次数,并从中筛选出出现次数大于第一阈值的单词作为高频词,将高频词与该高频词的出现次数相关联的存储为高频词词典;分别从历史日志文件中的每条文本数据中筛选出高频词,构成该条文本数据对应的高频词元组;根据各高频词在文本数据中的出现次数,计算任意两个高频词之间的依赖度;对历史日志文件中的文本数据进行第二次遍历,根据文本数据对应的高频词元组,生成每条文本数据的预选文本模式;根据高频词之间的依赖度,对文本数据的预选文本模式进行修正,得到文本数据的修正文本模式;以及对文本数据的修正文本模式进行相似度合并,得到文本模式库。

B15、如B14所述的装置,其中,所述模式库生成单元在对每条文本数据进行分词处理前,还适于:将每条文本数据中的预定类型的关键词替换为预定词,所述预定类型的关键词包括时间、日期、ip地址和数字中的至少一个。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。

如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。

尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

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