CN102164050A - 日志解析方法及日志解析节点设备 - Google Patents

日志解析方法及日志解析节点设备 Download PDF

Info

Publication number
CN102164050A
CN102164050A CN2011101255606A CN201110125560A CN102164050A CN 102164050 A CN102164050 A CN 102164050A CN 2011101255606 A CN2011101255606 A CN 2011101255606A CN 201110125560 A CN201110125560 A CN 201110125560A CN 102164050 A CN102164050 A CN 102164050A
Authority
CN
China
Prior art keywords
parse node
daily record
subordinate
parse
matched
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011101255606A
Other languages
English (en)
Other versions
CN102164050B (zh
Inventor
丁兆杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Ruishan Network Co ltd
Original Assignee
Beijing Star Net Ruijie Networks Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Star Net Ruijie Networks Co Ltd filed Critical Beijing Star Net Ruijie Networks Co Ltd
Priority to CN201110125560.6A priority Critical patent/CN102164050B/zh
Publication of CN102164050A publication Critical patent/CN102164050A/zh
Application granted granted Critical
Publication of CN102164050B publication Critical patent/CN102164050B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Telephonic Communication Services (AREA)
  • Machine Translation (AREA)

Abstract

本发明公开了一种日志解析方法及日志解析节点设备,用以提供一种高效且适应性强的日志解析方案。方法包括:解析节点获得日志以及用于指示日志中未解析内容的待匹配偏移;并利用存储的第一正则表达式,对所述待匹配偏移所指示的未解析内容进行解析,获得与第一正则表达式匹配的字段信息;以及判断是否存在下级解析节点;在判断结果为否,且所述解析节点预先存储有事件类型信息时,所述解析节点将所述事件类型信息确定为所述日志所记录事件的事件类型信息,其中,所述事件类型信息是根据所述日志传递到所述解析节点所经过的路径上包含的至少一个解析节点存储的正则表达式能从日志中解析出的字段信息而确定的。

Description

日志解析方法及日志解析节点设备
技术领域
本发明涉及网络信息安全和网络管理领域,尤其涉及一种日志解析方法及日志解析节点设备。
背景技术
***日志(Syslog)是一种在网络环境中广泛使用的日志,其可以被各种操作***、网络设备和安全设备官方所支持。对于其他类型的日志,在实际应用中往往也会通过日志转换器转换为Syslog的格式,便于进行统一采集、管理和分析。
Syslog是一种格式极为宽松自由的日志,实际上除了Syslog的长度不能超过1024字节的强制要求以外,几乎没有别的针对Syslog的强制要求。由于Syslog的格式非常宽松自由,因此不同厂商甚至同一厂商的不同产品所生成的Syslog在格式上都存在巨大差异。如下表1、表2中的代码即为两种不同设备产生的关于同一类事件的Syslog:
表1:
Figure BDA0000061416600000011
表2:
Figure BDA0000061416600000012
由表1、表2可见,针对同一类事件的不同Syslog在格式上的差异可能是巨大的。面对如此混乱的Syslog格式,只有以自动化的方式解析和提取出其中有用的信息之后,才有可能对这些Syslog统一进行有效的分析和处理。这个过程就称为日志解析,其目的主要有以下两点:
其一是为了确定日志的事件类型。通俗的讲就是要确定这条日志说的到底是什么事情。如前面2条Syslog的含义实际上基本相同,均说明一次TCP通讯被允许通过了。所以这2条Syslog都可以被赋予“TCPAccept”这一事件类型。
其二是为了获得与日志的事件类型相关的字段信息。如对于上述“TCPAccept”事件来说,通常还要知道这个TCP通讯是发生在哪两个端点之间的。所以至少还要通过对日志的解析,从中提取出包含源IP、源端口、目的IP和目的端口的内容来。如:上述2条日志在完成解析后,均要能得到如下表3a所示的字段提取结果集:
表3a:
  字段名   字段提取结果
  源IP   192.168.65.65
  源端口   1355
  目的IP   10.10.10.10
  目的端口   80
综上,对一条Syslog进行解析的目的就是要从中获得“事件类型”和“字段提取结果集”这两个信息。
在一个正常运行的网络中,各种主机、网络设备、安全设备和应用软件产生的Syslog量极大。通常在一个大中型组织的网络环境中,其产生的日志多达每秒数万条。这些日志需要被实时地采集、解析和存储,因此对日志解析提出了极为严苛的性能要求。
目前,Syslog的解析方案几乎无一例外地均是通过正则表达式来实现的。正则表达式,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。简单来说,利用正则表达式对Syslog进行解析就是一种对文本进行模式匹配和内容提取的手段。正则表达式定义了一个模式,只有符合该模式的文本才能被正则表达式匹配。而将这个正则表达式所匹配的内容提取出来,就能实现对日志中特定内容的提取。
在理想状态下,对日志应用了合适的正则表达式后,就应当能一次得到解析结果。然而问题是:在接收到一条日志后,才能如何确定哪个正则表达式才是合适的,所以如何快速地确定日志的格式,并选择与之相对应的正则表达式进行解析是日志解析过程中的一个难点。对于这个问题,目前主要有如下技术方案:
一、穷举法
简单来说,穷举法就是把所有已知的日志格式(正则表达式)都跟待解析日志匹配一遍,其中能匹配上的自然就是合适的了。
显然这是一种非常低效的方式:因为许多设备都可能生成种类繁多、格式不一的日志来。一种典型的网络设备就可能生成数百种格式完全不同的日志。因此如果对每条日志都得尝试用数百个正则表达式进行解析,其性能浪费就非常惊人:即使日志解析节点设备能够在1秒内进行10万次正则匹配,然而倘若其每解析一条日志平均要尝试100次的话,最终得到的日志解析能力也不足每秒1000次。
二、关键字法
关键字法是用于弥补穷举法缺陷而提出的一种日志解析方法,其也是当前主要采用的日志解析手段。其对日志源(产生日志的设备)和日志解析节点设备均有要求。
应用关键字法的前提是同一设备发出的日志在格式上具备一个公共首部,这个公共首部的格式统一,其中至少包含如下信息:日志类型标识符(能够唯一标识一种具体格式的日志)和日志优先级。
比如,针对表3b、表4所示的这样两条日志:
表3b:
Figure BDA0000061416600000041
表4:
Figure BDA0000061416600000042
这两条日志的格式完全不同,但是它们的首部是完全相同的,且首部的格式均为“日志类型:”。针对具备该公共首部的上述两条日志,日志解析节点设备就可以分别提取这两条日志的公共首部信息,并从中解析出日志类型(即关键字);进而根据这个关键字选择其对应的正则表达式完成最终的解析工作。如上例中可以根据“SESLOG”和“FWLOG”这两个关键字确定相应的正则表达式。
关键字法的局限性很明显:若不同日志中不包含公共首部,就不可能应用关键字法。而且在实际应用中,不同厂商的不同产品在关键字的实现上甚至也存在很大差异。如有的厂商可以仅通过一个关键字就唯一确定日志格式;而有的厂商鉴于其设备功能本身的复杂性,往往需要通过“日志类型+子类型”这样的多级分类机制来确定日志格式。因此以关键字法进行日志解析的设备往往不得不针对主流厂商的分类方式实现对应的关键字提取逻辑,在扩展性和适应性上均存在问题。
发明内容
本发明实施例提供一种日志解析方法及设备,用以提供一种高效且适应性强的日志解析方案。
本发明实施例采用以下技术方案:
一种日志解析方法,包括:
解析节点获得日志以及用于指示日志中未解析内容的待匹配偏移;并利用存储的第一正则表达式,对所述待匹配偏移所指示的未解析内容进行解析,获得与第一正则表达式匹配的字段信息;以及判断是否存在下级解析节点;在判断结果为否,且所述解析节点预先存储有事件类型信息时,所述解析节点将所述事件类型信息确定为所述日志所记录事件的事件类型信息,其中,所述事件类型信息是根据所述日志传递到所述解析节点所经过的路径上包含的至少一个解析节点存储的正则表达式能从日志中解析出的字段信息而确定的。
可选的,所述方法还包括:
在判断结果为是时,所述解析节点根据待匹配偏移确定方式确定待匹配偏移,并将所述日志和确定的待匹配偏移提供给能按照指定解析方式解析日志中未解析内容的一个下级解析节点,其中,所述待匹配偏移确定方式是根据日志的格式和预先确定的需从日志中确定出的字段信息而设置的。
可选的,所述解析节点将所述日志和所述确定的待匹配偏移提供给能按照指定解析方式解析日志中未解析内容的一个下级解析节点,具体包括:
按照一次向一个所述下级解析节点提供所述日志和所述确定的待匹配偏移的方式,逐次向各个所述下级解析节点提供所述日志和所述确定的待匹配偏移,直至接收到一个下级解析节点发送的确认消息后,停止提供所述日志和所述确定的待匹配偏移;其中,所述确认消息为所述一个下级解析节点根据自身存储的第二正则表达式,确定出能解析所述日志中未解析内容后发送的。
可选的,所述解析节点将所述日志和所述确定的待匹配偏移提供给能按照指定解析方式解析日志中未解析内容的一个下级解析节点,具体包括:所述解析节点获得第一正则表达式中的关键字字段,并根据获得的关键字字段从所述日志中解析出关键字字段信息;所述解析节点从预先存储的各个下级解析节点分别所使用的第二正则表达式中,确定与所述关键字字段信息匹配的第二正则表达式;以及所述解析节点从使用与所述关键字字段信息匹配的第二正则表达式的下级解析节点中选取一个下级解析节点,并将所述日志和所述确定的待匹配偏移,提供给选取的该下级解析节点。
可选的,所述解析节点将所述日志和所述确定的待匹配偏移提供给能按照指定解析方式解析日志中未解析内容的一个下级解析节点,具体包括:
所述解析节点获得第一正则表达式中的关键字字段,并根据获得的关键字字段从所述日志中解析出关键字字段信息;所述解析节点从预先为各个下级解析节点分别分配的字段信息中,确定与所述关键字字段信息匹配的字段信息;以及所述解析节点从确定的字段信息所对应的下级解析节点中选取一个下级解析节点,并将所述日志和所述确定的待匹配偏移提供给选取的该下级解析节点。
一种日志解析节点设备,包括:
第一获得单元,用于获得日志以及用于指示日志中未解析内容的待匹配偏移;第二获得单元,用于利用存储的第一正则表达式,对第一获得单元获得的待匹配偏移所指示的第一获得单元获得的日志中的未解析内容进行解析,获得与第一正则表达式匹配的字段信息;判断单元,用于判断是否存在下级解析节点设备;事件类型信息确定单元,用于在判断单元得到的判断结果为否,且所述日志解析节点设备预先存储有事件类型信息时,将所述事件类型信息确定为所述日志所记录事件的事件类型信息,其中,所述事件类型信息是根据所述日志传递到所述日志解析节点设备所经过的路径上包含的至少一个日志解析节点设备存储的正则表达式能从日志中解析出的字段信息而确定的。
本发明实施例的有益效果如下:
本发明实施例提供的上述方案通过设置用于日志中未解析内容的待匹配偏移,从而解析节点可以只对未解析内容进行解析,而无需重复解析已解析部分,因此可以减少在日志解析过程中产生的回溯和重复匹配等问题,从而达到较高的解析效率,并且该方法不要求被解析的不同日志需具备公共的首部信息,因此具有较强的适应性。
附图说明
图1为本发明实施例提供的一种日志解析方法的具体流程示意图;
图2为一种解析树的具体结构示意图;
图3为任意解析节点的内部结构示意图;
图4实现混合类型的下级解析节点选择器的示意图;
图5为对一条Syslog进行解析的过程示意图;
图6为本发明实施例提供的一种日志解析节点设备的具体结构示意图。
具体实施方式
本文针对现有技术方案存在的诸多问题,提出了一种高效且适应性强的日志解析方案。该方案可以减少在日志解析过程中产生的回溯和重复匹配等问题,从而达到较高的解析效率,并且该方法不要求被解析的不同日志需具备公共的首部信息,因此具有较强的适应性。
以下结合附图,对本发明实施例提供的该方案进行具体介绍。
首先,本发明实施例提供一种日志解析方法,该方法的具体流程示意图如图1所示,包括以下步骤:
步骤11,解析节点获得日志以及用于指示日志中未解析内容的待匹配偏移;
其中,解析节点可以是由软件来实现其功能的虚拟设备,也可以是由软、硬件配合而实现其功能的一种实体设备,本发明实施例对此不做限定。其中,利用软件实现解析节点功能的实例请见后文中的一个具体实施例,在此不再赘述。
解析节点所获得的日志可以是由设备产生并输入解析节点的,也可以是由该解析节点的上级解析节点发送给该解析节点的。而待匹配偏移则可以是一个约定好的标识,该标识相当于起到一个指针的作用,用于指示日志中的未解析内容。
步骤12,利用存储的第一正则表达式,对待匹配偏移所指示的未解析内容进行解析,获得与第一正则表达式匹配的字段信息;
此步骤的实现方式与现有技术提供的利用正则表达式对日志进行解析的方式相似。在获得与第一正则表达式匹配的字段信息后,可以将该字段信息存储到预先指定的一个存储空间内,以方便后续对该字段信息的读取。或者,也可以将字段信息输出给字段信息的需求方终端。
步骤13,该解析节点判断是否存在下级解析节点,在判断结果为是时,执行步骤14,否则,执行步骤15;
该解析节点的下级解析节点表示:在由多个解析节点构成的具备树状结构的解析树上相比于该解析节点更贴近解析树顶层的解析节点,且该解析节点与该解析节点的下级解析节点应该同时位于解析树中用于传递日志的同一条路径上。
在预先对该解析节点进行设置的过程中,可以在该解析节点中设置一张存储其下级解析节点相关信息的下级解析节点映射表(详见下文中的表11),通过判断该表中是否存储有下级解析节点标识(比如下级解析节点名),就能判断该解析节点是否存在相应的下级解析节点。
步骤14,解析节点根据待匹配偏移确定方式确定待匹配偏移,并将日志和确定的待匹配偏移提供给能按照指定解析方式解析日志中未解析内容的一个下级解析节点,其中,待匹配偏移确定方式是根据日志的格式和预先确定的需从日志中确定出的字段信息而设置的;
其中,按照欲从所述日志中确定的字段信息而预先设置的待匹配偏移确定方式,可能会要求该解析节点在对日志进行解析后,将待匹配偏移修改为指向日志中被该解析节点解析的部分的末尾,这样该解析节点的下级解析节点就能够根据该解析节点提供的待解析偏移,对该末尾以后的部分进行解析;此外,按照该方式,还可能要求该解析节点在对日志进行解析后,不对待匹配偏移进行修改,这样该解析节点的下级解析节点就根据未修改的待匹配偏移,对其所指示的日志中的未解析内容进行解析。
上述过程的一个具体的实施方式将在后文进行详述,在此不再赘述。
步骤15,该解析节点进一步判断出自身预先存储有事件类型信息时,将预先存储的该事件类型信息确定为该日志所记录事件的事件类型信息,其中,事件类型信息是根据日志传递到该解析节点所经过的路径上包含的至少一个解析节点存储的正则表达式能从日志中解析出的字段信息而确定的。
在步骤15中,事件类型信息可以是在预先构造包含多个解析节点的解析树时设置的。事件类型信息一般是与对日志进行解析的需求有关的。比如,针对“Tom sold a car to Bill”和“Tom bought a house form Kate”这样的两条日志,可以通过设置,使得第一个对这两条日志进行解析的解析节点所用的正则表达式能分别从这两条日志中解析出字段信息sold/bought(即可以解析出对应于动词的字段信息)。通过设置,进一步可以使得在解析出sold时,“Tom sold a carto Bill”这一条日志可以通过包含上述第一个解析节点和其他一些解析节点的路径I进行传递,并最终传递到路径I的最后一个解析节点a处(比如可以通过字符串选择器选择下级解析节点的方式来确定传递路径,详见后文)。类似地,通过设置,也可以使得在解析出bought时,“Tom bought a house form Kate”这一条日志也可以通过包含上述第一个解析节点和其他一些解析节点的路径II进行传递,并最终传递到路径II的最后一个解析节点b处。
针对上述情况,可以根据第一个解析节点解析出的“sold”,在解析节点a中预先存储相应的事件类型信息,比如该事件类型信息可以为“卖出交易日志”;类似地,可以根据第一个解析节点解析出的“bought”,在解析节点b中预先存储相应的事件类型信息,比如相应的事件类型信息可以为“买入交易日志”。可选的,若路径I、路径II中第二个解析节点根据其使用的正则表达式可以从日志中解析出“Tom”这样的人名,则根据该人名,还可以将解析节点a中预存的存储事件类型信息设置为“与Tom有关的卖出交易日志”,并将解析节点b中预存的存储事件类型信息设置为“与Tom有关的买入交易日志”。
需要说明的是,在步骤14中,解析节点将日志和确定的待匹配偏移提供给下级解析节点后,针对该下级解析节点还可以重复执行上述步骤14~15,直至确定出日志所记录事件的事件类型信息。在实际应用中,由于在判断结果为否,且该解析节点进一步判断出自身预先存储有事件类型信息时,就能确定出该日志所记录事件的事件类型信息,因此,实际上上述步骤14可以为本发明实施例提供的日志解析方法中的可选步骤。
此外需要重点说明的是,上述步骤14可以但不限于有以下三种实现方式,分别为穷举方式、正则方式和字符串方式。以下分别对这三种方式进行介绍:
1、穷举方式。
在该方式下,为了实现解析节点将日志和确定的待匹配偏移提供给下级解析节点,可以按照一次向一个下级解析节点提供日志和确定的待匹配偏移的方式,逐次向各个下级解析节点提供日志和确定的待匹配偏移,直至接收到一个下级解析节点发送的确认消息后,停止提供日志和确定的待匹配偏移。
其中,上述确认消息为下级解析节点根据自身存储的第二正则表达式,确定出能按照指定解析方式解析日志中未解析内容后发送的。
2、正则方式。
在该方式下,为了实现解析节点将日志和确定的待匹配偏移提供给下级解析节点,可以执行下述步骤:
首先,解析节点获得根据第一正则表达式中的关键字字段从日志中解析出的关键字字段信息,其中,关键字字段可以是根据日志格式预先确定的,也可以是根据日志中包含的词语的词性等确定的,本发明实施例中对此不做限定;
比如,根据“Tom sold a car to Bill”和“Tom bought a house form Kate”这样的日志格式可知,其格式可以归纳为主语(Tom)+动词(sold/bought)+宾语(car、house)。此时可以在第一正则表达式中设置能够提取该格式中的动词的一个关键字字段,从而在利用第一正则表达式对该格式的任何日志进行解析时,就能获得该关键字字段所匹配出的关键字字段信息(即上述动词sold/bought)。
然后,解析节点从预先存储的下级解析节点所使用的第二正则表达式中,确定与关键字字段信息匹配的第二正则表达式;
一般来说,正则选择器主要适用于根据“keyword”得到的提取结果中包含可变内容的情况。假设根据“keyword”从一条日志中得到的提取结果为:logtype=16timestamp=123321323subtype=″nat″,其中timestamp在每条日志中的数值都不同。那么,若有下级解析节点使用的是这样一条正则表达式:“logtype=16.*?subtype=\″nat\″”(即忽略该提取结果中的可变内容的正则表达式),则可认为这样的下级解析节点是与关键字字段信息匹配的第二正则表达式。
最后,解析节点从使用与关键字字段信息匹配的第二正则表达式的下级解析节点中选取一个下级解析节点,并将日志和确定的待匹配偏移提供给选取的该下级解析节点。
3、字符串方式。
在该方式下,为了实现解析节点将日志和确定的待匹配偏移提供给下级解析节点,可以执行下述步骤:
首先,解析节点获得根据第一正则表达式中的关键字字段从日志中解析出的关键字字段信息;
然后,解析节点从预先存储的预先为各个下级解析节点分别分配的字段信息中,确定与关键字字段信息匹配的字段信息;
最后,解析节点从确定的字段信息所对应的下级解析节点中选取一个下级解析节点,并将日志和确定的待匹配偏移,提供给选取的该下级解析节点。
当将本发明实施例提供的上述方案应用于实际中时,还可能出现不存在能按照指定解析方式解析日志中未解析内容的一个下级解析节点的情况,针对该情况,可以通过预先设置一个默认解析节点的方式,将日志和确定的待匹配偏移提供给该默认解析节点进行进一步处理。可选地,该默认解析节点自身可以不对日志进行解析,而是从自身的下级解析节点中选取一个下级解析节点对该日志进行解析。
默认解析节点在选取下级节点也可以采用上述三种方式之一。具体实现机制如下:
1、默认解析节点按照穷举方式选取下级解析节点的实现机制:
当不存在能按照指定解析方式解析日志中未解析内容的一个下级解析节点时,解析节点将日志和确定的待匹配偏移提供给预先指定的默认解析节点;
并指示默认解析节点利用存储的第四正则表达式,对接收到待匹配偏移所指示的未解析内容进行解析,获得与第四正则表达式匹配的字段信息,以及在存在默认解析节点的下级解析节点时,根据待匹配偏移确定方式确定待匹配偏移,并按照一次向默认解析节点的一个下级解析节点提供日志和默认解析节点确定的待匹配偏移的方式,逐次向默认解析节点的各个下级解析节点提供日志和默认解析节点确定的待匹配偏移,直至接收到一个下级解析节点发送的确认消息后,停止提供日志和默认解析节点确定的待匹配偏移。
上述确认消息为下级解析节点根据自身存储的第三正则表达式,确定出能解析日志中未解析内容后发送的。
2、默认解析节点按照正则方式选取下级解析节点的实现机制:
类似地,当不存在能按照指定解析方式解析日志中未解析内容的一个下级解析节点时,解析节点将日志和确定的待匹配偏移提供给预先指定的默认解析节点;并
指示默认解析节点获得根据存储的第四正则表达式中的关键字字段,从接收到的待匹配偏移所指示的未解析内容中解析出关键字字段信息,以及在存在默认解析节点的下级解析节点时,根据待匹配偏移确定方式确定待匹配偏移,并从预先存储的默认解析节点的下级解析节点所使用的第三正则表达式中,确定与关键字字段信息匹配的第三正则表达式,以及从使用与关键字字段信息匹配的第三正则表达式的下级解析节点中选取一个下级解析节点,并将日志和默认节点确定的待匹配偏移提供给选取的该下级解析节点。
其中,上述关键字字段可以但不限于是根据日志格式或日志中包含的词语的词性等确定的。
3、默认解析节点按照字符串方式选取下级解析节点的实现机制:
当不存在能按照指定解析方式解析日志中未解析内容的一个下级解析节点时,解析节点将日志和确定的待匹配偏移提供给预先指定的默认解析节点;并
指示默认解析节点获得存储的第四正则表达式中的关键字字段,从接收到的待匹配偏移所指示的未解析内容中解析出关键字字段信息,以及在存在默认解析节点的下级解析节点时,根据待匹配偏移确定方式确定待匹配偏移,并从预先分别为默认解析节点的下级解析节点分配的字段信息中,确定与关键字字段信息匹配的字段信息,以及从确定的字段信息所对应的下级解析节点中选取一个下级解析节点,并将日志和默认节点确定的待匹配偏移提供给选取的该下级解析节点。
默认解析节点的存在,大大增加了日志解析过程的灵活性。比如对于一种买入交易类型的日志:<buyer>bought<sth>from<seller>,当根解析节点对其进行解析后,若sth包含rifle、pistol或shotgun等,则将日志提交给weapontransaction解析节点进行进一步处理;而若sth包含heroin、***e或marijuana等,则将日志提交给drug transaction解析节点进行进一步处理;而针对sth为其他物品的情况,则将日志提交给默认解析节点normal transaction节点处理。此时,可以按照下述方式构造根解析节点:
Figure BDA0000061416600000131
Figure BDA0000061416600000141
以下结合实际,详细说明本发明实施例提供的上述方案的具体应用流程。
以对Syslog的解析为例,在实际应用中,本发明实施例提供的上述方案可以是通过由解析节点构成的树状网络实现层次化解析的。这个树状网络可以称为“解析树”。一种解析树的具体结构示意图如图2所示。图2中的每个方框代表解析树上的一个解析节点,处于解析树底层的解析节点一般称为根解析节点,处于顶层的解析节点则可以称为叶解析节点。在Syslog的同一传递路径上,根据不同解析节点距离解析树底层的相对远近程度,可以将距离解析树底层较近的解析节点称为距离解析树底层相对较远的解析节点的上级解析节点,而该距离解析树底层相对较远的解析节点可以称为该距离解析树底层较近的解析节点的下级解析节点。其中每个解析节点可以连接多个下级解析节点,从而构成如图2所示的层次化的解析树。
基于如图2所示的解析树对Syslog进行解析时,Syslog首先从树的根解析节点进入解析树,并在解析树上的不同解析节点之间传递。其中每个解析节点仅对Syslog中的一部分内容进行解析,并根据对该部分内容的解析情况决定Syslog的走向(即决定Syslog应该被输入哪个下级解析节点,或结束对Syslog的解析)。
任意解析节点的内部结构示意图如图3所示,图3中的编号①~⑥的具体含义如下:
①表示输入该解析节点的信息。该信息中包含从设备接收来的原始Syslog,以及指向Syslog中未解析内容的待匹配偏移(如果该解析节点是根解析节点,则该待匹配偏移可以视为0)。如有如下表5所示的这样一条Syslog:
表5:
  Feb 518:27:38.269:%LINK-4-ERROR:FastEthernet0/4is experiencing errors
假设其中时间戳部分(即“Feb 518:27:38.269:”)已经被该解析节点的上级解析节点解析完毕了,则上级解析节点可以将待匹配偏移指向表5所示代码中的“%”处,让作为下级解析节点的该解析节点跳过日志中已经完成解析的部分,而直接对时间戳部分之后的内容解析。这样可以最大限度地避免各解析节点对Syslog进行重复的扫描和解析,大大提高解析效率。
②表示该解析节点所采用的正则表达式,该正则表达式其在解析节点的工作过程中主要有如下的两个作用:
1、准入控制:只有与正则表达式相匹配的Syslog才会被该解析节点所接受,并进行后续处理。解析节点可以根据正则表达式对Syslog的格式和完整性进行检查,从而排除格式上有误或内容不完整的Syslog。
2、字段提取:正则表达式中以命名组的方式定义了需要从原始日志中提取的字符串。一个命名组至少由字段名和字段对应的正则表达式构成。比如,若一种命名组是以“(?P<字段名>正则表达式)”格式书写的字符串,则表示从与括号“()”内的该正则表达式所匹配的字符串中,提取“<>”中的字段作为“字段名”对应的字段。又如一个命名组为“^.*?(?P<keyword>[A-Z0-9_]+)-(?P<severity>\d)-”,其中就包含了两个字段名:“keyword”和“severity”。
该解析节点在完成利用正则表达式对Syslog进行相应的解析以后,就对Syslog中的待匹配偏移进行设置,以使得该解析节点的下级解析节点能够跳过Syslog中已解析完成的部分。这样后续的解析节点就无需对待匹配偏移之前的内容进行访问(即无法回溯),从而有效避免了对Syslog的重复匹配操作。
③为日志解析结果表,其可以设置为与原始Syslog绑定且该表可以在解析树上的各解析节点之间传递。完成对Syslog的部分内容进行解析后的解析节点可以将正则表达式中除“keyword”以外的命名组的提取结果追加记录在该日志解析结果表的尾部。
通过上述操作方式,Syslog每经过一个解析节点,就可能被解析节点的正则表达式解析出一些字段并记录在该日志解析结果表内。当解析节点完成对Syslog全部内容的解析后,该日志解析结果表中就得到了完整的Syslog解析结果。解析结果表的一种具体结构可以如下表6所示:
表6:
  字段名   字段提取结果
  severity   4
  interface   FastEthernet0/4
  ...   ...
④为利用正则表达式②中的“keyword”得到的提取结果。“keyword”为解析节点的保留字段名,用于决定如何选择下级解析节点。“keyword”字段仅在解析节点内部使用,其提取结果不会被输出到解析结果表③中。根据“keyword”字段得到的提取结果仅作为下述⑤的输入。
⑤为下级解析节点选择器,其作用是根据“keyword”字段得到的提取结果(视实际情况也可能不根据该提取结果),并结合下级解析节点映射表⑥的内容,决定应该选择哪个下级解析节点作为Syslog的后续处理解析节点。在本发明实施例中,下级解析节点选择器可以但不限于包含如下类型:
1、穷举选择器
此类选择器在选择下级解析节点时不需要依照根据“keyword”字段得到的提取结果。
任意解析节点所包含的穷举选择器选择下级解析节点的实现机制为:尝试将原始Syslog和待匹配偏移输入该解析节点的所有下级解析节点,直到有一个下级解析节点接受了Syslog或遍历所有下级解析节点为止。
穷举选择器适用于待解析的各Syslog内容差异极大,难以通过提取某个特征字段来判断Syslog类型的情况。如下表7、8所示的两条日志:
表7:
表8:
Figure BDA0000061416600000172
表7、表8所示的这两条Syslog显然在格式上差异极大,难以简单地通过某个固定字段确定日志类型。此时利用穷举选择器对其进行尝试就较为容易。
然而穷举选择器在实际应用中用得极少,因为在绝大部分情况下穷举选择器都能由性能更为出色的正则选择器或字符串选择器取代。以下将具体介绍正则选择器和字符串选择器,在此不再赘述。
2、正则选择器
此类选择器根据每个下级解析节点分别对应的一个正则表达式来检查根据“keyword”得到的提取结果。比如,正则选择器可以依次尝试把根据“keyword”字段得到的提取结果与所有下级解析节点所对应的正则表达式进行匹配,并选择第一个匹配成功的解析节点。
正则选择器主要适用于根据“keyword”得到的提取结果中包含可变内容的情况。假设根据“keyword”从一条日志中得到的提取结果为:logtype=16timestamp=123321323subtype=″nat″,其中timestamp在每条日志中的数值都不同。那么通过这样的一条正则表达式:“logtype=16.*?subtype=\″nat\″”就可以忽略该提取结果中的可变内容,而将所有同时与“logtype=16”且“subtype=″nat″”相匹配的正则表达式所对应的解析节点作为选择的解析节点(若相匹配的解析节点有多个,则从中选取一个作为选择的解析节点)。
正则选择器与穷举选择器有一定的相似之处,即其依然无法避免需要套用多个正则表达式对日志进行匹配尝试。然而必须注意的是:首先,正则选择器需要进行匹配尝试的范围仅限于根据“keyword”字段得到的提取结果,因此与穷举选择器相比,正则选择器要匹配的内容很少;其次,用于实现下级解析节点选择的正则表达式可以非常简单,其只要足以区分不同下级解析节点所能分别处理的Syslog格式之间的差异即可,并不需要具备完备的准入检查能力和字段提取能力。从实际应用来看,分别利用简单和复杂的正则表达式进行Syslog匹配所需的时间可能相差数百倍。因此即使正则选择器存在尝试和多次匹配的问题,但由于其严格限制了匹配范围并使用极为简单的正则表达式进行匹配尝试,在性能开销上仍远低于穷举选择器。
三、字符串选择器
此类选择器要求每个下级解析节点均对应一个唯一的字符串。字符串选择器将选择与根据“keyword”得到的提取结果完全相同的字符串内容所对应的解析节点作为后续进行日志处理的下级解析节点。
从功能上来说正则选择器的功能涵盖了字符串选择器的功能。但字符串选择器在具体实现时可以通过散列表等机制获得比正则选择器性能高得多的性能。
字符串选择器主要适用于“keyword”提取结果中不存在可变内容的情况。
字符串选择器的实现机制与背景技术部分介绍的关键字法的原理有一些相似,但字符串选择器的实现机制要比关键字法灵活得多。这是因为关键字法的应用前提是需要通过公共首部来确定整个日志的格式;然而字符串选择器的实现机制中只要求能通过“keyword”区分出应该选择哪个下级解析节点即可。因此,在字符串选择器的实现机制中,选取“keyword”实际上是非常自由的。如:假设当前解析节点的下级解析节点只有两个,分别对应解析如下表9、10所示的两条Syslog:
表9:
Figure BDA0000061416600000181
表10:
Figure BDA0000061416600000191
那么此时只要判断Syslog的第一个字符(即提取Syslog的第一个字符作为“keyword”字段的内容)就足以决定应该选择哪个下级解析节点了。可见,即使原始Syslog中不具备固定的公共首部(即公共的“keyword”字段),仍可以利用字符串选择器灵活地选取“keyword”,并根据“keyword”高效地完成选择下级解析节点的工作。
需要注意的是,以上三种选择器仅为在一种具体的实施方式中可选的选择器。而实际上,可以根据实际需要添加新类型的选择器。因为每个解析节点均独立地完成下级解析节点的选择工作,所以添加新的选择器类型非常容易,在任意解析节点中新增选择器或者改变选择器类型都不会影响到其他解析节点对下级解析节点进行选择的实现方式。所以本发明实施例提供的下级解析节点的选取方式的扩展性非常强。
⑥为下级解析节点映射表。任意解析节点中存储的该下级解析节点映射表中均存储有该解析节点的下级解析节点的一些相关信息。下级解析节点映射表的一种具体结构可以如下表11所示:
表11:
表11中的“下级解析节点名”用于唯一定位到对应的下级解析节点。根据具体技术实现手段的不同,下级解析节点名可以为下级解析节点的唯一标识符(通常为下级解析节点名称),也可以为指向下级解析节点数据结构的指针或下级解析节点对象的引用。在具体实施时可以为能定位到下级解析节点的任何特征信息。
表11中的“解析节点条件”由下级解析节点选择器的类型决定,具体可以但不限于有以下几种情况:
当下级解析节点的选择器为穷举选择器时,相应的“解析节点条件”为空,表11的对应部分不需要存储任何内容。因为穷举选择器依靠下级解析节点自身判断其能否对日志进行后续处理,因此不需要在表11的相应位置放置解析节点条件。
当下级解析节点的选择器为正则选择器时,相应的“解析节点条件”为用于根据“keyword”得到的提取结果进行匹配的正则表达式。若根据“keyword”得到的提取结果与正则表达式相匹配,则说明日志可以传递给该“解析节点条件”对应的“下级解析节点名”所指示的解析节点进行后续处理。
当下级解析节点的选择器为字符串选择器时,相应的“解析节点条件”为固定字符串,并且要求该字符串在如表11所示的下级解析节点映射表内是唯一的、不允许重复的。若根据“keyword”得到的提取结果与某一下级解析节点的“解析节点条件”对应的表格中所存字符串相同时,确定日志可以传递给该下级解析节点进行后续处理。
值得说明的是,如表11所示的下级解析节点映射表中的最后一行用于存储“默认解析节点”的相关信息。当某一解析节点中的下级解析节点选择器无法从表11中位于默认下级解析节点名之前的下级解析节点名中选取出合适的下级解析节点名时(即表11中默认下级解析节点名之前的所有解析节点名指示的解析节点均无法进一步地对日志进行后续处理时),则下级解析节点选择器会选中默认下级解析节点名(一般地,默认下级解析节点名可以预设为空)。此时根据选取的下级解析节点名为空(或者也可以为预先约定的用于指示解析节点不再有下级解析节点的其他标识),可以确定日志无法被任何下级解析节点进行进一步的解析,因此日志在解析树上的传递将到此为止,解析过程终止。
需要重点说明的是,一般情况下,每个解析节点仅包含一种类型的下级解析节点选择器,但在实际应用中,可以利用下级解析节点映射表中的“默认解析节点”的相关信息,将不同类型的下级解析节点选择器组合起来,构成混合类型的下级解析节点选择器。构成混合类型的下级解析节点选择器的实现示意图如图4所示。该示意图给出了基于下级解析节点映射表中的“默认解析节点”的相关信息实现字符串选择器与穷举选择器相组合而得到的一种混合类型的下级解析节点选择器的示意图。对该示意图的实现机制进行解释即为:先由包含字符串选择器的第一解析节点进行基于字符串的下级解析节点选择,并将待解析的日志传递到对应的下级解析节点。其中无法被第一解析节点的下级解析节点处理的日志则均送到包含穷举选择器的默认解析节点,进一步利用该默认解析节点包含的穷举选择器来选择该默认解析节点的下级解析节点来对日志进行解析处理。以此类推,还可以通过如图4所示的实现方式实现其他混合类型的下级解析节点选择器。
由于本发明实施例在对日志进行解析的整个解析过程中对解析树和解析节点所包含的数据均无任何写入操作,因此本发明实施例提供的方案非常容易支持多线程并发处理。即:同一棵解析树能够直接被任意多个日志解析线程使用而不需要进行读写互斥之类的保护处理,这样可以通过简单地增加***处理器和线程的数量来轻松实现性能的提升。
在本发明实施例提供的上述方案的具体实施中,上述解析树和解析节点的结构可以通过任何能够被计算机所理解的形式构造。如可以直接通过程序语言编码固化在软件中,或者以外部配置文件的形式导入。然而处于灵活性考虑,在本发明实施例中可选通过基于可扩展标记语言(XML,Extensible MarkupLanguage)的配置文件对解析树和解析节点进行定义。这样在用于实现本发明实施例提供的上述方案的日志解析节点设备的运行过程中,可以通过修改配置文件的方式来实现对解析树的修改或增补,并且在此过程中不需要对软件代码进行任何修改。
解析树的具体配置文件格式如下表12所示:
表12:
  <ParseTree model=″RGOS″vendor=″Ruijie″version=″1.0″>......</ParseTree>
表12中的代码定义了一棵解析树(即ParseTree),用于对指定设备(这里的设备指的是任何可以生成Syslog的设备,包括交换机、路由器等硬件或服务器操作***、应用服务等软件)生成的Syslog进行解析。代码中的model为该指定设备的型号、vendor为该设备的厂商、version为该设备的版本号。通过model-vendor-version三要素可以唯一确定一种设备。
一棵解析树内可以包含多个解析节点,解析节点之间的关系通过嵌套体现。下表13定义了一个对应于两个下级解析节点的根解析节点:
表13:
Figure BDA0000061416600000221
表13所示的上述代码中一些重要的参数含义如下:
action决定了解析节点是否会改变原始Syslog的待匹配偏移值。其取值可以为“strip”(移动待匹配偏移,这样Syslog中被当前解析节点解析过的部分无法被后续对Syslog进行解析的解析节点所访问)或“match”(不对待匹配偏移进行任何修改,这样当这样Syslog中被当前解析节点解析过的部分仍然可以被后续对Syslog进行解析的解析节点所访问)。一般地,action的默认值为“match”。
下面通过一个具体的例子来具体介绍action设置过程的实现机制:
假设有这样两种日志格式,一种为<buyer>bought<sth>from<seller>,如Tom bought a house form Kate;而另一种为:<seller>sold<sth>to<buyer>,如Tom sold a car to Bill。
假设需要解析树能解析这两种日志,并从中提取buyer、sth和seller来,那么显然,在没有判断中间的动词是sold还是bought之前,无法知道第一个人名是buyer还是seller的。所以在构造解析节点的时候,可以这样构造:
即对日志进行解析的第一个解析节点必须是一个action被设置为match的解析节点,该解析节点的任务只是判断这是一条包含“sold”这个动词的日志还是一条包含“bought”这个动词的日志。此时不能将第一个解析节点的action设置为strip,因为在关键字bought/sold前面还有个需要被第一个解析节点的下级节点进行解析并提取的人名。
以下继续介绍除action以外的其他参数的含义:
pattern定义了解析节点的正则表达式,其中可以包含以“(?P<字段名>正则表达式)”定义的命名组。需要特别注意的是根据XML标准,所有的“<”号要写为“&lt;”,而“>”号要写为“&gt;”。所以包含两个命名组“keyword”和“severity”的正则表达式:^.*?(?P<keyword>[A-Z0-9_]+)-(?P<severity>\d)-写在XML配置文件内就成了如下所示的形式:^.*?(?P&lt;keyword&gt;[A-Z0-9_]+)-(?P&lt;severity&gt;\d)-。这个问题是由XML标准的限制造成的。
name定义了解析节点的名称。同级的解析节点中,任意解析节点的名称是唯一的。下级解析节点名称只在使用正则选择器或字符串选择器时需要定义,否则可以为匿名(即不带name属性)。
event定义了解析节点对应的事件类型。当完成日志在解析树上的传递后,其会被赋予最后一个接受它的解析节点所带的事件类型,以实现唯一标志该日志的含义。若一个解析节点不带有事件类型属性,则该解析节点一般可以被看作是一个中间解析节点。即不应该会出现在这个解析节点处结束对日志的解析过程的情况。如果发生了在不带事件类型属性的解析节点处结束日志解析的情况,则说明该日志可能发生了格式错误或日志为无法解析的日志,则可以将该日志作为非法日志而丢弃。
Keyword定义了解析节点的下级解析节点映射表,其中:matchby定义了下级解析节点选择器的类型,其取值可以为“null”(穷举选择器)、“string”(字符串选择器)和“regex”(正则选择器)。
NodeMap为下级解析节点映射表的表项,其中:condition为解析节点条件,根据选择器类型的不同可以为空、正则表达式或字符串。当使用字符串选择器时,pattern可以为变量“$keyword”,表示其值为解析节点正则表达式中“keyword”字段的提取结果。node为下级解析节点的下级解析节点名。value可以为变量“$keyword”,表示下级解析节点名即为解析节点正则表达式中“keyword”字段的提取结果。这个设计可以避免定义大量的映射表表项,因为在实际应用中大部分下级解析节点都是根据依照“keyword”字段得到的提取结果来命名的。default属性标记了下级解析节点映射表中的默认解析节点。在表中仅允许最多1个NodeMap的default属性为“true”。
基于表13所示的对解析节点的配置代码,可完成对一棵完整的解析树的定义。下表14中的代码为对完整的解析树的定义:
表14:
Figure BDA0000061416600000251
基于上述内容,下面以对一条Syslog进行解析的过程为例,说明如表14所示的配置文件所定义的解析树的工作情况。解析过程的具体流程示意图请参照图5。
步骤51,首先,该Syslog被传输到解析树的根解析节点A;
本发明实施例中,可以假设该条Syslog的内容如下表15所示。
表15:
Figure BDA0000061416600000261
步骤52,根解析节点A利用自身具备的正则表达式对表15中的Syslog进行匹配,并通过匹配,从Syslog中提取与正则表达式匹配一致的字段中包含的参数;
本发明实施实施例中,假设根解析节点具备的正则表达式为:
“^.*?(?P<keyword>[A-Z0-9_]+)-(?P<severity>\d)-”,则根据该正则表达式,可以从表15中提取到“keyword”为“LINK”,而“severity”为“5”;
步骤53,根解析节点A将除“keyword”以外的提取结果输出到如表6所示的解析结果表中,得到如下表16所示的结果:
表16:
  字段名   字段提取结果
  severity   5
步骤54,由于根解析节点A的action被设置为“strip”(即移动待匹配偏移,这样Syslog中被当前解析节点解析过的部分无法被后续对Syslog进行解析的解析节点所访问),因此根解析节点A在完成对Syslog的解析后,根据Syslog中被根解析节点A解析的部分在整个Syslog中的位置,对移动待匹配偏移进行修改,将移动待匹配偏移修改为指向被根解析节点A解析的部分的末尾处。则留待根解析节点A的下级解析节点进行匹配的内容变为如下表17所示:
表17:
  CHANGED:Interface Serial3/0.1/2/4/2:0changed state to administratively down
步骤55,假设根解析节点A的下级解析节点选择器为字符串选择器(matchby=″string″),则该字符串选择器根据在步骤52中提取到的keyword的值,即keyword=“LINK”查找下级解析节点映射表,选定下级解析节点B,该下级解析节点B满足:其解析节点条件为固定字符串“LINK”;
步骤56,根解析节点A将Syslog和修改后的移动待匹配偏移发送给下级解析节点B;
步骤57,解析节点B根据修改后的移动待匹配偏移,在Syslog中定位到如表17所示的内容,并对其行解析;
假设解析节点B使用的正则表达式“^(?P<keyword>[A-Z0-9_]+):\s* ”,则根据该正则表达式对表17所示的Syslog进行匹配,可以得到“keyword”为“CHANGED”。
需要说明的是,由于解析节点B使用的正则表达式中不包含除“keyword”以外的其他命名组,因此解析节点B没有可以输出的提取结果。
步骤58,由于解析节点B的action被设置为“strip”,因此解析节点B在完成对Syslog的解析后,需要根据Syslog中被解析节点B解析的部分在整个Syslog中的位置,对移动待匹配偏移进行修改,将移动待匹配偏移修改为指向被解析节点B解析的部分的末尾处。
留待解析节点B的下级解析节点进行匹配的内容变为如下表18所示:
表18:
  Interface Serial3/0.1/2/4/2:0changed state to administratively down
步骤59,假设待解析节点B中的下级解析节点选择器也为字符串选择器(matchby=″string″),则该字符串选择器根据在步骤52中提取到的keyword的值,即keyword=“CHANGED”查找解析节点B中的下级解析节点映射表,选定下级解析节点C,该下级解析节点B满足:其解析节点条件为固定字符串“CHANGED”;
步骤510,解析节点B将Syslog和自身修改后的移动待匹配偏移发送给解析节点C;
步骤511,解析节点C根据解析节点B传递来的修改后的移动待匹配偏移,在Syslog中定位到如表18所示的内容,并对其行解析;
假设解析节点C  使用的正则表达式为“^Interface(?P<intf>[A-Za-z]+\s?[0-9][0-9/.:]+)changed state to(?P<stat>[\w]+)”,则可以从如表18所示的内容中提取出与“intf”相匹配的字段为“Serial3/0.1/2/4/2:0”、而与“stat”相匹配的字段为“down”,并输出到解析结果表中。
步骤512,假设解析节点C为解析树的叶解析节点(不再有任何下级解析节点的解析节点可以称为叶解析节点),那么对Syslog进行的匹配到解析节点C这里就在解析树上走到了终点。所以可以将解析节点C进行配置时所设置的事件类型(即表13中的event所定义的事件类型)信息确定为该Syslog的事件类型信息。比如假设event所定义的事件类型为“LINK_CHANGED”,则该Syslog的事件类型为“LINK_CHANGED”。进一步地,根据在对Syslog进行解析的过程中记载的如下表19所示的解析结果表,获得与Syslog的事件类型相关的字段信息,从而实现对Syslog进行解析的目的。
表19:
  字段名   字段提取结果
  severity   5
  intf   Seria13/0.1/2/4/2:0
  stat   down
对应于本发明实施例提供的日志解析方法,本发明实施例还提供一种日志解析节点设备,该设备的具体结构示意图如图6所示,包括以下功能单元:
第一获得单元61,用于获得日志以及用于指示日志中未解析内容的待匹配偏移;
第二获得单元62,用于利用存储的第一正则表达式,对第一获得单元61获得的待匹配偏移所指示的第一获得单元61获得的日志中的未解析内容进行解析,获得与第一正则表达式匹配的字段信息;
判断单元63,用于判断是否存在下级解析节点设备;
事件类型信息确定单元64,用于在判断单元63得到的判断结果为否,且如图6所示的该日志解析节点设备预先存储有事件类型信息时,将该事件类型信息确定为日志所记录事件的事件类型信息,其中,事件类型信息是根据日志传递到日志解析节点设备所经过的路径上包含的至少一个日志解析节点设备存储的正则表达式能从日志中解析出的字段信息而确定的。
在一个可选的实施例中,如图6所示的该日志解析节点设备还可以进一步包括:
待匹配偏移确定单元,用于在判断单元63得到的判断结果为是时,根据待匹配偏移确定方式确定待匹配偏移;
提供单元,用于将第一获得单元61获得的日志和待匹配偏移确定单元确定的待匹配偏移提供给能按照指定解析方式解析日志中未解析内容的一个下级解析节点设备,其中,待匹配偏移确定方式是根据日志的格式和预先确定的需从日志中确定出的字段信息而设置的。
可选的,在本发明实施例中,提供单元具体可以用于按照一次向一个下级解析节点设备提供日志和所述确定的待匹配偏移的方式,逐次向各个下级解析节点设备提供日志和确定的待匹配偏移,直至接收到一个下级解析节点设备发送的确认消息后,停止提供日志和确定的待匹配偏移;
其中,确认消息为一个下级解析节点设备根据自身存储的第二正则表达式,确定出能按照指定解析方式解析日志中未解析内容后发送的。
此外,按照提供单元功能的不同实现方式,还可以采用下述两种划分方式对提供单元的结构进行划分。
第一种划分方式是将提供单元划分为关键字字段获得模块、关键字字段信息解析模块、正则表达式确定模块、选取模块、提供模块,其中各个模块的功能如下:
关键字字段获得模块,用于获得第一正则表达式中的关键字字段;
关键字字段信息解析模块,根据关键字字段获得模块获得的关键字字段,从所述日志中解析出关键字字段信息;
正则表达式确定模块,用于从预先存储的各个下级解析节点设备分别所使用的第二正则表达式中,确定与关键字字段信息解析模块解析出的关键字字段信息匹配的第二正则表达式;
选取模块,用于从使用正则表达式确定模块确定的第二正则表达式的下级解析节点设备中,选取一个下级解析节点设备;
提供模块,用于并将所述日志和所述确定的待匹配偏移,提供给选取模块选取的下级解析节点设备。
第一种划分方式是将提供单元划分为关键字字段获得模块、关键字字段信息解析模块、确定模块、选取模块、提供模块,其中,各模块的主要功能如下:
关键字字段获得模块,用于获得第一正则表达式中的关键字字段;
关键字字段信息解析模块,根据关键字字段获得模块获得的关键字字段,从所述日志中解析出关键字字段信息;
确定模块,用于从预先为各个下级解析节点设备分别分配的字段信息中,确定与关键字字段信息解析模块解析出的关键字字段信息匹配的字段信息;
选取模块,用于从确定模块确定的字段信息所对应的下级解析节点设备中选取一个下级解析节点设备;
提供模块,用于将所述日志和所述确定的待匹配偏移提供给选取模块选取的下级解析节点设备。
可选的,提供单元还可以用于在不存在能按照指定解析方式解析日志中未解析内容的下级解析节点设备时,将日志和确定的待匹配偏移提供给预先指定的默认解析节点。
本发明实施例提供的日志解析方案中,每个解析节点在完成自己所负责的日志内容的解析任务后,可以通过重新确定待匹配偏移的方式,将已经被解析过的部分“截去”,即为已被解析内容加上一个标识,从而下级解析节点后续不需要再对已经完成解析日志内容做无谓的重复解析,提高了解析效率。
本发明实施例提供的方案是以一种启发式的逐层精化的机制工作的:除了位于解析树最末尾的叶析节点以外,其他解析节点在解析日志时均不知道该日志所记录事件的事件类型信息。但每级解析节点会通过内置的下级解析节点选择机制结合当前得到的日志特征信息(keyword),将日志传递给能够进一步解析该日志的下级解析节点处理。当日志被最终确定了相应的事件类型信息的同时,其中所需要提取的字段内容也同时被各级解析节点提取完整了。该机制也是本发明实施例提供的方案能达到极高的日志处理性能的关键,其将确定日志类型所需的尝试和猜测处理降低到最少的程度。即使在少数极端情况下需要通过穷举或正则选择器对日志的部分内容进行尝试猜测,其需要尝试的次数在最坏情况下也不会超过该解析节点的下级解析节点的数目。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (12)

1.一种日志解析方法,其特征在于,包括:
解析节点获得日志以及用于指示日志中未解析内容的待匹配偏移;并
利用存储的第一正则表达式,对所述待匹配偏移所指示的未解析内容进行解析,获得与第一正则表达式匹配的字段信息;以及
判断是否存在下级解析节点;
在判断结果为否,且所述解析节点预先存储有事件类型信息时,所述解析节点将所述事件类型信息确定为所述日志所记录事件的事件类型信息,其中,所述事件类型信息是根据所述日志传递到所述解析节点所经过的路径上包含的至少一个解析节点存储的正则表达式能从日志中解析出的字段信息而确定的。
2.如权利要求1所述的方法,其特征在于,还包括:
在判断结果为是时,所述解析节点根据待匹配偏移确定方式确定待匹配偏移,并将所述日志和确定的待匹配偏移提供给能按照指定解析方式解析日志中未解析内容的一个下级解析节点,其中,所述待匹配偏移确定方式是根据日志的格式和预先确定的需从日志中确定出的字段信息而设置的。
3.如权利要求2所述的方法,其特征在于,所述解析节点将所述日志和所述确定的待匹配偏移提供给能按照指定解析方式解析日志中未解析内容的一个下级解析节点,具体包括:
按照一次向一个所述下级解析节点提供所述日志和所述确定的待匹配偏移的方式,逐次向各个所述下级解析节点提供所述日志和所述确定的待匹配偏移,直至接收到一个下级解析节点发送的确认消息后,停止提供所述日志和所述确定的待匹配偏移;
其中,所述确认消息为所述一个下级解析节点根据自身存储的第二正则表达式,确定出能解析所述日志中未解析内容后发送的。
4.如权利要求2所述的方法,其特征在于,所述解析节点将所述日志和所述确定的待匹配偏移提供给能按照指定解析方式解析日志中未解析内容的一个下级解析节点,具体包括:
所述解析节点获得第一正则表达式中的关键字字段,并根据获得的关键字字段从所述日志中解析出关键字字段信息;
所述解析节点从预先存储的各个下级解析节点分别所使用的第二正则表达式中,确定与所述关键字字段信息匹配的第二正则表达式;以及
所述解析节点从使用与所述关键字字段信息匹配的第二正则表达式的下级解析节点中选取一个下级解析节点,并将所述日志和所述确定的待匹配偏移,提供给选取的该下级解析节点。
5.如权利要求2所述的方法,其特征在于,所述解析节点将所述日志和所述确定的待匹配偏移提供给能按照指定解析方式解析日志中未解析内容的一个下级解析节点,具体包括:
所述解析节点获得第一正则表达式中的关键字字段,并根据获得的关键字字段从所述日志中解析出关键字字段信息;
所述解析节点从预先为各个下级解析节点分别分配的字段信息中,确定与所述关键字字段信息匹配的字段信息;以及
所述解析节点从确定的字段信息所对应的下级解析节点中选取一个下级解析节点,并将所述日志和所述确定的待匹配偏移提供给选取的该下级解析节点。
6.如权利要求2~5任一所述的方法,其特征在于,还包括:
当不存在能按照指定解析方式解析日志中未解析内容的下级解析节点时,所述解析节点将所述日志和所述确定的待匹配偏移提供给预先指定的默认解析节点。
7.一种日志解析节点设备,其特征在于,包括:
第一获得单元,用于获得日志以及用于指示日志中未解析内容的待匹配偏移;
第二获得单元,用于利用存储的第一正则表达式,对第一获得单元获得的待匹配偏移所指示的第一获得单元获得的日志中的未解析内容进行解析,获得与第一正则表达式匹配的字段信息;
判断单元,用于判断是否存在下级解析节点设备;
事件类型信息确定单元,用于在判断单元得到的判断结果为否,且所述日志解析节点设备预先存储有事件类型信息时,将所述事件类型信息确定为所述日志所记录事件的事件类型信息,其中,所述事件类型信息是根据所述日志传递到所述日志解析节点设备所经过的路径上包含的至少一个日志解析节点设备存储的正则表达式能从日志中解析出的字段信息而确定的。
8.如权利要求7所述的设备,其特征在于,还包括:
待匹配偏移确定单元,用于在判断单元得到的判断结果为是时,根据待匹配偏移确定方式确定待匹配偏移;
提供单元,用于将第一获得单元获得的日志和待匹配偏移确定单元确定的待匹配偏移提供给能按照指定解析方式解析日志中未解析内容的一个下级解析节点设备,其中,所述待匹配偏移确定方式是根据日志的格式和预先确定的需从日志中确定出的字段信息而设置的。
9.如权利要求8所述的设备,其特征在于,所述提供单元具体用于:
按照一次向一个所述下级解析节点设备提供所述日志和所述确定的待匹配偏移的方式,逐次向各个所述下级解析节点设备提供所述日志和所述确定的待匹配偏移,直至接收到一个下级解析节点设备发送的确认消息后,停止提供所述日志和所述确定的待匹配偏移;
其中,所述确认消息为所述一个下级解析节点设备根据自身存储的第二正则表达式,确定出能解析所述日志中未解析内容后发送的。
10.如权利要求8所述的设备,其特征在于,所述提供单元具体包括:
关键字字段获得模块,用于获得第一正则表达式中的关键字字段;
关键字字段信息解析模块,根据关键字字段获得模块获得的关键字字段,从所述日志中解析出关键字字段信息;
正则表达式确定模块,用于从预先存储的各个下级解析节点设备分别所使用的第二正则表达式中,确定与关键字字段信息解析模块解析出的关键字字段信息匹配的第二正则表达式;
选取模块,用于从使用正则表达式确定模块确定的第二正则表达式的下级解析节点设备中,选取一个下级解析节点设备;
提供模块,用于并将所述日志和所述确定的待匹配偏移,提供给选取模块选取的下级解析节点设备。
11.如权利要求8所述的设备,其特征在于,所述提供单元具体包括:
关键字字段获得模块,用于获得第一正则表达式中的关键字字段;
关键字字段信息解析模块,根据关键字字段获得模块获得的关键字字段,从所述日志中解析出关键字字段信息;
确定模块,用于从预先为各个下级解析节点设备分别分配的字段信息中,确定与关键字字段信息解析模块解析出的关键字字段信息匹配的字段信息;
选取模块,用于从确定模块确定的字段信息所对应的下级解析节点设备中选取一个下级解析节点设备;
提供模块,用于将所述日志和所述确定的待匹配偏移提供给选取模块选取的下级解析节点设备。
12.如权利要求8~11任一所述的设备,其特征在于,所述提供单元还用于在不存在能按照指定解析方式解析日志中未解析内容的下级解析节点设备时,将所述日志和所述确定的待匹配偏移提供给预先指定的默认解析节点。
CN201110125560.6A 2011-05-16 2011-05-16 日志解析方法及日志解析节点设备 Expired - Fee Related CN102164050B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110125560.6A CN102164050B (zh) 2011-05-16 2011-05-16 日志解析方法及日志解析节点设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110125560.6A CN102164050B (zh) 2011-05-16 2011-05-16 日志解析方法及日志解析节点设备

Publications (2)

Publication Number Publication Date
CN102164050A true CN102164050A (zh) 2011-08-24
CN102164050B CN102164050B (zh) 2014-01-22

Family

ID=44465038

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110125560.6A Expired - Fee Related CN102164050B (zh) 2011-05-16 2011-05-16 日志解析方法及日志解析节点设备

Country Status (1)

Country Link
CN (1) CN102164050B (zh)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103986974A (zh) * 2014-06-05 2014-08-13 安一恒通(北京)科技有限公司 视频加载判定方法和装置
CN104717085A (zh) * 2013-12-16 2015-06-17 ***通信集团湖南有限公司 一种日志解析方法及装置
CN105447099A (zh) * 2015-11-11 2016-03-30 中国建设银行股份有限公司 日志结构化信息提取方法及装置
CN106021554A (zh) * 2016-05-30 2016-10-12 北京奇艺世纪科技有限公司 一种日志解析方法及装置
CN106547658A (zh) * 2016-10-28 2017-03-29 合网络技术(北京)有限公司 一种自动化测试方法及装置
CN106598827A (zh) * 2016-12-19 2017-04-26 东软集团股份有限公司 提取日志数据的方法及装置
CN107660283A (zh) * 2015-04-03 2018-02-02 甲骨文国际公司 用于在日志分析***中实现日志解析器的方法和***
CN108268545A (zh) * 2016-12-30 2018-07-10 中移(杭州)信息技术有限公司 一种分级的用户标签库的创建的方法和装置
CN108595310A (zh) * 2017-12-28 2018-09-28 北京兰云科技有限公司 一种日志处理方法及装置
CN108694213A (zh) * 2017-04-12 2018-10-23 艺龙网信息技术(北京)有限公司 日志文件的生成方法、检索方法及装置
CN108984221A (zh) * 2017-05-31 2018-12-11 北京京东尚科信息技术有限公司 一种多平台用户行为日志的采集方法和装置
CN109522391A (zh) * 2018-11-27 2019-03-26 兰州智华辰宇交通科技有限公司 地铁运维车载日志分析与预警方法
CN110109957A (zh) * 2019-03-29 2019-08-09 北京奇安信科技有限公司 流式事件关联匹配方法及装置
CN110929121A (zh) * 2018-09-20 2020-03-27 中国石油化工股份有限公司 基于日志分析的地震资料处理机时精细化计算方法及***
CN112463772A (zh) * 2021-02-02 2021-03-09 北京信安世纪科技股份有限公司 日志处理方法、装置、日志服务器及存储介质
CN112882713A (zh) * 2019-11-29 2021-06-01 北京数安鑫云信息技术有限公司 一种日志解析的方法、装置、介质及计算机设备
CN113051086A (zh) * 2021-03-16 2021-06-29 北京房江湖科技有限公司 数据处理方法、装置、电子设备及存储介质
CN113626400A (zh) * 2021-07-11 2021-11-09 南京理工大学 基于日志树和解析树的日志事件提取方法及***
US11226975B2 (en) 2015-04-03 2022-01-18 Oracle International Corporation Method and system for implementing machine learning classifications
CN114840599A (zh) * 2022-07-05 2022-08-02 杭州广立微电子股份有限公司 半导体源数据解析方法、etl***、计算机设备和产品
US11681944B2 (en) 2018-08-09 2023-06-20 Oracle International Corporation System and method to generate a labeled dataset for training an entity detection system
US11727025B2 (en) 2015-04-03 2023-08-15 Oracle International Corporation Method and system for implementing a log parser in a log analytics system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1645336A (zh) * 2005-01-20 2005-07-27 上海复旦光华信息科技股份有限公司 基于模板的异构日志信息自动提取与分析方法
US20070214134A1 (en) * 2006-03-09 2007-09-13 Microsoft Corporation Data parsing with annotated patterns
CN101651679A (zh) * 2009-09-16 2010-02-17 清华大学 一种基于树形结构的数据帧解析和处理***和方法
CN101789174A (zh) * 2009-12-29 2010-07-28 北京世纪高通科技有限公司 一种日志的监测方法及装置
CN101931562A (zh) * 2010-09-29 2010-12-29 杭州华三通信技术有限公司 网络日志的处理方法及设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1645336A (zh) * 2005-01-20 2005-07-27 上海复旦光华信息科技股份有限公司 基于模板的异构日志信息自动提取与分析方法
US20070214134A1 (en) * 2006-03-09 2007-09-13 Microsoft Corporation Data parsing with annotated patterns
CN101651679A (zh) * 2009-09-16 2010-02-17 清华大学 一种基于树形结构的数据帧解析和处理***和方法
CN101789174A (zh) * 2009-12-29 2010-07-28 北京世纪高通科技有限公司 一种日志的监测方法及装置
CN101931562A (zh) * 2010-09-29 2010-12-29 杭州华三通信技术有限公司 网络日志的处理方法及设备

Cited By (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104717085A (zh) * 2013-12-16 2015-06-17 ***通信集团湖南有限公司 一种日志解析方法及装置
CN104717085B (zh) * 2013-12-16 2018-05-01 ***通信集团湖南有限公司 一种日志解析方法及装置
CN103986974B (zh) * 2014-06-05 2018-01-19 安一恒通(北京)科技有限公司 视频加载判定方法和装置
CN103986974A (zh) * 2014-06-05 2014-08-13 安一恒通(北京)科技有限公司 视频加载判定方法和装置
US11727025B2 (en) 2015-04-03 2023-08-15 Oracle International Corporation Method and system for implementing a log parser in a log analytics system
CN107660283A (zh) * 2015-04-03 2018-02-02 甲骨文国际公司 用于在日志分析***中实现日志解析器的方法和***
US11194828B2 (en) 2015-04-03 2021-12-07 Oracle International Corporation Method and system for implementing a log parser in a log analytics system
US11226975B2 (en) 2015-04-03 2022-01-18 Oracle International Corporation Method and system for implementing machine learning classifications
US11055302B2 (en) 2015-04-03 2021-07-06 Oracle International Corporation Method and system for implementing target model configuration metadata for a log analytics system
CN107660283B (zh) * 2015-04-03 2021-12-28 甲骨文国际公司 用于在日志分析***中实现日志解析器的方法和***
US11971898B2 (en) 2015-04-03 2024-04-30 Oracle International Corporation Method and system for implementing machine learning classifications
CN105447099B (zh) * 2015-11-11 2018-12-14 中国建设银行股份有限公司 日志结构化信息提取方法及装置
CN105447099A (zh) * 2015-11-11 2016-03-30 中国建设银行股份有限公司 日志结构化信息提取方法及装置
CN106021554A (zh) * 2016-05-30 2016-10-12 北京奇艺世纪科技有限公司 一种日志解析方法及装置
CN106547658A (zh) * 2016-10-28 2017-03-29 合网络技术(北京)有限公司 一种自动化测试方法及装置
CN106598827A (zh) * 2016-12-19 2017-04-26 东软集团股份有限公司 提取日志数据的方法及装置
CN106598827B (zh) * 2016-12-19 2019-05-31 东软集团股份有限公司 提取日志数据的方法及装置
CN108268545B (zh) * 2016-12-30 2020-11-10 中移(杭州)信息技术有限公司 一种分级的用户标签库的创建的方法和装置
CN108268545A (zh) * 2016-12-30 2018-07-10 中移(杭州)信息技术有限公司 一种分级的用户标签库的创建的方法和装置
CN108694213A (zh) * 2017-04-12 2018-10-23 艺龙网信息技术(北京)有限公司 日志文件的生成方法、检索方法及装置
CN108984221A (zh) * 2017-05-31 2018-12-11 北京京东尚科信息技术有限公司 一种多平台用户行为日志的采集方法和装置
CN108595310A (zh) * 2017-12-28 2018-09-28 北京兰云科技有限公司 一种日志处理方法及装置
US11681944B2 (en) 2018-08-09 2023-06-20 Oracle International Corporation System and method to generate a labeled dataset for training an entity detection system
CN110929121A (zh) * 2018-09-20 2020-03-27 中国石油化工股份有限公司 基于日志分析的地震资料处理机时精细化计算方法及***
CN110929121B (zh) * 2018-09-20 2023-07-04 中国石油化工股份有限公司 基于日志分析的地震资料处理机时精细化计算方法及***
CN109522391A (zh) * 2018-11-27 2019-03-26 兰州智华辰宇交通科技有限公司 地铁运维车载日志分析与预警方法
CN110109957A (zh) * 2019-03-29 2019-08-09 北京奇安信科技有限公司 流式事件关联匹配方法及装置
CN110109957B (zh) * 2019-03-29 2021-10-01 奇安信科技集团股份有限公司 流式事件关联匹配方法及装置
CN112882713A (zh) * 2019-11-29 2021-06-01 北京数安鑫云信息技术有限公司 一种日志解析的方法、装置、介质及计算机设备
CN112882713B (zh) * 2019-11-29 2024-03-12 北京数安鑫云信息技术有限公司 一种日志解析的方法、装置、介质及计算机设备
CN112463772A (zh) * 2021-02-02 2021-03-09 北京信安世纪科技股份有限公司 日志处理方法、装置、日志服务器及存储介质
CN113051086A (zh) * 2021-03-16 2021-06-29 北京房江湖科技有限公司 数据处理方法、装置、电子设备及存储介质
CN113626400A (zh) * 2021-07-11 2021-11-09 南京理工大学 基于日志树和解析树的日志事件提取方法及***
CN114840599A (zh) * 2022-07-05 2022-08-02 杭州广立微电子股份有限公司 半导体源数据解析方法、etl***、计算机设备和产品
CN114840599B (zh) * 2022-07-05 2022-11-01 杭州广立微电子股份有限公司 半导体源数据解析方法、etl***、计算机设备和产品

Also Published As

Publication number Publication date
CN102164050B (zh) 2014-01-22

Similar Documents

Publication Publication Date Title
CN102164050B (zh) 日志解析方法及日志解析节点设备
CN100555279C (zh) 不用快照的项同步***和方法
CN100545851C (zh) 使用命令行环境的远程***管理
CN101593111B (zh) 一种业务组件及基于业务组件的应用软件开发方法和***
CN103473696A (zh) 一种收集、分析和分发网络商业信息的方法和***
CN109670081B (zh) 业务请求处理的方法及装置
CN101183379A (zh) 用于检索数据的方法和***
JP2012150822A (ja) コマンド索引のためのローカル記憶装置および拡張記憶装置を使用したコマンドスクリプトの解釈
CN101375247A (zh) 服务创建方法,用于实现所述方法的计算机程序产品和计算机***
CN109740122A (zh) 思维导图用例文件的转换方法及装置
CN103019874A (zh) 基于数据同步实现异常处理的方法及装置
CN101639776A (zh) 一种数据库访问和集成方法及其***
CN105005543A (zh) 一种接口生成装置及方法
CN101309178B (zh) 一种自动交换光网络***日志信息的解析方法及装置
CN109002470A (zh) 知识图谱构建方法及装置、客户端
CN1987864A (zh) 访问数据库的方法和***
CN109726295A (zh) 品牌知识图谱显示方法、装置、图服务器及存储介质
CN113868252A (zh) 数据库模式匹配方法及装置、sql查询语句生成方法
CN101989294A (zh) 分布式文件解析方法和解析***
US20140052710A1 (en) Device and method of mass data storage based on tree structure
CN106598885B (zh) 一种可配置的多端口通用数据桥接***的工作方法
CN108388606A (zh) 一种校验Sql语句中库表字段名的方法以及计算机设备
CN101110700A (zh) 资源管理平台中的资源管理器
CN113761016A (zh) 数据查询方法、装置、设备及存储介质
CN111581212A (zh) 关系型数据库的数据存储方法、***、服务器和存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20201216

Address after: 200030 full floor, 4 / F, 190 Guyi Road, Xuhui District, Shanghai

Patentee after: Shanghai Ruishan Network Co.,Ltd.

Address before: 100036 11 / F, East Building, Zhongyi pengao building, 29 Fuxing Road, Haidian District, Beijing

Patentee before: Beijing Star-Net Ruijie Networks Co.,Ltd.

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140122

CF01 Termination of patent right due to non-payment of annual fee