一种基于akka框架的云原生日志收集方法和系统技术方案

技术编号:35431738 阅读:20 留言:0更新日期:2022-11-03 11:36
本发明专利技术公开了一种基于akka框架的云原生日志收集方法和系统,所述方法包括:构建akka框架的日志同步服务,并将所述日志同步服务植入到应用容器中,利用akka框架的actor模型构建日志事件传递方法;利用所述akka框架的actor模型监控系统日志事件,并判断是否存在新增日志事件;构建文件队列,监控的日志事件判断当前存在新增日志事件的文件名是否存在于所述文件队列中,若存在于所述文件队列中,则将所述文件名放入到所述文件队列中;所述方法通过判断云日志中新增日志事件的文件名是否在所述文件修改队列中,若存在则将新增的日志同步到数据库,否则释放否则释放空闲资源和链接,从而大幅降低日志收集系统的资源消耗。从而大幅降低日志收集系统的资源消耗。从而大幅降低日志收集系统的资源消耗。

【技术实现步骤摘要】
一种基于akka框架的云原生日志收集方法和系统


[0001]本专利技术涉及日志收集
,特别涉及一种基于akka框架的云原生日志收集方法和系统。

技术介绍

[0002]目前云原生场景下通过spark on kubernetes, flink on kubernetes产生日志,存在于kubernetes 容器中,产生的日志将随着容器结束而清除。针对上述云原生场景下的现有日志收集方法和系统主要为elasticSearch + logstash + kibana架构的技术方案,上述在云原生场景下的日志收集系统架构中logstash需要占用大量的资源从而使得架构比较沉重,由于logstash缺少消息队列缓存,从而容易导致数据丢失,现有技术系统中需要维护多个服务,并且通过上述现有技术收集到日志时,后续通过kibana进行查询时无法保证查询结果的顺序。

技术实现思路

[0003]本专利技术其中一个专利技术目的在于提供一种基于akka框架的云原生日志收集方法和系统,所述方法和系统在系统内部配置了调度任务,并且配置以文件名为匹配对象的的文件队列,通过判断云日志中新增日志事件的文件名是否在所述文件修改队列中,若存在则将新增的日志的同步到HDFS中,否则释放空闲资源和链接,从而大幅降低日志收集系统的资源消耗。
[0004]本专利技术另一个专利技术目的在于提供一种基于akka框架的云原生日志收集方法和系统,所述方法和系统设置的文件队列设置了超时事件,若当前当前文件在原生云中超过预设时间阈值未生成修改文件事件的日志,则直接触发超时事件,将之前建立的当前文件和HDFS的链接和文件描述符释放,并将当前文件移出所述文件队列,从而大幅降低日志收集系统的资源占用。
[0005]本专利技术另一个专利技术目的在于提供一种基于akka框架的云原生日志收集方法和系统,所述方法和系统监控文件的父目录,对于父目录可以被看成是文件路径,针对父目录下文件所发生的修改日志进行增量队列同步,因此在避免传统的logstash缺少消息队列缓存,从而容易导致数据丢失同时,还可以因为仅监控文件路径而实现无入侵的方式进行日志同步。
[0006]本专利技术另一个专利技术目的在于提供一种基于akka框架的云原生日志收集方法和系统,所述方法和系统采用固定大小的缓冲区数据流处理的方式进行日志同步,并且用换行符将文件以行为粒度切割到HDFS中,从而实现低延迟的日志同步操作。
[0007]为了实现至少一个上述专利技术目的,本专利技术进一步提供一种基于akka框架的云原生日志收集方法,所述方法包括:构建akka框架的日志同步服务,并将所述日志同步服务植入到应用容器中,利用akka框架的actor模型构建日志事件传递方法;
利用所述akka框架的actor模型监控系统日志事件,并判断是否存在新增日志事件;在系统内部构建文件队列,监控的日志事件判断当前存在新增日志事件的日志文件名是否存在于所述文件队列中,若存在于所述文件队列中,执行对应日志文件的同步,否则将所述日志文件名放入到所述文件队列中;创建Hadoop Configuration对象,并根据所述Hadoop Configuration对象Hadoop文件系统并将Hadoop Configuration对象传入到Hadoop文件系统中;利用Akka HdfsFlow连接HDFS,创建用于日志文件传输的数据管道,执行每一变化文件日志同步到HDFS中。
[0008]根据本专利技术其中一个较佳实施例,所述文件队列根据监控到的新增日志事件进行内部调度,所述内部调度方法包括:利用actor模型监控每一日志事件,并根据监控到的日志事件识别存在文件行为目标文件的日志文件名,将所述目标文件的日志文件名和预先构建的文件队列进行匹配,若匹配到所述文件队列中存在所述目标文件的日志文件名,则执行当前目标文件日志的同步操作。
[0009]根据本专利技术另一个较佳实施例,若利用所述actor模型监控到每一日志事件并识别日志事件对应的目标文件的日志文件名后,在所述文件队列中不存在所述目标文件的日志文件名,则将所述目标文件的日志文件名放入到所述文件队列中,进一步将所述文件队列中的目标文件日志执行同步操作。
[0010]根据本专利技术另一个较佳实施例,所述内部调度操作还包括:在系统内部设置超时阈值,计算当前目标文件日志文件名在所述文件队列中的时长,若利用所述actor模型监控到目标文件名新日志事件的时间超过所述超时阈值,则触发超时事件,进一步将所述目标文件日志文件名移出所述文件队列,且释放当前文件和HDFS的链接,并释放所述目标文件的文件描述符。
[0011]根据本专利技术另一个较佳实施例,所述内部调度方法包括:在系统内部维护一个多层级的文件结构,并通过Akka Flow的file

