一种基于分词算法的日志解析方法及系统的制作方法

文档序号:6632677阅读:645来源:国知局
一种基于分词算法的日志解析方法及系统的制作方法
【专利摘要】本发明涉及日志审计、安全管理【技术领域】,旨在提供一种基于分词算法的日志解析方法及系统。该种基于分词算法的日志解析方法包括步骤:对日志进行分词处理、对分词结果进行词义分析、对得到的带词义标注的分词结果进行词义过滤、对得到的过滤后的带词义标注的分词结果进行特征提取、对得到的词义序列特征码进行特征匹配、对得到的语意解析规则进行语意解析;该种日志解析系统包括分词模块、词义分析模块、词义过滤模块、词序特征提取模块、特征匹配模块和语意解析模块。本发明极大地降低了日志解析的难度和复杂度,从而提升对日志进行解析规则开发的效率,可以比较好的适应日志格式的一些变化。
【专利说明】—种基于分词算法的日志解析方法及系统

【技术领域】
[0001]本发明是关于日志审计、安全管理【技术领域】,特别涉及一种基于分词算法的日志解析方法及系统。

【背景技术】
[0002]计算机系统中任何程序都有可能输出日志:操作系统内核、各种应用服务器等等。日志中包含了大量人们一主要是安全管理人员、运维人员、业务分析人员一会感兴趣的信息,例如访问者的IP、访问的时间、来源的地址以及访问者所使用的客户端信息、分析用户行为特征等。
[0003]既然这些日志如此的有用,怎么进行日志分析,就并不是一个简单的问题。日志包含了成千上万种可能的格式和数据,“分析”更是难以定义,也许是简单的统计值的计算,也许是复杂的数据挖掘算法。当然,现在已经有无数现成的工具可以帮助我们来分析它们,例如专门用于Web访问日志分析的Awstats、Webalizer。这些工具虽然很好很强大,但显然无法满足用户未标准、非常规的分析需求,也无法满足对各种其他种类日志的分析需求。要进行稍复杂点的分析,或者要做基于日志的数据挖据等高级分析,依然需要自己来完成。
[0004]当数据规模比较小的时候,在分析人员尚能忍受的时候,一切都好办,现成的各种Unix/Linuxg工具一如awk、grep、sort、join等都是日志分析的利器。如果还有更复杂一些的逻辑,还可以使用各种脚本语言,如Perl、Ruby,基本可以解决所有的问题。上述这些工具,都依赖于正则表达式。不过,当我们需要频繁分析日志的时候,当我们需要对存在几十、上百种不同的设备,产生几千、上万种日志格式的时候。基于正则表达式的做法在一段时间之后可能就会让我们头疼,尤其是如何进行大量正则表达式的维护、正则表达式之间的误匹配、正则表达式的链式匹配性能低下等问题。


【发明内容】

