一种分布式实时日志分析方法和计算机可读存储介质与流程

文档序号:19418554发布日期:2019-12-14 01:11阅读:164来源:国知局
一种分布式实时日志分析方法和计算机可读存储介质与流程

本发明涉及数据处理技术领域,具体指一种分布式实时日志分析方法和计算机可读存储介质。



背景技术:

目前分布式系统越来越普及,服务会产生海量的日志。现有的日志分析系统通常使用基于hadoop和mapreduce算法或者对基于storm的分析系统日志进行分析处理。

利用基于hadoop和mapreduce的算法进行分析,会导致分析结果出现t+n(n≥1)的滞后,无法及时反馈系统运行的状态。而采用基于storm的分析系统,通常只能分析简单的无状态的数据,无法对数据进行复杂的分析处理;对于有状态的数据,则要求数据的处理必须是串行的,无法进行并发分析。对于分布式集群之间产生的关联日志,无法有效的进行实时并发高效的分析处理。



技术实现要素:

本发明要解决的技术问题之一,在于提供一种分布式实时日志分析方法,能够对分布式集群之间所产生的关联日志进行实时并发的分析处理。

本发明要解决的技术问题之一是这样实现的:

一种分布式实时日志分析方法,包括:

步骤10、获取原始日志与授时标记,将所述授时标记与所述原始日志绑定,得到授时日志;

步骤20、将所述授时日志写入消息队列缓冲;

步骤30、从所述消息队列中依次获取授时日志,分析所述授时日志的内容和依赖关系,对所述授时日志分类,并根据授时标记的先后顺序排序;

步骤40、根据业务需求选取对应分类的所述授时日志,按先后顺序进行增量分析,生成分析结果。

进一步地,所述步骤10具体为:从至少一个业务服务器获取原始日志,从至少一个授时服务器获取授时标记,将所述授时标记与所述原始日志绑定,得到授时日志。

进一步地,所述步骤30具体包括:

步骤31、从所述消息队列中依次获取授时日志;

步骤32、分析所述授时日志的内容和依赖关系,得到所述授时日志对应的分类标记;

步骤33、根据所述分类标记在已有分类标记中进行查询,如果分类标记存在,则将分类标记与所述授时日志绑定,如果分类标记不存在,则新增分类标记,并与所述授时日志绑定;

步骤34、根据所述授时日志的授时标记,将绑定有相同分类标记的授时日志进行排序。

进一步地,所述步骤40具体包括:

步骤41、顺序读取绑定相同分类标记的所述授时日志,提取所述授时日志的授时标记,得到原始日志;

步骤42、将所述原始日志的内容按位置关系排列,得到组合日志数据;

步骤43、判断所述组合日志数据是否完整,如果不完整,则回到步骤41,如果完整,执行步骤44;

步骤44、生成分析结果。

进一步地,所述方法还包括:步骤50、将所述原始日志存储到分布式实时搜索引擎,将分析结果存储到数据库。

本发明要解决的技术问题之二,在于提供一种计算机可读存储介质,能够对分布式集群之间所产生的关联日志进行实时并发的分析处理。

本发明要解决的技术问题之二是这样实现的:

一种计算机可读存储介质,其上存储有计算机程序(指令),该程序(指令)被处理器执行时实现以下步骤:

步骤10、获取原始日志与授时标记,将所述授时标记与所述原始日志绑定,得到授时日志;

步骤20、将所述授时日志写入消息队列缓冲;

步骤30、从所述消息队列中依次获取授时日志,分析所述授时日志的内容和依赖关系,对所述授时日志分类,并根据授时标记的先后顺序排序;

步骤40、根据业务需求选取对应分类的所述授时日志,按先后顺序进行增量分析,生成分析结果。

进一步地,所述步骤10具体为:从至少一个业务服务器获取原始日志,从至少一个授时服务器获取授时标记,将所述授时标记与所述原始日志绑定,得到授时日志。

进一步地,所述步骤30具体包括:

步骤31、从所述消息队列中依次获取授时日志;

步骤32、分析所述授时日志的内容和依赖关系,得到所述授时日志对应的分类标记;