monitor监听所述多层级的文件结构的父级目录,若当前父级目录下文件存在变化,则根据所述父级目录下对应目标文件的文件路径识别变化的目标文件日志文件名,并将所述目标文件日志文件名和对应的文件队列匹配。
[0012]根据本专利技术另一个较佳实施例,所述日志同步传输方法包括:利用所述Akka Flow获取存在变化的目标日志数据流,将所述目标日志数据流存储到固定大小的缓冲区,利用换行符将缓冲去的目标日志数据流进行切割,切割后按行将所述目标日志数据流存储到所述HDFS上。
[0013]根据本专利技术另一个较佳实施例,将所述日志服务植入到应用容器中,在所述应用容器启动后,通过日志请求返回的消息判断日志服务是否就绪,在应用启动先完成所述日志服务就绪。
[0014]根据本专利技术另一个较佳实施例,在应用容器启动后,捕获kill信号,在容器接收所述kill信号后,关闭JAVA虚拟机,并且在程序结束后,使用所述kill信号关闭日志服务。
[0015]为了实现至少一个上述专利技术目的,本专利技术进一步提供一种基于akka框架的云原生日志收集系统,所述系统执行上述一种基于akka框架的云原生日志收集方法。
[0016]本专利技术进一步提供一种计算机可读存储介质,所述计算机可读存储介质存储有计
算机程序,所述计算机程序可被处理器执行上述一种基于akka框架的云原生日志收集方法。
附图说明
[0017]图1显示的是本专利技术一种基于akka框架的云原生日志收集方法的流程示意图。
[0018]图2显示的是本专利技术内部调度的流程示意图。
具体实施方式
[0019]以下描述用于揭露本专利技术以使本领域技术人员能够实现本专利技术。以下描述中的优选实施例只作为举例,本领域技术人员可以想到其他显而易见的变型。在以下描述中界定的本专利技术的基本原理可以应用于其他实施方案、变形方案、改进方案、等同方案以及没有背离本专利技术的精神和范围的其他技术方案。
[0020]可以理解的是,术语“一”应理解为“至少一”或“一个或多个”,即在一个实施例中,一个元件的数量可以为一个,而在另外的实施例中,该元件的数量可以为多个,术语“一”不能理解为对数量的限制。
[0021]请结本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于akka框架的云原生日志收集方法,其特征在于,所述方法包括:构建akka框架的日志同步服务,并将所述日志同步服务植入到应用容器中,利用akka框架的actor模型构建日志事件传递方法;利用所述akka框架的actor模型监控系统日志事件,并判断是否存在新增日志事件;在系统内部构建文件队列,监控的日志事件判断当前存在新增日志事件的日志文件名是否存在于所述文件队列中,若存在于所述文件队列中,执行对应日志文件的同步,否则将所述日志文件名放入到所述文件队列中;创建Hadoop Configuration对象,并根据所述Hadoop Configuration对象Hadoop文件系统并将Hadoop Configuration对象传入到Hadoop文件系统中;利用Akka HdfsFlow连接HDFS,创建用于日志文件传输的数据管道,执行每一个变化文件日志同步到HDFS中。2.根据权利要求1所述的一种基于akka框架的云原生日志收集方法,其特征在于,所述文件队列根据监控到的新增日志事件进行内部调度,所述内部调度方法包括:利用actor模型监控每一日志事件,并根据监控到的日志事件识别存在文件行为目标文件的日志文件名,将所述目标文件的日志文件名和预先构建的文件队列进行匹配,若匹配到所述文件队列中存在所述目标文件的日志文件名,则执行当前目标文件日志的同步操作。3.根据权利要求1所述的一种基于akka框架的云原生日志收集方法,其特征在于,若利用所述actor模型监控到每一日志事件并识别日志事件对应的目标文件的日志文件名后,在所述文件队列中不存在所述目标文件的日志文件名,则将所述目标文件放入到所述文件队列中,进一步将所述文件队列中的目标文件日志执行同步操作。4.根据权利要求2所述的一种基于akka框架的云原生日志收集方法,其特征在于,所述内部调度操作还包括:在系统内部设置超时阈值,计算当前目标文件的日志文件名在所述文件队列中的时长,若利用所述actor模型监控到目标文件名新日...

【专利技术属性】
技术研发人员:王家敏陈吉平
申请(专利权)人:杭州玳数科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1