一种分布式日志的归档方法、装置、电子设备和存储介质与流程
本技术涉及大数据处理,更具体地说,涉及一种分布式日志的归档方法、装置、电子设备和存储介质。
背景技术:
1、随着大数据、大型分布式系统以及云原生服务的大规模普及,日志数据的规模和多样性呈爆炸式增长。在现代互联网、云服务、金融、电商和监控系统中,大量日志数据不断产生,这些日志既包括文本格式,也包括二进制格式,具有高吞吐、连续不断、来源分散等特点。日志数据不仅是故障排查的重要依据,同时也是性能分析、业务指标提取、用户行为分析、安全审计等多项关键任务的基础。因此,高效、稳定、可扩展的日志采集与归档处理机制已成为支撑业务运行与运维分析的重要基础设施。
2、现有技术中,主流日志采集系统如apache flume等,通常采用“生产者-管道-消费者”的架构,将日志从源端收集、规范化处理后传输至后端存储系统如hdfs(hadoopdistributed file system)。以flume为例,其通过source组件从数据源采集事件,通过channel进行缓冲,再通过sink组件将事件发送至目标存储系统。
3、在上述“生产者-管道-消费者”架构中,日志从生产者进入管道,再由消费者写入存储系统时,归档目录的生成规则通常与消费处理时间或消息队列的偏移量顺序绑定,而非与日志内容中的实际生成时间绑定。这样一来,日志归档目录一般由消费处理时间决定而非日志真实生成时间,这样使得日志产生目录错归和历史数据混写,从而会导致对日志的查询性能下降及离线修复困难等一系列问题。
技术实现思路
1、有鉴于此,本技术提供一种分布式日志的归档方法、装置、电子设备和存储介质,用于解决目前在对日志进行归档时目录错归和历史数据混写的问题,以避免产生查询性能下降及离线修复困难等一系列问题。
2、为了实现上述目的,现提出的方案如下:
3、一种分布式日志的归档方法,应用于电子设备,所述归档方法包括步骤:
4、从待归档的日志的内容中提取日志生成时间,并基于所述日志生成时间构建时间索引;
5、以所述时间索引中的日志生成时间为归档驱动因子,确定所述日志在分布式文件系统中的目标归档目录路径;
6、根据所述目标归档目录路径,将所述日志写入对应的归档文件。
7、可选的,所述从待归档的日志的内容中提取日志生成时间,并基于所述日志生成时间构建时间索引,包括:
8、通过可嵌套规则解析树对所述日志进行多级解析,按深度优先顺序执行处理器链,直至匹配到时间字段;
9、将匹配到的时间字段按指定格式转换为标准时间戳,作为所述日志生成时间;
10、将所述日志生成时间与日志元数据、日志体数据封装为统一事件结构,并以所述日志生成时间作为独立索引字段构建所述时间索引。
11、可选的,所述以所述时间索引中的日志生成时间为归档驱动因子,确定所述日志在分布式文件系统中的目标归档目录路径,包括:
12、通过时间驱动目录映射函数将所述日志生成时间和目录粒度参数映射为所述目标归档目录路径。
13、可选的,所述将所述日志写入对应的归档文件,包括:
14、计算系统当前时间与所述日志生成时间之间的偏差值;
15、当所述偏差值小于等于第一阈值时,将所述日志写入实时目录;
16、当所述偏差值大于所述第一阈值且小于等于第二阈值时,将所述日志写入历史目录;
17、当所述偏差值大于所述第二阈值时,将所述日志写入隔离目录。
18、可选的,还包括以下步骤中的至少一个:
19、通过时间窗口句柄调度算法对所述归档文件的文件句柄进行管理;
20、将同一kafka主题的全部分区划分为若干分区组,每个所述分区组由独立的进程负责,在每个所述进程内部,为所负责的每个所述分区创建唯一的消费线程,使所述消费线程与所述分区一一绑定;
21、将文本日志和二进制日志统一转换为包含日志生成时间字段的统一事件结构,进入同一归档控制流程。
22、可选的,所述通过时间窗口句柄调度算法对所述归档文件的文件句柄进行管理,包括:
23、为每个所述目标归档目录维护一个文件句柄及其状态,所述状态包括打开状态、空闲状态和关闭状态;
24、根据当前时间与上次写入时间的差值,在所述打开状态、所述空闲状态和所述关闭状态之间进行状态迁移;
25、当所述差值超过空闲关闭阈值时,自动关闭所述文件句柄;
26、以及,根据当前时间与文件句柄创建时间的差值,当所述差值超过强制滚动阈值且所述状态为打开状态时,强制关闭当前文件句柄并创建新的文件句柄。
27、一种分布式日志的归档装置,应用于电子设备,所述归档装置包括:
28、时间提取模块,被配置为从待归档的日志的内容中提取日志生成时间,并基于所述日志生成时间构建时间索引;
29、路径确定模块,被配置为以所述时间索引中的日志生成时间为归档驱动因子,确定所述日志在分布式文件系统中的目标归档目录路径;
30、归档执行模块,被配置为根据所述目标归档目录路径,将所述日志写入对应的归档文件。
31、可选的,还包括:
32、句柄管理模块,被配置为通过时间窗口句柄调度算法对所述归档文件的文件句柄进行管理;
33、分区绑定模块,被配置为将同一kafka主题的全部分区划分为若干分区组,每个所述分区组由独立的进程负责,在每个所述进程内部,为所负责的每个所述分区创建唯一的消费线程,使所述消费线程与所述分区一一绑定;
34、和/或,
35、结构转换模块,被配置为将文本日志和二进制日志统一转换为包含日志生成时间字段的统一事件结构,进入同一归档控制流程。
36、一种电子设备,所述电子设备包括至少一个处理器和与所述处理器连接的存储器,其中:
37、所述存储器用于存储计算机程序或指令;
38、所述处理器用于执行所述计算机程序或指令,以使所述电子设备实现如上所述的归档方法。
39、一种计算机可读的存储介质,应用于电子设备,所述存储介质承载有一个或多个计算机程序,所述一个或多个计算机程序能够被所述电子设备执行,从而使所述电子设备实现如上所述的归档方法。
40、从上述的技术方案可以看出,本技术公开了一种分布式日志的归档方法、装置、电子设备和存储介质,该方法和装置应用于电子设备,具体为从待归档的日志的内容中提取日志生成时间,并基于所述日志生成时间构建时间索引;以所述时间索引中的日志生成时间为归档驱动因子,确定所述日志在分布式文件系统中的目标归档目录路径;根据所述目标归档目录路径,将所述日志写入对应的归档文件。通过以上操作,本技术实现了消费顺序与归档路径的完全解耦,日志归档目录由日志真实生成时间决定而非消费处理时间,从根本上解决了目录错归和历史数据混写的问题,从而避免了产生查询性能下降及离线修复困难等一系列问题。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com