步骤33、根据所述分类标记在已有分类标记中进行查询,如果分类标记存在,则将分类标记与所述授时日志绑定,如果分类标记不存在,则新增分类标记,并与所述授时日志绑定;

步骤34、根据所述授时日志的授时标记,将绑定有相同分类标记的授时日志进行排序。

进一步地,所述步骤40具体包括:

步骤41、顺序读取绑定相同分类标记的所述授时日志,提取所述授时日志的授时标记,得到原始日志;

步骤42、将所述原始日志的内容按位置关系排列,得到组合日志数据;

步骤43、判断所述组合日志数据是否完整,如果不完整,则回到步骤41,如果完整,执行步骤44;

步骤44、生成分析结果。

进一步地,所述程序还执行:

步骤50、将所述原始日志存储到分布式实时搜索引擎,将分析结果存储到数据库。

本发明具有如下优点:

1、通过获取授时标记,得到授时日志,由于授时标记是有序并且不重复的,因此不仅能保证日志记录的唯一性还可以保证日志是可排序的,从而将分布式集群之间产生的并发日志变为有序的日志,便于分析系统进行高效地分析处理;

2、利用一种分类、增量式分析的方法来处理关联日志,从而使得分布式系统产生的海量关联数据可以并发高效的进行实时分析。

附图说明

下面参照附图结合实施例对本发明作进一步的说明。

图1是本发明实施例一种分布式实时日志分析方法执行流程图。

图2是本发明实施例一种分布式实时日志分析方法日志消息授时的流程图。

图3是本发明实施例一种分布式实时日志分析方法授时日志分析归类排序的流程图

图4是本发明实施例一种分布式实时日志分析方法增量分析流程图。

图5是本发明实施例一种分布式实时日志分析方法整体框架示意图。

具体实施方式

请参考图1至5,本发明实施例一种分布式实时日志分析方法,包括:

步骤10、获取原始日志与授时标记,将所述授时标记与所述原始日志绑定,得到授时日志;

步骤20、将所述授时日志写入消息队列缓冲;

步骤30、从所述消息队列中依次获取授时日志,分析所述授时日志的内容和依赖关系,对所述授时日志分类,并根据授时标记的先后顺序排序;

步骤40、根据业务需求选取对应分类的所述授时日志,按先后顺序进行增量分析,生成分析结果。

在一实施例中,从至少一个业务服务器(业务服务集群包括复数个业务服务器)获取原始日志,从至少一个授时服务器(授时服务集群包括复数个授时服务器)获取授时标记(uuid),将所述授时标记(uuid)与所述原始日志绑定,得到授时日志。业务服务集群与授时服务集群可以先通过统一的时间服务器进行时间同步,尽量减少服务器之间的时间差。所述至少一个业务服务器(业务服务集群包括复数个业务服务器)与至少一个授时服务器(授时服务集群包括复数个授时服务器)仅为功能上的划分,在实施中可以用不同的服务器(或服务器集群)分别实现,也可以用同一个服务器(或服务器集群)实现。

由于原始日志来源于各个服务器集群,集群之间的时间无法保证完全同步;即使服务器的时间完全是同步的,也可能会出现同一时间打印多条日志的情况,因此需要对每条日志进行授时排序。经过授时排序的日志既可以保证在服务器内是有序的,也可以保证在集群内是有序的,更关键的在于可以保证在系统全局内是有序的。

请参考图3,在一实施例中,所述步骤30具体包括:

步骤31、从所述消息队列中依次获取授时日志;

步骤32、分析所述授时日志的内容和依赖关系,得到所述授时日志对应的分类标记;

步骤33、根据所述分类标记在已有分类标记中进行查询,如果分类标记存在,则将分类标记与所述授时日志绑定,如果分类标记不存在,则新增分类标记,并与所述授时日志绑定;

步骤34、根据所述授时日志的授时标记,将绑定有相同分类标记的授时日志进行排序。

