(12)发明专利申请
(10)申请公布号 CN 107291942 A(43)申请公布日 2017.10.24
(21)申请号 201710556329.X(22)申请日 2017.07.10
(71)申请人 国家电网公司
地址 100031 北京市西城区西长安街86号申请人 北京国电通网络技术有限公司(72)发明人 魏晓菁 王继业 曾楠 王晋雄
郝悍勇 李云 孙磊 王思宁 冷曼 尹琴 (74)专利代理机构 北京风雅颂专利代理有限公
司 11403
代理人 陈宙(51)Int.Cl.
G06F 17/30(2006.01)
权利要求书2页 说明书10页 附图2页
(54)发明名称
分布式日志的搜索方法和装置(57)摘要
本发明公开了一种分布式日志的搜索方法和装置,所述方法包括:确定用户选择的指标筛选器的模式;接收用户输入的基于该模式的筛选条件;运行所述模式的指标筛选器,所述指标筛选器根据所述筛选条件对采集于分布式网络中的日志进行搜索,得出符合条件的日志。本发明可以基于保存的原始日志文件进行搜索,避免日志信息在保存过程中被丢弃,且搜索出来的日志技术人员可以直接阅读,便于技术人员根据搜索结果快速作出判断。
CN 107291942 ACN 107291942 A
权 利 要 求 书
1/2页
1.一种分布式日志的搜索方法,包括:确定用户选择的指标筛选器的模式;接收用户输入的基于该模式的筛选条件;运行所述模式的指标筛选器,所述指标筛选器根据所述筛选条件对采集于分布式网络中的日志进行搜索,得出符合条件的日志。
2.根据权利要求1所述的方法,其特征在于,所述指标筛选器的模式包括:字词匹配模式;
空格分隔的日志事件的值匹配模式;属性标记的日志事件的值匹配模式。3.根据权利要求2所述的方法,其特征在于,所述指标筛选器的模式为字词匹配模式时,所述筛选条件包括:
一个或多个用户输入的待匹配的字或词。4.根据权利要求2所述的方法,其特征在于,所述指标筛选器的模式为空格分隔的日志事件的值匹配模式时,所述筛选条件包括:
以特殊字符分隔的多个日志事件的属性名称,一个或多个日志事件的取值,以及同一个日志事件的取值和属性名称之间的运算符;以及
所述指标筛选器根据所述筛选条件对采集于分布式网络中的日志进行搜索,得出符合条件的日志,具体包括:
所述指标筛选器针对每个待搜索的日志,提取该日志中以空格分隔的各字段;将提取的各字段按提取的前后顺序,分别与所述筛选条件中依次所列的各日志事件的属性名称进行对应;
对于所述筛选条件中包括取值的日志事件,将与该日志事件的属性名称对应的字段转换为数字或字符串后,根据转换得到的数字或字符串,以及该日志事件的取值和运算符,确定所述日志是否符合条件。
5.根据权利要求2所述的方法,其特征在于,所述指标筛选器的模式为空格分隔的日志事件的值匹配模式时,所述筛选条件包括:
以特殊字符分隔的一个省略符号,一个或多个日志事件的属性名称,一个或多个日志事件的取值,以及同一个日志事件的取值和属性名称之间的运算符;
其中,所述省略符号位于各日志事件的属性名称之前,或位于各日志事件的属性名称之后,或位于两个各日志事件的属性名称之间。
6.根据权利要求5所述的方法,其特征在于,所述指标筛选器根据所述筛选条件对采集于分布式网络中的日志进行搜索,得出符合条件的日志,具体包括:
所述指标筛选器针对每个待搜索的日志,提取该日志中以空格分隔的各字段;对于所述省略符号位于各日志事件的属性名称之后的情况,将提取的前n个字段按提取的前后顺序,分别与所述筛选条件中依次所列的各日志事件的属性名称进行对应;其中,n为所述筛选条件日志事件的属性名称的个数;
对于所述筛选条件中包括取值的日志事件,将与该日志事件的属性名称对应的字段转换为数字或字符串后,根据转换得到的数字或字符串,以及该日志事件的取值和运算符,确定所述日志是否符合条件。
2
CN 107291942 A
权 利 要 求 书
2/2页
7.根据权利要求5所述的方法,其特征在于,所述指标筛选器根据所述筛选条件对采集于分布式网络中的日志进行搜索,得出符合条件的日志,具体包括:
所述指标筛选器针对每个待搜索的日志,提取该日志中以空格分隔的各字段;对于所述省略符号位于各日志事件的属性名称之前的情况,将提取的后n个字段按提取的前后顺序,分别与所述筛选条件中依次所列的各日志事件的属性名称进行对应;其中,n为所述筛选条件日志事件的属性名称的个数;
对于所述筛选条件中包括取值的日志事件,将与该日志事件的属性名称对应的字段转换为数字或字符串后,根据转换得到的数字或字符串,以及该日志事件的取值和运算符,确定所述日志是否符合条件。
8.根据权利要求5所述的方法,其特征在于,所述指标筛选器根据所述筛选条件对采集于分布式网络中的日志进行搜索,得出符合条件的日志,具体包括:
所述指标筛选器针对每个待搜索的日志,提取该日志中以空格分隔的各字段;对于所述省略符号位于两个日志事件的属性名称之间的情况,将提取的前m1个字段,以及后m2个字段按提取的前后顺序,分别与所述筛选条件中依次所列的各日志事件的属性名称进行对应;其中,m1为所述筛选条件中所述省略符号之前的日志事件的属性名称的个数,m2为所述筛选条件中所述省略符号之后的日志事件的属性名称的个数;
对于所述筛选条件中包括取值的日志事件,将与该日志事件的属性名称对应的字段转换为数字或字符串后,根据转换得到的数字或字符串,以及该日志事件的取值和运算符,确定所述日志是否符合条件。
9.根据权利要求2所述的方法,其特征在于,所述指标筛选器的模式为属性标记的日志事件的值匹配模式时,所述筛选条件包括:至少一个属性匹配单元;在一个属性匹配单元中包括:指定的属性、运算符,以及该属性的取值;对于包括多个属性匹配单元的情况下,各属性匹配单元之间的逻辑运算符;以及
所述指标筛选器根据所述筛选条件对采集于分布式网络中的日志进行搜索,得出符合条件的日志,具体包括:
所述指标筛选器针对每个待搜索的日志,从中查找出所述筛选条件中指定的属性,并提取查找出的属性的取值;
针对每个查找出的属性,根据所述筛选条件中该属性匹配单元中包含的运算符,以及该属性的取值,确定该项属性是否匹配;
根据确定的各项属性的匹配结果以及,各属性匹配单元之间的逻辑运算符,确定所述日志是否符合条件。
10.一种分布式日志的搜索装置,包括:模式选择模块,用于确定用户选择的指标筛选器的模式;筛选条件输入模块,用于接收用户输入的基于该模式的筛选条件;筛选器运行模块,用于运行所述模式的指标筛选器,所述指标筛选器根据所述筛选条件对采集于分布式网络中的日志进行搜索,得出符合条件的日志。
3
CN 107291942 A
说 明 书
分布式日志的搜索方法和装置
1/10页
技术领域
[0001]本发明涉及计算机信息技术领域,特别是指一种分布式日志的搜索方法和装置。背景技术
[0002]云计算环境中分布式部署了大量的物理设备、业务系统,同时,也部署了运维,安全管理等的平台监控、管理系统,日志信息成为平台监控、管理的重要手段,海量的、来自不同设备、系统的分布式日志信息需要被多个系统使用,平台中一旦设备出现问题,日志信息就成为排查故障,预防故障的重要手段。[0003]由于云计算数据中心内物理设备、业务系统的数据很多,不同设备、系统使用不同协议产生自身的日志信息,目前的一种日志信息搜索与采集的方法,流程如图1所示,包括如下步骤:
[0004]S101:将不同来源的日志信息存储在存储系统中,将不同类型及不同来源的日志信息进行解析,保存成为统一字符编码的日志文件。[0005]S102:对统一字符编码的日志文件进行切分。[0006]S103:对切分后的日志信息进行索引操作,根据日志内的关键属性,日志搜索系统从非结构化日志数据中提取数据,并重新组织成为日志信息索引。[0007]S104:根据形成的日志信息索引进行日志检索,得到所需要的日志信息。[0008]在实际应用中,本发明的发明人发现,现有的日志信息搜索方法具有如下缺点:[0009]由于保存的日志文件均统一字符编码,无法保留原始日志文件,而原始日志中不符合正则表达式匹配的日志行则被丢弃,因此,保存下来的可能只是部分的日志信息;此外,保存的统一字符编码的日志文件是一堆Josn格式的文本,技术人员无法阅读,不利于技术人员根据搜索结果快速判断故障。
发明内容
[0010]有鉴于此,本发明的目的在于提出一种分布式日志的搜索方法和装置,可以基于保存的原始日志文件进行搜索,避免日志信息在保存过程中被丢弃,且搜索出来的日志技术人员可以直接阅读,便于技术人员根据搜索结果快速作出判断。[0011]基于上述目的本发明提供一种分布式日志的搜索方法,包括:[0012]确定用户选择的指标筛选器的模式;[0013]接收用户输入的基于该模式的筛选条件;[0014]运行所述模式的指标筛选器,所述指标筛选器根据所述筛选条件对采集于分布式网络中的日志进行搜索,得出符合条件的日志。[0015]其中,所述指标筛选器的模式包括:[0016]字词匹配模式;
[0017]空格分隔的日志事件的值匹配模式;[0018]属性标记的日志事件的值匹配模式。
4
CN 107291942 A[0019]
说 明 书
2/10页
其中,所述指标筛选器的模式为字词匹配模式时,所述筛选条件包括:
[0020]一个或多个用户输入的待匹配的字或词。[0021]其中,所述指标筛选器的模式为空格分隔的日志事件的值匹配模式时,所述筛选条件包括:
[0022]以特殊字符分隔的多个日志事件的属性名称,一个或多个日志事件的取值,以及同一个日志事件的取值和属性名称之间的运算符。[0023]其中,所述指标筛选器的模式为空格分隔的日志事件的值匹配模式时,所述筛选条件包括:
[0024]以特殊字符分隔的一个省略符号,一个或多个日志事件的属性名称,一个或多个日志事件的取值,以及同一个日志事件的取值和属性名称之间的运算符;[0025]其中,所述省略符号位于各日志事件的属性名称之前,或位于各日志事件的属性名称之后,或位于两个各日志事件的属性名称之间。[0026]其中,所述指标筛选器的模式为属性标记的日志事件的值匹配模式时,所述筛选条件包括:
[0027]至少一个属性匹配单元;在一个属性匹配单元中包括:指定的属性、运算符,以及该属性的取值;
[0028]对于包括多个属性匹配单元的情况下,各属性匹配单元之间的逻辑运算符。[0029]本发明还提供一种分布式日志的搜索装置,包括:[0030]模式选择模块,用于确定用户选择的指标筛选器的模式;[0031]筛选条件输入模块,用于接收用户输入的基于该模式的筛选条件;[0032]筛选器运行模块,用于运行所述模式的指标筛选器,所述指标筛选器根据所述筛选条件对采集于分布式网络中的日志进行搜索,得出符合条件的日志。[0033]本发明实施例的技术方案中,基于几种模式的指标筛选器,可以针对分布式网络中不同来源,不同格式的日志,以及不同的搜索需求进行搜索。这样,就不必将不同格式的日志进行统一转换,既避免了转换步骤,又可以避免转换过程中日志信息的丢弃;而搜索出的符合条件的日志为原始日志,通常技术人员可以直接阅读而获取所需要的信息。附图说明
[0034]图1为现有技术的日志信息搜索与采集方法的流程图;[0035]图2为本发明实施例的分布式日志的搜索方法流程图;
[0036]图3为本发明实施例的分布式日志的搜索装置内部结构框图。
具体实施方式
[0037]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0038]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。[0039]本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一
5
CN 107291942 A
说 明 书
3/10页
个”、“所述”和“该”也可包括复数形式。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。[0040]需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。[0041]本发明的发明人,对日志的记录方式以及通常的搜索需求进行分析,根据从中发现总结出的规律,提供了一套多模式的专用于针对日志事件进行搜索的指标筛选器。本发明技术方案的指标筛选器具有多种模式,以灵活适用于不同方式记录的日志,或灵活适用于不同的搜索需求。
[0042]由于可以灵活适用于不同方式记录的日志,因此,本发明技术方案避免了采用现有技术对日志解析后进行统一字符编码的步骤,避免原始日志中不符合正则表达式匹配的日志行则被丢弃,可以完整地保留原始日志文件的信息;[0043]同时,利用指标筛选器筛选出符合条件的原始日志,技术人员可以直接阅读,便于技术人员根据搜索结果快速作出判断。
[0044]本发明的发明人对采集于分布式网络结构的日志信息进行分析,发现日志信息的记录方式通常有两种;一种是基于空格分隔的日志事件的记录方式,一种是基于属性标记的日志事件的记录方式。[0045]例如,一种常见的WEB日志格式,包括以空格分隔的各日志事件的记录,是一种基于空格分隔的日志事件的记录方式。比如一个WEB日志包括了如下记录内容:[0046]218.161.64.101–-[22/Aug/2011:09:51:46+0800]“GET/reference-and-source/weblog-format/HTTP/1.1″202 6326”http://www.google.cn/search?q=friend”“Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.1)”[0047]基于以上记录内容,这个日志可以解读为:来自\"http://www.google.cn/search?q=friend\"的访客,使用IE6.0浏览器,应用HTTP/1.1协议,在22/Aug/2011:09:51:46,访问(GET)了218.161.64.101主机的/reference-and-source/weblog-format/,访问成功,得到6326字节数据。
[0048]可以看到这个日志主要记录了以下几个日志事件:
[0049]访问主机(remotehost)的IP地址或者已解析的域名的日志事件;[0050]用户标识符(Ident)的日志事件;
[0051]授权用户(authuser)的标识的日志事件;[0052]日期时间(date)的日志事件;[0053]用户请求(request)类型的日志事件;[0054]用户请求资源(RESOURCE)的日志事件;[0055]协议版本号(PROTOCOL)的日志事件;[0056]服务器的响应状态(status)的日志事件;[0057]传输字节数(bytes)的日志事件;[0058]来源页面(referrer)的日志事件;[0059]用户代理(agent)的日志事件。
[0060]而一种基于属性标记的日志事件的记录方式可以是JOSN格式的日志的记录方式。
6
CN 107291942 A
说 明 书
4/10页
在JOSN格式的日志中以设定的格式来记录多个属性,以及各属性的值。[0061]例如,一个JOSN格式的日志中记录了以下内容:
[0062]
[0063]
其中,记录有eventType属性的值为UpdateTrail,sourceIPAddress属性的值为111.111.111.111,objectList[0].name属性的值为a等。[0065]本发明的技术方案,可以针对不同格式的日志灵活采用不同模式的指标筛选器,而不必将不同格式的日志进行统一转换,既避免了转换步骤,又可以避免转换过程中日志信息的丢弃。
[0066]下面结合附图详细说明本发明的技术方案。
[0067]本发明实施例提供的一种分布式日志的搜索方法,流程如图2所示,包括如下步骤:
[0068]S201:确定用户选择的指标筛选器的模式。[0069]具体地,所述指标筛选器的模式可以包括:字词匹配模式、空格分隔的日志事件的
7
[0064]
CN 107291942 A
说 明 书
5/10页
值匹配模式,以及属性标记的日志事件的值匹配模式。本步骤中,用户可以从中选择一个模式。
[0070]S202:接收用户输入的基于该模式的筛选条件。[0071]具体地,当在S201步骤中确定用户选择的模式为字词匹配模式时,该模式下的筛选条件包括:一个或多个用户输入的待匹配的字或词;或者,进一步该模式下的筛选条件可以包括:至少一个个用户输入的待匹配的字或词,以及输入的字或词之间的组合逻辑关系。比如,用户希望查找到包含词语“Failed to process the request”的日志,则在S201步骤中确定用户选择的模式为字词匹配模式,在本步骤中接收用户输入的筛选条件包括待匹配的词语“Failed to process the request”。
[0072]当在S201步骤中确定用户选择的模式为空格分隔的日志事件的值匹配模式时,该模式下的筛选条件可以包括:以特殊字符分隔的多个日志事件的属性名称,一个或多个日志事件的取值,以及同一个日志事件的取值和属性名称之间的运算符。[0073]例如,输入的一种空格分隔的日志事件的值匹配模式下的筛选条件如下:[0074][ip,user,username,timestamp,request,status_code,bytes>1000][0075]其中包括以特殊字符逗号分隔的各日志事件的属性名称:ip、user、username等,还包括了bytes日志事件的取值1000,以及取值1000与属性名称bytes之间的运算符“>”。[0076]或者,空格分隔的日志事件的值匹配模式下的筛选条件可以包括:以特殊字符分隔的一个省略符号,一个或多个日志事件的属性名称,一个或多个日志事件的取值,以及同一个日志事件的取值和属性名称之间的运算符;其中,所述省略符号位于各日志事件的属性名称之前,或位于各日志事件的属性名称之后,或位于两个各日志事件的属性名称之间。[0077]例如,输入的一种省略符号位于各日志事件的属性名称之前的筛选条件如下:[0078][...,status_code,bytes>1000]
[0079]输入的一种省略符号位于各日志事件的属性名称之后的筛选条件如下:[0080][ip=127.0.0.1,user,...]
[0081]输入的一种省略符号位于两个各日志事件的属性名称之间的筛选条件如下:[0082][ip,user,...,status_code,bytes>1000][0083]上述的特殊字符可以是预先设定的,比如,将逗号或其它符号设定为特殊字符。[0084]当在S201步骤中确定用户选择的模式为属性标记的日志事件的值匹配模式时,该模式下的筛选条件可以包括:至少一个属性匹配单元;在一个属性匹配单元中包括:指定的属性、运算符,以及该属性的取值;进一步,对于包括多个属性匹配单元的情况,该模式下的筛选条件还可以包括各属性匹配单元之间的逻辑运算符。[0085]例如,包含一个属性匹配单元的一种筛选条件如下:[0086]{$.eventType=\"UpdateTrail\[0087]其中,eventType为指定的属性,UpdateTrail为eventType属性的取值。[0088]包含多个属性匹配单元的一种筛选条件如下:
[0089]{($.user.id=1)&&($.users[0].email=\"John.Doe@example.com\")}[0090]其中包括分别包含于两对()之中的两个属性匹配单元;其中,一个属性匹配单元中:指定的属性为user.id,属性的取值为1;另一个属性匹配单元中指定的属性为users[0].email,取值为\"********************\"。两个属性匹配单元的逻辑运算符为&&,表示
8
CN 107291942 A
说 明 书
6/10页
两个属性匹配单元的逻辑与的运算关系。每个属性匹配单元的开头可以以一个预定字符标识,比如,以$字符标识。[0091]S203:运行所选择的模式的指标筛选器,所述指标筛选器根据所述筛选条件对采集于分布式网络中的日志进行搜索,得出符合条件的日志。[0092]具体地,在运行字词匹配模式的指标筛选器时,所述指标筛选器根据筛选条件中的待匹配的字或词,针对每个采集于分布式网络中的待搜索的日志,若从该日志中查找到该字或词,则将该日志作为符合条件的日志输出。[0093]例如,若步骤S202中接收的一种字词匹配模式下的筛选条件中包括待匹配的词语“Failed to process the request”,则本步骤中运行字词匹配模式的指标筛选器时,所述指标筛选器将输出包含词语“Failed to process the request”的日志作为查找结果。[0094]具体地,在运行空格分隔的日志事件的值匹配模式的指标筛选器时,对于筛选条件包括以特殊字符分隔的多个日志事件的属性名称,一个或多个日志事件的取值,以及同一个日志事件的取值和属性名称之间的运算符的情况,所述指标筛选器针对每个待搜索的日志,提取该日志中以空格分隔的各字段;将提取的各字段按提取的前后顺序,分别与所述筛选条件中依次所列的各日志事件的属性名称进行对应;对于所述筛选条件中包括取值的日志事件,将与该日志事件的属性名称对应的字段转换为数字或字符串后,根据转换得到的数字或字符串,以及该日志事件的取值和运算符,确定所述日志是否符合条件。[0095]例如,一个基于空格分隔日志事件的日志内容如下:
[0096]127.0.0.1-frank[10/Oct/2000:13:25:15-0700]\"GET/apache_pb.gif HTTP/1.0\"200 1534
[0097]若步骤S202中接收的一种空格分隔的日志事件的值匹配模式下的筛选条件如下:[ip,user,username,timestamp,request,status_code,bytes>1000][0098]则本步骤中运行该筛选条件的指标筛选器时,指标筛选器对上述的日志内容进行解析,得到对应关系包括:ip-127.0.0.1,user为空,username为空,timestamp-10/Oct/2000:13:25:15-0700,request-\"GET/apache_pb.gif HTTP/1.0\",status_code-200,bytes-1534。由于该行日志的bytes属性的取值为1534>1000,所以确定该日志符合条件,作为查找结果输出。
[0099]在运行空格分隔的日志事件的值匹配模式的指标筛选器时,对于筛选条件包括位于各日志事件的属性名称之后的省略符号的情况,所述指标筛选器针对每个待搜索的日志,提取该日志中以空格分隔的各字段;将提取的前n个字段按提取的前后顺序,分别与所述筛选条件中依次所列的各日志事件的属性名称进行对应;其中,n为所述筛选条件日志事件的属性名称的个数;对于所述筛选条件中包括取值的日志事件,将与该日志事件的属性名称对应的字段转换为数字或字符串后,根据转换得到的数字或字符串,以及该日志事件的取值和运算符,确定所述日志是否符合条件。[0100]例如,若步骤S202中接收的一种空格分隔的日志事件的值匹配模式下的筛选条件如下:[ip=127.0.0.2,user,...][0101]则本步骤中运行该筛选条件的指标筛选器时,指标筛选器对上述基于空格分隔日志事件的日志内容进行解析,对前两个日志事件的属性名称进行对应,得到对应关系包括:ip-127.0.0.1,user为空。由于该行日志的ip属性的取值为127.0.0.1不等于筛选条件中的
9
CN 107291942 A
说 明 书
7/10页
127.0.0.2,所以确定该日志不符合条件,不作为查找结果输出。
[0102]在运行空格分隔的日志事件的值匹配模式的指标筛选器时,对于筛选条件包括位于各日志事件的属性名称之前的省略符号的情况,所述指标筛选器针对每个待搜索的日志,提取该日志中以空格分隔的各字段;将提取的后n个字段按提取的前后顺序,分别与所述筛选条件中依次所列的各日志事件的属性名称进行对应;其中,n为所述筛选条件日志事件的属性名称的个数;对于所述筛选条件中包括取值的日志事件,将与该日志事件的属性名称对应的字段转换为数字或字符串后,根据转换得到的数字或字符串,以及该日志事件的取值和运算符,确定所述日志是否符合条件。[0103]例如,若步骤S202中接收的一种空格分隔的日志事件的值匹配模式下的筛选条件如下:[...,status_code,bytes>1000][0104]则本步骤中运行该筛选条件的指标筛选器时,指标筛选器对上述基于空格分隔日志事件的日志内容进行解析,对后两个日志事件的属性名称进行对应,得到对应关系包括:status_code-200,bytes-1534。由于该行日志的bytes属性的取值为1534>1000,所以确定该日志符合条件,作为查找结果输出。
[0105]在运行空格分隔的日志事件的值匹配模式的指标筛选器时,对于筛选条件包括位于两个各日志事件的属性名称之间的省略符号的情况,所述指标筛选器针对每个待搜索的日志,提取该日志中以空格分隔的各字段;将提取的前m1个字段,以及后m2个字段按提取的前后顺序,分别与所述筛选条件中依次所列的各日志事件的属性名称进行对应;其中,m1为所述筛选条件中所述省略符号之前的日志事件的属性名称的个数,m2为所述筛选条件中所述省略符号之后的日志事件的属性名称的个数;对于所述筛选条件中包括取值的日志事件,将与该日志事件的属性名称对应的字段转换为数字或字符串后,根据转换得到的数字或字符串,以及该日志事件的取值和运算符,确定所述日志是否符合条件。[0106]例如,若步骤S202中接收的一种空格分隔的日志事件的值匹配模式下的筛选条件如下:[ip,user,...,status_code,bytes>1000][0107]则本步骤中运行该筛选条件的指标筛选器时,指标筛选器对上述基于空格分隔日志事件的日志内容进行解析,对前、后两个日志事件的属性名称进行对应,得到对应关系包括:ip-127.0.0.1,user为空,status_code-200,bytes-1534。由于该行日志的bytes属性的取值为1534>1000,所以确定该日志符合条件,作为查找结果输出。[0108]在运行属性标记的日志事件的值匹配模式的指标筛选器时,对于筛选条件中仅包括一个属性匹配单元的情况,指标筛选器针对每个待搜索的日志,从中查找出所述筛选条件中指定的属性,并提取查找出的属性的取值;针对查找出的属性,根据所述筛选条件中该属性匹配单元中包含的运算符,以及该属性的取值,确定该项属性是否匹配;若确定匹配,则将该日志作为符合条件的查找结果输出。[0109]例如,若步骤S202中接收的一种属性标记的日志事件的值匹配模式下的筛选条件如下:{$.eventType=\"UpdateTrail\则本步骤中运行该筛选条件的指标筛选器时,指标筛选器将从上述的一个JOSN格式的日志中查找到eventType属性,并在确认日志中eventType属性的取值为UpdateTrail,与筛选条件中的取值相匹配后,确定该日志符合筛选条件,将该日志作为查找结果输出。
[0110]在运行属性标记的日志事件的值匹配模式的指标筛选器时,对于筛选条件中包括
10
CN 107291942 A
说 明 书
8/10页
多个属性匹配单元的情况,所述指标筛选器针对每个待搜索的日志,从中查找出所述筛选条件中指定的属性,并提取查找出的属性的取值;针对每个查找出的属性,根据所述筛选条件中该属性匹配单元中包含的运算符,以及该属性的取值,确定该项属性是否匹配;根据确定的各项属性的匹配结果以及,各属性匹配单元之间的逻辑运算符,确定所述日志是否符合条件。[0111]例如,若步骤S202中接收的一种属性标记的日志事件的值匹配模式下的筛选条件如下:
[0112]{($.user.id=1)&&($.users[0].email=\"John.Doe@example.com\")}[0113]则本步骤中运行该筛选条件的指标筛选器时,指标筛选器将从上述的一个JOSN格式的日志中查找到属性user以及user属性下的子属性id,并在确认日志中user.id属性的取值为1,与筛选条件中的取值相匹配后,确定该项属性匹配;进而指标筛选器从日志中查找到属性users以及users属性的第0个数组元素中的email属性,在确认日志中users[0].email属性的取值为********************后,确定users[0].email属性匹配;指标筛选器根据两个属性匹配单元之间的逻辑与关系运算符,以及上述两个属性相匹配的结果,确定该日志符合筛选条件,将该日志作为查找结果输出。[0114]基于上述几种模式的指标筛选器,本发明的技术方案可以针对分布式网络中不同来源,不同格式的日志,以及不同的搜索需求进行搜索。[0115]比如,当搜索需求为查找到包含某个字或词的日志时,则可以应用字词匹配模式的指标筛选器,该模式的指标筛选器可以针对各种记录方式的日志,搜索出包含该字或词的日志。
[0116]在需要查找某个属性的取值为特定值包含或在一定范围内的日志时,则可以对记录方式为空格分隔的日志事件的一类日志运用空格分隔的日志事件的值匹配模式的指标筛选器,对记录方式为属性标记的日志事件的一类日志运用属性标记的日志事件的值匹配模式的指标筛选器。[0117]这样,就不必将不同格式的日志进行统一转换,既避免了转换步骤,又可以避免转换过程中日志信息的丢弃;而搜索出的符合条件的日志为原始日志,通常技术人员可以直接阅读而获取所需要的信息。
[0118]基于上述的分布式日志的搜索方法,本发明实施例提供的一种分布式日志的搜索装置,如图3所示,包括:模式选择模块301、筛选条件输入模块302、筛选器运行模块303。[0119]模式选择模块301用于确定用户选择的指标筛选器的模式;其中,可供选择的指标筛选器的模式包括:字词匹配模式、空格分隔的日志事件的值匹配模式、属性标记的日志事件的值匹配模式。
[0120]筛选条件输入模块302用于接收用户输入的基于该模式的筛选条件;其中,所述指标筛选器的模式为字词匹配模式时,所述筛选条件包括:一个或多个用户输入的待匹配的字或词;或者,所述指标筛选器的模式为空格分隔的日志事件的值匹配模式时,所述筛选条件包括:以特殊字符分隔的多个日志事件的属性名称,一个或多个日志事件的取值,以及同一个日志事件的取值和属性名称之间的运算符;或者,所述指标筛选器的模式为空格分隔的日志事件的值匹配模式时,所述筛选条件包括:以特殊字符分隔的一个省略符号,一个或多个日志事件的属性名称,一个或多个日志事件的取值,以及同一个日志事件的取值和属
11
CN 107291942 A
说 明 书
9/10页
性名称之间的运算符;其中,所述省略符号位于各日志事件的属性名称之前,或位于各日志事件的属性名称之后,或位于两个各日志事件的属性名称之间;或者,所述指标筛选器的模式为属性标记的日志事件的值匹配模式时,所述筛选条件包括:至少一个属性匹配单元;在一个属性匹配单元中包括:指定的属性、运算符,以及该属性的取值;对于包括多个属性匹配单元的情况下,各属性匹配单元之间的逻辑运算符。
[0121]筛选器运行模块303用于根据模式选择模块301确定的指标筛选器的模式,运行所述模式的指标筛选器,所述指标筛选器根据筛选条件输入模块302接收的筛选条件对采集于分布式网络中的日志进行搜索,得出符合条件的日志。[0122]具体地,筛选器运行模块303运行字词匹配模式的指标筛选器时,所述指标筛选器根据筛选条件中的待匹配的字或词,针对每个采集于分布式网络中的待搜索的日志,若从该日志中查找到该字或词,则将该日志作为符合条件的日志输出。
[0123]筛选器运行模块303运行空格分隔的日志事件的值匹配模式的指标筛选器时,若所述筛选条件包括:以特殊字符分隔的多个日志事件的属性名称,一个或多个日志事件的取值,以及同一个日志事件的取值和属性名称之间的运算符;则所述指标筛选器针对每个待搜索的日志,提取该日志中以空格分隔的各字段;将提取的各字段按提取的前后顺序,分别与所述筛选条件中依次所列的各日志事件的属性名称进行对应;对于所述筛选条件中包括取值的日志事件,将与该日志事件的属性名称对应的字段转换为数字或字符串后,根据转换得到的数字或字符串,以及该日志事件的取值和运算符,确定所述日志是否符合条件。[0124]筛选器运行模块303运行空格分隔的日志事件的值匹配模式的指标筛选器时,若所述筛选条件包括:以特殊字符分隔的一个省略符号,一个或多个日志事件的属性名称,一个或多个日志事件的取值,以及同一个日志事件的取值和属性名称之间的运算符;其中,所述省略符号位于各日志事件的属性名称之前,或位于各日志事件的属性名称之后,或位于两个各日志事件的属性名称之间;则:
[0125]对于所述省略符号位于各日志事件的属性名称之后的情况,所述指标筛选器针对每个待搜索的日志,提取该日志中以空格分隔的各字段;将提取的前n个字段按提取的前后顺序,分别与所述筛选条件中依次所列的各日志事件的属性名称进行对应;其中,n为所述筛选条件日志事件的属性名称的个数;对于所述筛选条件中包括取值的日志事件,将与该日志事件的属性名称对应的字段转换为数字或字符串后,根据转换得到的数字或字符串,以及该日志事件的取值和运算符,确定所述日志是否符合条件。
[0126]对于所述省略符号位于各日志事件的属性名称之前的情况,所述指标筛选器针对每个待搜索的日志,提取该日志中以空格分隔的各字段;将提取的后n个字段按提取的前后顺序,分别与所述筛选条件中依次所列的各日志事件的属性名称进行对应;其中,n为所述筛选条件日志事件的属性名称的个数;对于所述筛选条件中包括取值的日志事件,将与该日志事件的属性名称对应的字段转换为数字或字符串后,根据转换得到的数字或字符串,以及该日志事件的取值和运算符,确定所述日志是否符合条件。
[0127]对于所述省略符号位于两个日志事件的属性名称之间的情况,所述指标筛选器针对每个待搜索的日志,提取该日志中以空格分隔的各字段;将提取的前m1个字段,以及后m2个字段按提取的前后顺序,分别与所述筛选条件中依次所列的各日志事件的属性名称进行对应;其中,m1为所述筛选条件中所述省略符号之前的日志事件的属性名称的个数,m2为所
12
CN 107291942 A
说 明 书
10/10页
述筛选条件中所述省略符号之后的日志事件的属性名称的个数;对于所述筛选条件中包括取值的日志事件,将与该日志事件的属性名称对应的字段转换为数字或字符串后,根据转换得到的数字或字符串,以及该日志事件的取值和运算符,确定所述日志是否符合条件。[0128]筛选器运行模块303运行属性标记的日志事件的值匹配模式的指标筛选器时,所述指标筛选器针对每个待搜索的日志,从中查找出所述筛选条件中指定的属性,并提取查找出的属性的取值;针对每个查找出的属性,根据所述筛选条件中该属性匹配单元中包含的运算符,以及该属性的取值,确定该项属性是否匹配;根据确定的各项属性的匹配结果以及,各属性匹配单元之间的逻辑运算符,确定所述日志是否符合条件。[0129]本发明实施例的技术方案中,基于几种模式的指标筛选器,可以针对分布式网络中不同来源,不同格式的日志,以及不同的搜索需求进行搜索。这样,就不必将不同格式的日志进行统一转换,既避免了转换步骤,又可以避免转换过程中日志信息的丢弃;而搜索出的符合条件的日志为原始日志,通常技术人员可以直接阅读而获取所需要的信息。[0130]本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。[0131]所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。
13
CN 107291942 A
说 明 书 附 图
1/2页
图1
图2
14
CN 107291942 A
说 明 书 附 图
2/2页
图3
15
因篇幅问题不能全部显示,请点此查看更多更全内容