一种自定义链式日志解析装置及方法

文档序号:9288395阅读:112来源:国知局
一种自定义链式日志解析装置及方法
【技术领域】
[0001]本发明属于计算机领域,涉及一种采用flume拦截器完成日志数据解析装置及方法。
【背景技术】
[0002]在使用flume进行海量日志数据处理的过程中,由于处理的日志数据都是以某种格式约定的字符串,并且日志的格式多种多样,如何在flume中解析多种多样的日志数据便成了一个难点。
[0003]传统的方式是在flume得到日志数据后通过判断数据中的关键词来进行日志的解析,但日志格式多种多样,每匹配解析一种日志便要在代码中修改一次。而且随着判断的情况增多,也会引起整体性能的下降。

【发明内容】

[0004]本申请提供了一种利用flume自定义拦截器组成拦截器链来进行日志数据解析装置及方法,使用该装置及方法可以对收集的日志数据进行解析,可以通过配置的形式完成。
[0005]为了实现上述目的,本发明采用如下技术方案。
[0006]flume工作原理是,Flume主要由Source、ChanneI和Sink三部分组成,Source是负责收集数据的组件,是数据的来源。Channel是一个缓冲区,是数据传输的通道。Sink是数据的去向,负责将数据持久化或将数据推向别处。数据以event(事件)的形式存在和传输,事件是flume的基本单位,它携带日志数据body (字节数组形式)并且携带头信息(header),flume的数据流由event (事件)贯穿始终。它的传输过程是Source负责收集数据并封装成event,然后传输到Channel,最后传输到Sink,如此完成一个周期。如图1所不O
[0007]—种自定义链式日志解析装置,包括在event由Source向Channel传输的过程中插入的拦截器链,所述拦截器链包含若干个顺序设置的自定义拦截器,自定义拦截器,自定义拦截器对应一个或多个正则表达式,将日志数据进行正则表达式的匹配,匹配后将日志中解析出的关键数据进行封装。
[0008]—种自定义链式日志解析方法,包括如下步骤:
[0009]日志数据event从Source进入一个拦截器,在该拦截器中进行正则表达式的匹配,如果匹配成功则event进入到Channel中,如果匹配失败,则event进入到下一个拦截器中,进行正则表达式的匹配,匹配成功则event进入Channel,失败则进入到下一个拦截器,依次类推,最终完成日志的解析。
[0010]自定义拦截器,是组成拦截器链的环节。自定义拦截器是通过实现flume拦截器接口来完成的一种能够满足自己需求的扩展拦截器,具有很强的灵活性。主要用来完成event的接收、处理和组装。过程是从上一个环节接收到event,将event分解为header和body,拿到header和body中的内容并处理。最后将处理后的日志数据封装到event传递到下一个处理环节。
[0011]正则表达式,它是拦截器的核心部分,每个拦截器对应一个或多个正则表达式。从event的body中拿到的日志数据进行正则表达式的匹配,匹配后将日志中解析出的关键数据进行封装。同时将在header中封装匹配结果,然后传递到下一个处理环节。Header中的结果将决定下一个环节是否对event再进行处理。
[0012]拦截器的组合,是拦截器链的骨架部分,它最终决定拦截器链的构成和数据在拦截器链中的传递顺序。拦截器的组成结构是:第一拦截器、第二拦截器、第三拦截器……第N拦截器,N为自然数,拦截器顺序代表数据传输顺序。
[0013]本发明的有益效果是,本发明利用拦截器链的方式进行日志解析,通过简单配置的方式来解析不同的日志。其提供了一种可配置、可扩展且高性能的日志分类解析方法,传统方式是在一个环节进行所有日志数据的分析,这样性能底下且扩展难度高。通过这种方式可随时进行日志解析的扩展。通过简单的配置和使用高灵活度的正则表达式可进行几乎所有类型日志的解析。除了对日志数据的处理外,采用拦截器链的方式还可以对flume收集的其它数据的处理。
[0014]当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
【附图说明】
[0015]图1是flume工作原理图。
[0016]图2是拦截器链中完成日志数据的解析的原理图。
[0017]图3是拦截器链的结构示意图。
[0018]图4是拦截器链工作流程图。
【具体实施方式】
[0019]下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0020]本发明的自定义链式日志解析装置及方法,实现的最主要的部分就是在event由Source向Channel传输的过程中插入拦截器链,在拦截器链中完成日志数据的解析。如图2所示。
[0021]自定义拦截器,该部分是组成拦截器链的环节。主要用来完成event的接收、处理和组装。过程是从上一个环节接收到event,将event分解为header和body,拿到header和body中的内容并处理。最后将处理后的日志数据封装到event传递到下一个处理环节。
[0022]正则表达式,它是拦截器的核心部分,每个拦截器对应一个或多个正则表达式。从event的body中拿到的日志数据进行正则表达式的匹配,匹配后将日志中解析出的关键数据进行封装。同时将在header中封装匹配结果,然后传递到下一个处理环节。Header中的结果将决定下一个环节是否对event再进行处理。
[0023]如图3所示,拦截器的组合,是拦截器链的骨架部分,它最终决定拦截器链的构成和数据在拦截器链中的传递顺序。拦截器的组合结构是:拦截器1、拦截器2、拦截器3……拦截器N,N为自然数,拦截器顺序代表数据传输顺序。
[0024]如图4所示,整个拦截器链的工作过程是,日志数据event从Source进入拦截器I,在拦截器I中进行正则表达式:regexl的匹配,如果匹配成功则event进入到Channel中,如果匹配失败则event进入到拦截器2中进行处理。拦截器2的处理和拦截器I处理一致,先进行正则表达式regex2的匹配,匹配成功则event进入Channel,失败则进入到下一个拦截器,依次类推,最终完成日志的解析。
[0025]上述虽然结合附图对本发明的【具体实施方式】进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
【主权项】
1.一种自定义链式日志解析装置,其特征是,包括在event由Source向Channel传输的过程中插入的拦截器链,所述拦截器链包含若干个顺序设置的自定义拦截器,自定义拦截器,自定义拦截器对应一个或多个正则表达式,将日志数据进行正则表达式的匹配,匹配后将日志中解析出的关键数据进行封装。2.一种自定义链式日志解析方法,其特征是,包括如下步骤:日志数据event从Source进入一个拦截器,在该拦截器中进行正则表达式的匹配,如果匹配成功则event进入到Channel中,如果匹配失败,则event进入到下一个拦截器中,进行正则表达式的匹配,匹配成功则event进入Channel,失败则进入到下一个拦截器,依次类推,最终完成日志的解析。
【专利摘要】本发明公开了一种自定义链式日志解析装置,包括在event由Source向Channel传输的过程中插入的拦截器链,所述拦截器链包含若干个顺序设置的自定义拦截器,自定义拦截器对应一个或多个正则表达式,将日志数据进行正则表达式的匹配,匹配后将日志中解析出的关键数据进行封装。本发明利用拦截器链的方式进行日志解析,通过简单配置的方式来解析不同的日志。本发明还提供了一种可配置、可扩展且高性能的日志分类解析方法,通过这种方式可随时进行日志解析的扩展。通过简单的配置和使用高灵活度的正则表达式可进行几乎所有类型日志的解析。除了对日志数据的处理外,采用拦截器链的方式还可以对flume收集的其它数据的处理。
【IPC分类】G06F17/22
【公开号】CN105005549
【申请号】CN201510460871
【发明人】郑鹏飞
【申请人】山东蚁巡网络科技有限公司
【公开日】2015年10月28日
【申请日】2015年7月31日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1