依赖关系亦称“逻辑关系”,指表示两个活动(前导活动和后续活动)中一个活动的变更将会影响到另一个活动的关系,例如:一个类使用另一个类的对象作为操作的参数,一个类用另一个类的对象作为它的数据成员,一个类向另一个类发消息等,这样的两个类之间都存在依赖关系。分布式集群之间产生的存在着依赖关系的日志,即关联日志,可以根据现有技术(比如申请号为cn200810117633.5“一种自动识别需求依赖关系的方法”或申请号为cn201410082707.1“基于数据起源依赖关系分析模型的数据依赖分析方法”)确定日志的依赖关系,然后分析日志的内容,得到该日志对应的分类标记。

在一具体实施例中,一个任务需要多个集群(a+b)完成,于是就会产生日志log-a和log-b,集群a里面,可能有多个节点,会输出日志log-a1、log-a2……log-an;集群b同理,最终输出的日志为log-a1、log-a2、……、log-an+log-b1、log-b2、……、log-bn,这些日志即为有依赖关系的关联日志。

在另一具体实施例中,日志a内容为:1001呼叫1002,分析日志a内容,得到分类标记“通话1001到1002”,此分类标记不存在,新增分类标记“通话1001到1002”,并与所述日志a绑定;日志b内容为1002接听1001的呼叫,分析日志b内容,得到分类标记“通话1001到1002”,此时该分类标记已存在,然后将分类标记“通话1001到1002”与所述日志b绑定,此时日志a与日志b即被归在同一个分类下,再根据日志a和日志b绑定的授时标记,将日志a与日志b按时间顺序排序,便于分析系统进行高效地分析处理。

请参考图4,在一实施例中,所述步骤40具体包括:

步骤41、顺序读取绑定相同分类标记的所述授时日志,提取所述授时日志的授时标记,得到原始日志;

步骤42、将所述原始日志的内容按位置关系排列,得到组合日志数据;

步骤43、判断所述组合日志数据是否完整,如果不完整,则回到步骤41,如果完整,执行步骤44;

步骤44、生成分析结果。

在具体实施过程中,根据业务场景提取分类且排好序的授时日志,初始化一个空的上下文(context),然后每获得一原始日志,就根据当前的上下文内容以及原始日志的内容进行分析,将原始日志添加到上下文中的正确位置,更新当前的上下文生成新的上下文,最后,当收到终态标志且上下文包含了完整的数据后,分析结束并生成分析结果。

在一实施例中,所述方法还包括:

步骤50、将所述原始日志存储到分布式实时搜索引擎,将分析结果存储到数据库。

将分析结果与原始日志分别存储,方便用户在数据库中快速查询分析结果,当找到目标分析结果后,再通过分布式实时搜索引擎反向查找与分析结果相关的所有日志数据,最后可以将数据库进行数据可视化呈现。

请再参考图1至5,本发明一种计算机可读存储介质,其上存储有计算机程序(指令),该程序(指令)被处理器执行时实现以下步骤:

步骤10、获取原始日志与授时标记,将所述授时标记与所述原始日志绑定,得到授时日志;

步骤20、将所述授时日志写入消息队列缓冲;

步骤30、从所述消息队列中依次获取授时日志,分析所述授时日志的内容和依赖关系,对所述授时日志分类,并根据授时标记的先后顺序排序;

步骤40、根据业务需求选取对应分类的所述授时日志,按先后顺序进行增量分析,生成分析结果。

在一实施例中,从至少一个业务服务器(业务服务集群包括复数个业务服务器)获取原始日志,从至少一个授时服务器(授时服务集群包括复数个授时服务器)获取授时标记(uuid),将所述授时标记(uuid)与所述原始日志绑定,得到授时日志。业务服务集群与授时服务集群可以先通过统一的时间服务器进行时间同步,尽量减少服务器之间的时间差。所述至少一个业务服务器(业务服务集群包括复数个业务服务器)与至少一个授时服务器(授时服务集群包括复数个授时服务器)仅为功能上的划分,在实施中可以用不同的服务器(或服务器集群)分别实现,也可以用同一个服务器(或服务器集群)实现。