[0005]本发明的主要目的在于克服现有技术中的不足,提供一种能极大地降低日志解析的难度和复杂度的日志解析方法及其日志解析系统。为解决上述技术问题,本发明的解决方案是:
[0006]提供一种基于分词算法的日志解析方法,用于对日志进行解析,具体包括下述步骤:
[0007]A:对日志进行分词处理:将获取的日志信息,即待分析的字串,按照匹配策略与大机器词典中的词条进行匹配,若在大机器词典中找到与待分析字串对应的词条,则匹配成功,得到分词结果;然后再对日志信息进行过滤处理,并输出分词结果的字符串,分词结果的字符串包括分割好的中文单词、英文单词和数字串;
[0008]所述匹配策略包括正向最大匹配法、逆向最大匹配法、最少切分、双向最大匹配法;所述大机器词典是指已经建立好的词库,包括通用词库、专业词条;
[0009]B:对步骤A得到的分词结果进行词义分析:基于词义库,将分词结果的字符串逐个与词义库中定义的词义类型进行匹配,若在词义库中找到与字符串匹配的词义类型,则匹配成功,并对字符串进行词义标注,得到带词义标注的分词结果,再将带词义标注的分词结果进行输出;
[0010]所述词义库是指存储有词义内容的数据库,词义内容包括通用词库、专业词条和词义类型;
[0011]C:对步骤B得到的带词义标注的分词结果进行词义过滤:对词义标注的分词结果进行词义过滤,过滤掉所有带没有词义标注的分词,保留词义标注的分词结果,即得到过滤后的带词义标注的分词结果,即带词义标注的分词单词序列;
[0012]D:对步骤C得到的过滤后的带词义标注的分词结果进行特征提取:针对步骤C中得到的过滤后的带词义标注的分词结果,将分词结果中的词义标注提取,得到词义序列;然后对词义序列进行哈希算法或相似哈希算法(公知技术)处理后,得到并输出词义序列特征码;
[0013]E:对步骤D中得到的词义序列特征码进行特征匹配:基于语意解析规则库,将步骤D中的得到的词义序列特征码与语意解析规则库中定义的词序特征码进行匹配,若在语意解析规则库中找到与词义序列特征码匹配的词序特征码,则匹配成功,得到与词序特征码对应的语意解析规则并输出;若匹配不成功,则触发人工交互语意解析:人工查看日志,结合步骤C中的得到的经过滤后的带词义标注的分词结果,明确分词结果中每个词在结构化数据(结构化数据是指由一组含义明确、类型明确的属性组成的数据实体,相对于日志这种未结构化的信息而言,结构化数据能够用于进行比较、累加、过滤等分析处理,以及数据挖掘、预测、异常检查等高级分析处理;结构化数据有各种具体的实现,很多编程开发语言中的字典结构、哈希表结构都是一种结构化数据,如Java语言中的Map结构、Objective-C语言中的NSDict1nary,结构化数据还可以有多种存储方式,常用的方式如XML、JS0N、关系型数据库、列存储N0SQL系统等)中对应的属性,定义出新的语意解析规则,并结合词序特征插入到语意解析规则库中;
[0014]所述语意解析规则库是指存储有语意解析内容的数据库,语意解析内容包括词序特征码、与特征码对应的语意解析规则;所述语意解析规则是将词义序列中的每个词映射为结构化数据中对应的属性;
[0015]F:对步骤E得到的语意解析规则进行语意解析:针对经过滤带词义标注的分词结果结合语意解析规则,进行语意解析,输出解析后事件;得到解析后事件,即完成了日志解析,能进行事件后续处理。
[0016]提供基于所述的一种基于分词算法的日志解析方法的日志解析系统,包括分词模块、词义分析模块、词义过滤模块、词序特征提取模块、特征匹配模块、语意解析模块,分词模块连接有一个(外部的)大机器词典,词义分析模块连接有一个(外部的)词义库,特征匹配模块连接有一个(外部的)语意解析规则库;
[0017]所述分词模块用于对日志进行分词处理,得到分词结果;
[0018]所述词义分析模块用于对分词模块得到的分词结果进行词义分析,得到词义标注的分词结果;
[0019]所述词义过滤模块用于对词义分析模块得到的词义标注的分词结果进行过滤,得到过滤后的分词结果;
[0020]所述词序特征提取模块用于从词义过滤模块得到过滤后的分词结果中,提取词序特征;
[0021]所述特征匹配模块用于根据词序特征提取模块提取的词序特征,基于外部的语意解析规则库,进行语意解析规则匹配;
[0022]所述语意解析模块用于根据特征匹配模块匹配的语意解析规则,进行语意解析,得到的日志解析后的信息和原始日志即构成了解析后事件。
[0023]本发明中的基本原理是:日志解析系统对日志进行分词,根据词义库、语意解析规则库,对日志完成词义、语意的分析,成为一个解析后事件。在本发明中,日志经过分词得到分词结果,经过词义分析,得到词义标注的分词结果;再进行词义过滤,得到过滤后的分词结果,进行词序特征提取,得到词序特征;根据语意解析规则库,通过特征匹配找到匹配的语意解析规则,完成对日志的语意解析,最终成为一个解析后事件,发送到其他模块或系统进行事件后续处理。
[0024]与现有技术相比,本发明的有益效果是:
[0025]1、极大地降低了日志解析的难度和复杂度,从而提升对日志进行解析规则开发的效率;
[0026]2、可以比较好的适应日志格式的一些变化。

【专利附图】

【附图说明】
[0027]图1为本发明的主要模块流程图。
[0028]图2为本发明的日志解析运行框图
[0029]图3为本发明的日志解析方法总体流程框图。