由于原始日志来源于各个服务器集群,集群之间的时间无法保证完全同步;即使服务器的时间完全是同步的,也可能会出现同一时间打印多条日志的情况,因此需要对每条日志进行授时排序。经过授时排序的日志既可以保证在服务器内是有序的,也可以保证在集群内是有序的,更关键的在于可以保证在系统全局内是有序的。

请参考图3,在一实施例中,所述步骤30具体包括:

步骤31、从所述消息队列中依次获取授时日志;

步骤32、分析所述授时日志的内容和依赖关系,得到所述授时日志对应的分类标记;

步骤33、根据所述分类标记在已有分类标记中进行查询,如果分类标记存在,则将分类标记与所述授时日志绑定,如果分类标记不存在,则新增分类标记,并与所述授时日志绑定;

步骤34、根据所述授时日志的授时标记,将绑定有相同分类标记的授时日志进行排序。

依赖关系亦称“逻辑关系”,指表示两个活动(前导活动和后续活动)中一个活动的变更将会影响到另一个活动的关系,例如:一个类使用另一个类的对象作为操作的参数,一个类用另一个类的对象作为它的数据成员,一个类向另一个类发消息等,这样的两个类之间都存在依赖关系。分布式集群之间产生的存在着依赖关系的日志,即关联日志,可以根据现有技术(比如申请号为cn200810117633.5“一种自动识别需求依赖关系的方法”或申请号为cn201410082707.1“基于数据起源依赖关系分析模型的数据依赖分析方法”)确定日志的依赖关系,然后分析日志的内容,得到该日志对应的分类标记。

在一具体实施例中,一个任务需要多个集群(a+b)完成,于是就会产生日志log-a和log-b,集群a里面,可能有多个节点,会输出日志log-a1、log-a2……log-an;集群b同理,最终输出的日志为log-a1、log-a2、……、log-an+log-b1、log-b2、……、log-bn,这些日志即为有依赖关系的关联日志。

在另一具体实施例中,日志a内容为:1001呼叫1002,分析日志a内容,得到分类标记“通话1001到1002”,此分类标记不存在,新增分类标记“通话1001到1002”,并与所述日志a绑定;日志b内容为1002接听1001的呼叫,分析日志b内容,得到分类标记“通话1001到1002”,此时该分类标记已存在,然后将分类标记“通话1001到1002”与所述日志b绑定,此时日志a与日志b即被归在同一个分类下,再根据日志a和日志b绑定的授时标记,将日志a与日志b按时间顺序排序,便于分析系统进行高效地分析处理。

请参考图4,在一实施例中,所述步骤40具体包括:

步骤41、顺序读取绑定相同分类标记的所述授时日志,提取所述授时日志的授时标记,得到原始日志;

步骤42、将所述原始日志的内容按位置关系排列,得到组合日志数据;

步骤43、判断所述组合日志数据是否完整,如果不完整,则回到步骤41,如果完整,执行步骤44;

步骤44、生成分析结果。

在具体实施过程中,根据业务场景提取分类且排好序的授时日志,初始化一个空的上下文(context),然后每获得一原始日志,就根据当前的上下文内容以及原始日志的内容进行分析,将原始日志添加到上下文中的正确位置,更新当前的上下文生成新的上下文,最后,当收到终态标志且上下文包含了完整的数据后,分析结束并生成分析结果。

在一实施例中,所述程序还执行:

步骤50、将所述原始日志存储到分布式实时搜索引擎,将分析结果存储到数据库。

将分析结果与原始日志分别存储,方便用户在数据库中快速查询分析结果,当找到目标分析结果后,再通过分布式实时搜索引擎反向查找与分析结果相关的所有日志数据,最后可以将数据库进行数据可视化呈现。

本发明具通过获取授时标记,得到授时日志,由于授时标记是有序并且不重复的,因此不仅能保证日志记录的唯一性还可以保证日志是可排序的,从而将分布式集群之间产生的并发日志变为有序的日志,便于分析系统进行高效地分析处理;利用一种分类、增量式分析的方法来处理关联日志,从而使得分布式系统产生的海量关联数据可以并发高效的进行实时分析。

虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

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