【具体实施方式】
[0030]首先需要说明的是,本发明涉及涉及日志审计、安全管理【技术领域】,是计算机技术在信息安全【技术领域】的一种应用。在本发明的实现过程中,会涉及到多个软件功能模块的应用。 申请人:认为,如在仔细阅读申请文件、准确理解本发明的实现原理和发明目的以后,在结合现有公知技术的情况下,本领域技术人员完全可以运用其掌握的软件编程技能实现本发明。前述软件功能模块包括但不限于:分词模块、词义分析模块、词义过滤模块、词序特征提取模块等,凡本发明申请文件提及的均属此范畴, 申请人:不再一一列举。
[0031]下面结合附图与【具体实施方式】对本发明作进一步详细描述:
[0032]如图2所示,一种基于分词算法的日志解析方法,用于对日志进行解析,具体包括下述步骤:
[0033]A:对日志进行分词处理:针对获取的日志信息进行分词、过滤处理、输出中文单词、英文单词和数字串等一系列分割好的字符串,分词模块流程图见附图1中的101。
[0034]按照一定的策略将待分析的字串(日志)与一个“大机器词典”中的词条进行匹配,若在词典中找到某个字符串,则匹配成功,得到分词结果。匹配策略包含但不限于:正向最大匹配法、逆向最大匹配法、最少切分、双向最大匹配法等。
[0035]所述分词:分词就是将连续的字序列按照一定的规范重新组合成词序列的过程,就是把字序列分成有意义的词。分词只是信息处理的一部分,分词本身并不是目的,而是后续处理过程的必要阶段。分词技术是一种成熟的公知技术,分词技术广泛用于文本信息处理、搜索引擎、自然语言处理等领域。
[0036]所述大机器词典是已经建立好的词库,包括:通用词库、专业词条。
[0037]B:对步骤A得到的分词结果进行词义分析:针对分词结果中的单词逐个进行单词词义分析、词义标注,输出带词义标注的分词单词,词义分析模块流程图见附图1中的102。
[0038]基于一个已经建好的词义库,将分词结果中的单词与该词义库中定义的词义类型进行匹配,若在词义库中找到某个与单词匹配的词义类型,则匹配成功后对单词进行词义标注,得到带词义标注的分词结果。
[0039]所述词义库是事先已经准备好的数据库,内容包含:通用词库和专业词条、词义类型
[0040]C:对步骤B得到的带词义标注的分词结果进行词义过滤:对词义标注的分词结果进行词义过滤,过滤掉所有没有词义标注的分词,保留词义标注的分词结果,即得到过滤后的带词义标注的分词单词序列;
[0041]D:对步骤C得到的过滤后的带词义标注的分词结果进行特征提取:针对经过滤后的带词义标注的分词结果,将分词结果中的词义标注提取,得到词义序列。特别指出,为便于后续的匹配运算处理,针对词义序列进行哈希算法或相似哈希算法处理后,输出词义序列特征码。特征提取模块流程图见附图1中的103。
[0042]所述哈希算法或相似哈希算法为公知技术。
[0043]E:对步骤D得到的词义序列特征码进行特征匹配:针对词义序列特征码进行特征匹配,输出对应的语意解析规则。特征匹配模块流程图见附图1中的104。
[0044]基于一个已经建立好的语意解析规则库,将词义序列与该库中定义的特征码进行匹配,若在语意解析规则库中找到与词义序列特征码匹配的词序特征码,则匹配成功,得到与特征码对应的语意解析规则。
[0045]若匹配不成功,则会触发人工交互语意解析过程。人工交互解析过程是指:人工查看日志结合经过滤后带词义标注的分词结果,明确分词结果中每个词在结构化数据中对应的属性,定义出新的语意解析规则,并结合词序特征插入到语意解析规则库中;
[0046]所述语意解析规则库是事先已经准备好的数据库,内容包含:词序特征码、与特征码对应的语意解析规则等。所述语意解析规则是将词义序列中的每个词映射为结构化数据中对应的属性。
[0047]所述结构化数据是指由一组含义明确、类型明确的属性组成的数据实体,相对于日志这种未结构化的信息而言,结构化数据能够用于进行比较、累加、过滤等分析处理,以及数据挖掘、预测、异常检查等高级分析处理。结构化数据有各种具体的实现,很多编程开发语言中的字典结构、哈希表结构都是一种结构化数据,如Java语言中的Map结构、Objective-C语言中的NSDict1nary。结构化数据还可以有多种存储方式,常用的方式如XML、JS0N、关系型数据库、列存储N0SQL系统等。
[0048]F:对步骤E得到的语意解析规则进行语意解析:针对经过滤带词义标注的分词结果结合语意解析规则,进行语意解析,输出解析后事件。语意解析模块流程图见附图一 105。
[0049]得到解析后事件,即完成了日志解析,能进行事件后续处理。
[0050]一种基于分词算法的日志解析系统包括分词模块、词义分析模块、词义过滤模块、词序特征提取模块、特征匹配模块、语意解析模块,分词模块连接有一个外部的大机器词典,词义分析模块连接有一个外部的词义库,特征匹配模块连接有一个外部的语意解析规则库。
[0051]所述分词模块用于对日志进行分词处理,得到分词结果;
[0052]所述词义分析模块用于对分词模块得到的分词结果进行词义分析,得到词义标注的分词结果;
[0053]所述词义过滤模块用于对词义分析模块得到的词义标注的分词结果进行过滤,得到过滤后的分词结果;
[0054]所述词序特征提取模块用于从词义过滤模块得到过滤后的分词结果中,提取词序特征;
[0055]所述特征匹配模块用于根据词序特征提取模块提取的词序特征,基于外部的语意解析规则库,进行语意解析规则匹配;
[0056]所述语意解析模块用于根据特征匹配模块匹配的语意解析规则,进行语意解析,得到的日志解析后的信息和原始日志即构成了解析后事件。
[0057]下面的实施例是采用分词算法的日志解析系统的一个具体例子,以及相关的其他实体部分、交互的信息,可以使本专业的专业技术人员更全面地理解本发明,但不以任何方式限制本发明,具体参考图3。
[0058]首先采用分词算法的日志解析系统接收到日志,比如来自Cisco ASA防火墙的日志是“May 13200910:37:52: % ASA-2-106001:1nbound TCP connect1n deniedfroml.1.1.1/3000 to 192.168.1.1/8000 flags SYN on interface outside”。
[0059]根据分词词库,这些日志经过分词模块处理,得到分词结果。在这个例子中,会得到如下的词列表[May 13200910:37:52, ASA-2-106001, Inbound, TCP, connect1n, denied,from, 1.1.1.1, 3000, to, 192.168.1.1, 8000, flags, SYN, on, interface, outside],成为分词结果。
[0060]根据词义库,词义分析模块会对分词结果逐个进行词义标注。在这个例子中,May13200910:37:52会被标注为时间戳,ASA-2-106001会被标注为名称,Inbound会被标注为方向,TCP会被标注为协议,denied会被标注为动作,from会被标注为方向,1.1.1.1会被标注为IPv4地址,3000会被标注为数值,to会被标注为方向,192.168.1.1会被标注为IPv4地址,8000会被标注为数值,SYN会被标注为关键字,interface会被标记为名称,outside会被标记为方向,这样就得到了词义标注的分词结果。
[0061]对词义标注的分词结果进行词义过滤,去掉没有词义标注的词后,就得到了过滤后的分词结果。
[0062]从过滤后的分词结果中,按照词顺序提取词义,得到词义序列,也就是[时间戳,名称,方向,协议,动作,方向,IPv4,数值,方向,IPv4,数值,关键字,名称,方向],通过哈希或相似哈希算法进行处理,比如采用MD5算法对这个词义序列运算,得到f313768faedad946582869d09b4cacl5,即作为词序特征。
[0063]根据词序特征,特征匹配模块检索语意解析规则库,找到对应的语意解析规则,在这个例子中,可能对应这样一条解析规则:进入的TCP连接被阻断,规则包含的信息有--第一个时间戳表示的是发送时间,对应的字段是startTime ;第一个IPv4表示的是来源地址,对应的字段是srcAddress等;规则还包含的附加信息有:这个事件的危险级别是3,轻微危险。
[0064]语意解析模块根据语意解析规则,完成对日志的语意解析处理,最终形成了解析后事件,而且解析后事件包含了刚才提到的各种语意信息。
[0065]最终,采用分词算法的日志解析系统把解析后事件发送到外部模块或系统,由外部模块或系统完成事件后续处理。
[0066]最后,需要注意的是,以上列举的仅是本发明的具体实施例。显然,本发明不限于以上实施例,还可以有很多变形。本领域的普通技术人员能从本发明公开的内容中直接导出或联想到的所有变形,均应认为是本发明的保护范围。
【权利要求】
1.一种基于分词算法的日志解析方法,用于对日志进行解析,其特征在于,具体包括下述步骤: 八:对日志进行分词处理:将获取的日志信息,即待分析的字串,按照匹配策略与大机器词典中的词条进行匹配,若在大机器词典中找到与待分析字串对应的词条,则匹配成功,得到分词结果;然后再对日志信息进行过滤处理,并输出分词结果的字符串,分词结果的字符串包括分割好的中文单词、英文单词和数字串; 所述匹配策略包括正向最大匹配法、逆向最大匹配法、最少切分、双向最大匹配法;所述大机器词典是指已经建立好的词库,包括通用词库、专业词条; 8:对步骤八得到的分词结果进行词义分析:基于词义库,将分词结果的字符串逐个与词义库中定义的词义类型进行匹配,若在词义库中找到与字符串匹配的词义类型,则匹配成功,并对字符串进行词义标注,得到带词义标注的分词结果,再将带词义标注的分词结果进行输出; 所述词义库是指存储有词义内容的数据库,词义内容包括通用词库、专业词条和词义类型; 0:对步骤8得到的带词义标注的分词结果进行词义过滤:对词义标注的分词结果进行词义过滤,过滤掉所有带没有词义标注的分词,保留词义标注的分词结果,即得到过滤后的带词义标注的分词结果,即带词义标注的分词单词序列; 0:对步骤得到的过滤后的带词义标注的分词结果进行特征提取:针对步骤中得到的过滤后的带词义标注的分词结果,将分词结果中的词义标注提取,得到词义序列;然后对词义序列进行哈希算法或相似哈希算法处理后,得到并输出词义序列特征码; 2:对步骤0中得到的词义序列特征码进行特征匹配:基于语意解析规则库,将步骤0中的得到的词义序列特征码与语意解析规则库中定义的词序特征码进行匹配,若在语意解析规则库中找到与词义序列特征码匹配的词序特征码,则匹配成功,得到与词序特征码对应的语意解析规则并输出;若匹配不成功,则触发人工交互语意解析:人工查看日志,结合步骤中的得到的经过滤后的带词义标注的分词结果,明确分词结果中每个词在结构化数据中对应的属性,定义出新的语意解析规则,并结合词序特征插入到语意解析规则库中;所述语意解析规则库是指存储有语意解析内容的数据库,语意解析内容包括词序特征码、与特征码对应的语意解析规则;所述语意解析规则是将词义序列中的每个词映射为结构化数据中对应的属性; ?:对步骤2得到的语意解析规则进行语意解析:针对经过滤带词义标注的分词结果结合语意解析规则,进行语意解析,输出解析后事件;得到解析后事件,即完成了日志解析,能进行事件后续处理。
2.基于权利要求1所述的一种基于分词算法的日志解析方法的日志解析系统,其特征在于,包括分词模块、词义分析模块、词义过滤模块、词序特征提取模块、特征匹配模块、语意解析模块,分词模块连接有一个大机器词典,词义分析模块连接有一个词义库,特征匹配模块连接有一个语意解析规则库; 所述分词模块用于对日志进行分词处理,得到分词结果; 所述词义分析模块用于对分词模块得到的分词结果进行词义分析,得到词义标注的分词结果; 所述词义过滤模块用于对词义分析模块得到的词义标注的分词结果进行过滤,得到过滤后的分词结果; 所述词序特征提取模块用于从词义过滤模块得到过滤后的分词结果中,提取词序特征; 所述特征匹配模块用于根据词序特征提取模块提取的词序特征,基于外部的语意解析规则库,进行语意解析规则匹配; 所述语意解析模块用于根据特征匹配模块匹配的语意解析规则,进行语意解析,得到的日志解析后的信息和原始日志即构成了解析后事件。
【文档编号】G06F17/30GK104391881SQ201410604098
【公开日】2015年3月4日 申请日期:2014年10月30日 优先权日:2014年10月30日
【发明者】谈修竹, 范渊 申请人:杭州安恒信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1