CN112527758B - 一种高可用的日志采集和传输方法 - Google Patents
一种高可用的日志采集和传输方法 Download PDFInfo
- Publication number
- CN112527758B CN112527758B CN202011414342.XA CN202011414342A CN112527758B CN 112527758 B CN112527758 B CN 112527758B CN 202011414342 A CN202011414342 A CN 202011414342A CN 112527758 B CN112527758 B CN 112527758B
- Authority
- CN
- China
- Prior art keywords
- log file
- log
- segment
- file segment
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/069—Management of faults, events, alarms or notifications using logs of notifications; Post-processing of notifications
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种高可用的日志采集与传输方法,其特征在于,在日志传输过程中,通过记录日志文件传输的位置,通过记录的位置信息判断文件传输传输位置和接收的位置。在每个传输节点进行传输信息确认,失败了则会再次传输,成功后继续读取后面的内容进行传输。在发送到网络上之前,会对即将传输的信息进行压缩,压缩完毕后传输到消息队列中。解决了日志在采集和传输过程中不丢失不重复这一难题,同时达到解决日志传输过程中的带宽占用多的问题的效果。
Description
技术领域
本发明涉及日志采集及传输领域,特别是涉及一种高可用的日志采集和传输方法。
背景技术
日志数据作为帮助人类决策的重要依据,是大数据处理及分析中的主要数据来源,日志采集的准确性及即时性是大数据处理过程中最关键的步骤。目前随着电商平台的用户数量与日俱增,因用户而产生的日志数量也逐渐激增,目前互联网公司大多对应用日志、访问日志及安全日志等均是分散管理,加之受限于硬盘大小的限制,导致本地存储无法实现日志存储持久化,当服务器重启或宕机后,将造成日志数据的丢失。此外,各类应用程序所产生的日志数据输出格式不统一,导致需对不同格式日志数据分门别类后,才能进行日志查阅,并依据不同格式逐一分析,这无疑增加了日志分析工作量,降低了工作效率,使日志分析工作难上加难。
目前业界比较流行的日志采集主要有Fluentd、Logstash、Flume、scribe等,虽然通过统一日志存储格式实现降低整个日志采集接入的复杂度,但仍旧无法保证日志不重复传输。特别地,以Flume为例,虽适用于大部分日常数据采集场景,但基于Flume的日志采集是非顺序性,并不能满足特殊场景对实时且顺序日志的需求。Filebeat是一个轻量级日志传输Agent,可以将指定日志转发到Logstash、Elasticsearch、Kafka、Redis等中,Filebeat占用资源少,而且安装配置简单,支持目前各类主流OS及Docker平台,然而基于Filebeat的日志采集存在延迟,无法保证数据采集的完整度。
因此,需要实现多节点的数据统一采集及顺序存储,才能更好地支持后续的日志分析工作。
发明内容
本发明所要解决的技术问题是克服现有技术的不足,提供一种高可用的日志采集与传输方法。目的是在日志传输过程中,通过记录日志文件传输的位置,通过记录的位置信息判断文件传输传输位置和接收的位置。在每个传输节点进行传输信息确认,失败了则会再次传输,成功后继续读取后面的内容进行传输。在发送到网络上之前,会对即将传输的信息进行压缩,压缩完毕后传输到消息队列中。本发明解决了日志在采集和传输过程中不丢失不重复这一难题,同时解决了日志传输过程中的带宽占用多的问题。
本发明技术方案是,一种高可用的日志采集和传输方法,具体包括:
步骤1:多宿主机器内的日志文件采集:由不止一个宿主机器组成多宿主机器,在每个宿主机器端部署一个采集***,用于实时采集日志文件,所述日志文件包含多个日志文件片段,每一个日志文件片段有唯一命名,所述命名用于标识日志文件片段隶属于的日志文件及宿主机器;采集***标识每一个日志文件片段的开始位置和结束位置,所述日志文件片段的开始位置为每个日志文件片段采集开始的位置,所述日志文件片段的结束位置为每个日志文件片段采集结束的位置;预设宿主机器采集每个日志文件时第一个采集的日志文件片段为初始日志文件片段;默认每一个日志文件中的初始日志文件片段的开始位置标识为“1”并按照采集顺序依次递增,所述日志文件片段的结束位置标识为开始位置和日志文件片段字节数之和;将同属于一个日志文件的日志文件片段按照采集顺序拼接,形成待传输的日志文件片段合集,若日志文件片段合集的大小超过预设阈值,需压缩后再执行传输至消息队列的操作;否则直接执行传输至消息队列的操作;
步骤2:通过比较日志文件片段合集的开始位置的标识与已传输的日志文件片段的文件发送位置的大小,对日志文件片段去重传输;具体为:在传输日志文件片段合集至消息队列的过程中,取日志文件片段合集中最后一个传输至消息队列的日志文件片段的结束位置为文件发送位置,定位并记录日志文件片段的文件发送位置;通过比对日志文件片段的开始位置与文件发送位置的标识大小,判断日志文件片段是否已经传入消息队列中;若日志文件片段的开始位置的标识小于文件发送位置,表示该日志文件片段已传入消息队列,则丢弃该日志文件片段;若该日志文件片段的开始位置的标识大于文件发送位置,表示该日志文件片段未传入消息队列,则将其传入消息队列中;
步骤3:在本地磁盘中查找隶属于同一个分布式文件的日志文件片段,根据日志文件片段的初始位置和结束位置的标识,依次写入分布式文件,完成无序的日志文件片段在分布式文件系中的顺序存储;具体为:数据消费端将满足数据需求的日志文件片段从消息队列中读取存入本地磁盘;扫描获取本地磁盘内的日志文件片段,根据前一个日志文件片段的结束位置与后一个日志文件片段的开始位置的标识,将隶属于同一个日志文件的日志文件片段按从小到大的顺序进行首尾拼接,并写入分布式文件***中的分布式文件中;所述分布式文件是日志文件存储在分布式文件***中的文件形式,所述分布式文件的命名与日志文件保持一致。
所述步骤1中,所述采集***在采集日志文件片段的过程中,同步统计新采集的日志文件片段在日志文件中占据的行数,当所述行数的累计值超过预设值时,将新采集的多个日志文件片段存入宿主机器本地磁盘中;待下一次采集日志文件片段时重新统计所述行数;所述消息队列为Kafka。
所述步骤1中,若压缩后的日志文件片段合集大小仍超过预设阈值,从日志文件片段合集的末位向前依次提取超出预设阈值部分的日志文件片段,拼接至下一个日志文件片段合集。
所述步骤1中,日志文件片段合集大小的预设阈值配置为600K。
所述步骤3的具体流程包括:
步骤3-1:读取新存入本地磁盘的日志文件片段,分别记录开始位置和结束位置的位置信息,存入开始位置数据集合和结束位置数据集合;在开始位置数据集合中,开始位置和日志文件片段元信息一一对应;在结束位置数据集合中,结束位置和日志文件片段元信息一一对应;所述日志文件片段元信息用于记录日志文件片段在本地磁盘的存储路径及日志文件片段名;
步骤3-2:扫描开始位置数据集合,获得日志文件中开始位置标识为“1”对应的日志文件片段,在分布式文件***中新建一个分布式文件,以该日志文件片段的命名作为分布式日志名称;按照存储路径,从本地磁盘中读取日志文件片段写入分布式文件中,以所述日志文件片段的结束位置记为新建的分布式文件的结束位置;在开始位置数据集合和结束位置数据集合中删除该日志文件片段的位置信息,继续执行步骤3-3;
若没有获得日志文件中开始位置标识为“1”对应的日志文件片段,获取分布式文件***中的分布式文件名及对应的分布式文件的结束位置,在开始位置数据集合中扫描获取与分布式文件命名一致的日志文件片段,若存在该日志文件片段,执行步骤3-4;若不存在,等待下一次步骤3-2的扫描;
步骤3-3:根据新建的分布式文件的结束位置,在开始位置数据集合中继续扫描,判断是否存在开始位置的标识排在分布式文件的结束位置后一位的日志文件片段;若存在,提取该日志文件片段写入分布式文件中,并拼接在分布式文件的尾部,更新分布式文件的结束位置;若不存在,等待下次步骤3-2的扫描;
步骤3-4:在获取的日志文件片段中,根据开始位置的标识,判断是否存在能拼接在分布式文件的结束位置的日志文件片段,若存在,根据日志文件片段元信息指明的存储路径,从本地磁盘中提取日志文件片段写入分布式文件中,拼接在分布式文件的尾部,更新分布式文件的结束位置;从开始位置数据集合和结束位置数据集合中删除该日志文件片段的位置信息;若不存在,保留日志文件片段在本地磁盘中,等待下次步骤3-2扫描。
在所述步骤3-1中,所述开始位置数据集合以Key-Value数据结构存储日志文件片段和对应的开始位置,其中Key为开始位置,Value是日志文件片段元信息;所述结束位置数据集合以Key-Value数据结构存储日志文件片段和对应的结束位置,其中key为结束位置,Value是日志文件片段元信息。
本发明所达到的有益效果:
(1)本发明标注日志文件片段的开始位置和初始位置,以位置信息作为传输重复校验的依据,通过比对前后日志文件片段的结束位置及开始位置的大小,保证日志在采集和传输过程中的不丢失和不重复;
(2)本发明在日志存储过程中,以本地磁盘作为临时存储区,通过比对本地磁盘内日志文件片段的开始位置和日志文件的结束位置,从本地磁盘中按采集顺序存入分布式***中,实现日志有序存储,保证了日志的时序及信息能够按照原有的生成顺序落盘到分布式文件***;
(3)本发明通过将采集的多个日志文件片段压缩后传输,节省传输过程中的网络带宽;同时通过临时存储采集的多个日志文件片段,保证在网络中断等恶劣情况导致的日志丢失;
(4)本发明的日志采集和传输***无完全中心节点,能够进行横向扩展,有效应对业务日志的快速膨胀等情形。
附图说明
图1为本发明实施例中一种高可用的日志采集和传输方法实现流程图;
图2为本发明实施例中日志文件片段采集流程图;
图3为本发明实施例中日志文件片段示意图;
图4为本发明实施例中日志文件片段去重传输流程示意图;
图5为本发明实施例中日志文件片段顺序存储流程示意图;
图6为本发明实施例中一种高可用的日志采集和传输***结构示意图;
图7为本发明实施例中日志文件片段从采集至顺序存储的结构示意图。
具体实施方式
下面结合附图和示例性实施例对本发明作进一步的说明。
图1为本发明实施例中一种高可用的日志采集和传输方法实现流程图,在本发明实施例中,所述日志文件由多个日志文件片段拼接形成,所述日志文件片段标识初始位置和结束位置;在一个日志文件中,下一个日志文件片段的开始位置=上一个日志文件片段的结束位置+1;日志文件的位置从“1”开始编码,即默认所有日志文件开始位置均为“1”。具体包括:
步骤101:多宿主机器内的日志文件采集,将采集的日志文件分批存至本地磁盘,如图2所示,具体有:
步骤101-1:宿主机器端的采集***实时采集日志文件包含的多个日志文件片段,参阅图3,在采集过程中标识每一个日志文件片段的开始位置和结束位置,比如日志文件片段A1,标识开始位置“a-1”,结束位置“a-4”。同时以“宿主机器IP和文件片段的索引节点”唯一命名,所述索引节点指向文件片段元信息的存储;比如Linux***的inode,所述文件片段元信息是用于包含文件的创建者、文件的创建日期、文件的大小等描述日志文件片段的信息。
在本发明实施例,所述日志文件由多个日志文件片段拼接形成,所述日志文件片段标识初始位置和结束位置;在一个日志文件中,下一个日志文件片段的开始位置等于上一个日志文件片段的结束位置加1;日志文件的位置从“1”开始编码,即默认所有日志文件开始位置均为“1”;图3为本发明实施例中日志文件片段示意图;日志A由5个日志文件片段组成,即A1、A2、A3、A4、A5;第一个日志文件片段A1的开始位置为1,以“a-1”表示,A1的结束位置为4,以“a-4”表示;第二个日志文件片段A2的开始位置为5,即在A1结束位置的基础上加1;则或有a-1~a-4、a-5~a-7、a-8~a-11、a-12~a-15、a-12~a-15;其中,以第一个日志文件片段A1为例,a-1为日志文件片段的开始位置,a-4为日志文件片段的结束位置,第二个日志文件片段的开始位置为第一个日志文件片段的结束位置加1,即a-5;
步骤101-2:日志采集过程中,以行为单位采集,当采集的日志行数达到100时,将采集到的100个日志文件片段存入本地磁盘;
步骤101-3:将宿主机器产生并落入本地磁盘的多个日志文件片段按采集顺序拼接,形成待传输的日志文件片段,计算待传输日志文件片段大小;若拼接形成的待传输文件片段大小超过600K时,执行步骤101-4,否则执行101-5;由于阈值过大,将造成传输***的传输压力;阈值过小,则不利于带宽的节省,经过实践,选定为600K既可以保证***效率又不会造成带宽浪费,最合适当前应用环境。
步骤101-4:若拼接形成的待传输文件片段大小超过600K时,压缩待传输文件片段后再计算文件片段大小,若小于600K,执行步骤101-5;若大于600K,按照日志采集的先后顺序,从后往前逐个减少采集的日志文件片段,再重新计算待传输文件片段大小,直至待传输文件片段大小小于600K时,执行步骤101-5;
步骤101-5:执行传输至消息队列Kafaka的操作;
在本发明实施例中,以日志文件A的日志文件片段A1、A2及A3为例,当新采集的3个日志文件片段落入宿主机器本地磁盘时,拼接A1、A2及A3,计算拼接后的日志文件片段大小,若未超过600K,A1、A2及A3拼接传输,此时日志文件片段的开始位置为“a-1”,结束位置为“a-11”;若超过600K,拼接A1和A2,再计算大小,若未超过600K,A1和A2拼接传输,此时日志文件片段的开始位置为“a-1”,结束位置为“a-7”。
步骤102:通过比较待传输日志文件片段的开始位置与已传输文件片段的文件发送位置之间的大小,对日志文件片段去重传输,如图4所示,具体有具体为:
步骤102-1:在传输至消息队列Kafaka的过程中,定位并记录日志文件片段的文件发送位置,取最后一个传输至消息队列Kafka的文件片段的结束位置为文件发送位置;
步骤102-2:根据待传输日志文件片段的开始位置小于文件发送位置,判断待传输日志文件片段是否已经传入消息队列中;若待传输日志文件片段的开始位置小于文件发送位置,转步骤102-3;若待传输日志文件片段的开始位置大于文件发送位置,转步骤102-4;
步骤102-3:表示待传输日志文件片段已传入消息队列,丢弃待传输日志文件片段;
步骤102-4:表示待传输日志文件片段未传入消息队列,将此日志文件片段传入消息队列Kafaka中;
步骤103:根据日志文件片段的初始位置和结束位置,依次拼接完成在分布式文件***Hdfs中的顺序存储:数据消费端将满足数据需求的日志文件片段从消息队列中读取存入本地磁盘;由于读取至消费端本地磁盘的日志文件片段是无序性,因此以本地磁盘作为中间存储,将本次磁盘内的日志文件片段顺序地存入分布式文件***,最终形成落入分布式***的有序且完整的日志文件。
如图5所示,具体步骤包括:
步骤103-1:读取新存入消费端本地磁盘的日志文件片段的位置信息,记录日志文件片段的位置信息,具体为将每个日志文件片段的开始位置和结束位置分别记入开始位置数据集合和结束位置数据集合;
开始位置数据集合结束位置数据集合在所述开始位置数据集合中,所述日志文件片段元信息和开始位置一一对应;在结束位置数据集合中,所述日志文件片段元信息和结束位置一一对应;
以Key-Value数据结构存储日志文件片段和对应的开始位置,形成开始位置数据集合;其中Key为开始位置,Value是日志文件片段元信息;所述日志文件片段元信息用于记录日志文件片段在本地磁盘的存储路径及日志文件片段名;
以Key-Value数据结构存储日志文件片段和对应的结束位置,形成结束位置结合;其中key为结束位置,Value是日志文件片段元信息;所述日志文件片段元信息用于记录日志文件片段在本地磁盘的存储路径、日志文件片段名;
步骤103-2:扫描检查是否存有初始的日志文件片段:扫描开始位置数据集合,检查开始位置数据集合中是否存有日志文件的第一个日志文件片段的开始位置,即“1”;若存在日志文件的第一个日志文件片段,获取日志文件开始位置对应的日志文件片段名称,执行步骤103-3,若不存在日志文件的第一个日志文件片段,即没有发现日志文件开始位置对应的日志文件片段,扫描获取分布式文件***中的分布式文件,执行步骤103-4;
步骤103-3:将初始的日志文件片段写入新建的分布式文件并更新分布式文件位置:在分布式文件***中新建一个分布式文件,以日志文件片段名称作为分布式日志名称;按照存储路径,从本地磁盘中提取日志文件片段写入分布式文件中,从结束位置数据集合中获取该日志文件片段的结束位置,记所述日志文件片段的结束位置为分布式文件的结束位置;开始位置数据集合和结束位置数据集合中删除该日志文件片段的位置信息,继续执行步骤3-5;
步骤103-4:本地磁盘内查找是否存有隶属于分布式文件的日志文件片段:获取分布式文件***中的分布式文件名及对应的分布式文件结束位置,在开始位置数据集合中扫描是否存在与分布式文件命名一致的日志文件片段,如存在,执行步骤103-6;若不存在,继续执行103-2的扫描;
步骤103-5:本地磁盘内继续查找是否存在拼接在分布式文件尾部的日志文件片段:根据分布式文件的结束位置,在开始位置数据集合中继续扫描,判断是否存在开始位置为分布式文件结束位置加“1”的日志文件片段;如若存在,提取所述日志文件片段写入分布式文件中,并拼接在分布式文件中上一个日志文件片段的尾部,更新分布式文件结束位置为写入的日志文件片段结束位置,继续执行步骤103-6;若不存在开始位置为分布式文件结束位置加“1”的日志文件片段,继续保留本地磁盘的日志文件片段,执行103-2;
步骤103-6:将本地磁盘的日志文件片段拼接在分布式文件尾部:从本地磁盘中提取日志文件片段写入分布式文件中,并拼接在分布式文件中上一个日志文件片段的尾部,更新分布式文件的结束位置为入的日志文件片段结束位置;从开始位置数据集合和结束位置数据集合中删除该日志文件片段的位置信息。
图6为本发明实施例中一种高可用的日志采集和传输***结构示意图,具体包括由宿主机器1、宿主机器2宿主机器端、消息队列Kafka、由数据消费端1、数据消费端2和数据消费端3组成的数据消费端、分布式文件***;其中宿主机器1和宿主机器2均内配有采集***和传输***,所述采集***用于采集由宿主机器产生的日志文件片段及标识日志文件片段的开始和结束位置;所述传输***用于日志文件片段传输前的重复性校验及控制日志文件片段传输至消息队列Kafaka;数据消费端1、数据消费端2和数据消费端3均包含本地磁盘及文件读取***,所述本地磁盘用于存储从消息队列订阅获取的数据;所述文件读取***,用于获取数据消费端本地磁盘内存储的日志片段,并控制日志文件片段按顺序地存入分布式文件***;所述消息队列Kafaka为日志文件片段的传输节点,用于连接宿主机器端和数据消费端;本发明实施中以kafka作为消息队列。
由采集***实时采集的日志文件片段经传输***,发送至消息队列Kafaka中;数据消费端根据数据需求,从消息队列中订阅并获取相应的数据存储至本地磁盘;由于读取至消费端本地磁盘的日志文件片段是无序性,因此以本地磁盘作为中间存储,将本地磁盘内的日志文件片段按照位置信息,顺序地存入分布式文件***,最终在分布式文件***内形成完整的日志文件。
图7为本发明实施例中日志文件片段顺序存储的过程,日志文件片段经宿主机器本地磁盘、消息队列Kafka、数据消费端本地磁盘,最后落入分布式文件***,完成日志文件片段的顺序存储,其中,数据消费端本地磁盘只作为日志文件片段的临时存储区域。
本发明所达到的有益效果:
(1)本发明标注日志文件片段的开始位置和初始位置,以位置信息作为传输重复校验的依据,通过比对前后日志文件片段的结束位置及开始位置的大小,保证日志在采集和传输过程中的不丢失和不重复;
(2)本发明在日志存储过程中,以本地磁盘作为临时存储区,通过比对本地磁盘内日志文件片段的开始位置和日志文件的结束位置,从本地磁盘中按采集顺序存入分布式***中,实现日志有序存储,保证了日志的时序及信息能够按照原有的生成顺序落盘到分布式文件***;
(3)本发明通过将采集的多个日志文件片段压缩后传输,节省传输过程中的网络带宽;同时通过临时存储采集的多个日志文件片段,保证在网络中断等恶劣情况导致的日志丢失;
(4)本发明的日志采集和传输***无完全中心节点,能够进行横向扩展,有效应对业务日志的快速膨胀等情形。
以上实施例不以任何方式限定本发明,凡是对以上实施例以等效变换方式做出的其它改进与应用,都属于本发明的保护范围。
Claims (6)
1.一种高可用的日志采集和传输方法,其特征在于,具体步骤包括:
步骤1:多宿主机器内的日志文件采集:由不止一个宿主机器组成多宿主机器,在每个宿主机器端部署一个采集***,用于实时采集日志文件,所述日志文件包含多个日志文件片段,每一个日志文件片段有唯一命名,所述命名用于标识日志文件片段隶属于的日志文件及宿主机器;采集***标识每一个日志文件片段的开始位置和结束位置,所述日志文件片段的开始位置为每个日志文件片段采集开始的位置,所述日志文件片段的结束位置为每个日志文件片段采集结束的位置;预设宿主机器采集每个日志文件时第一个采集的日志文件片段为初始日志文件片段;默认每一个日志文件中的初始日志文件片段的开始位置标识为“1”并按照采集顺序依次递增,所述日志文件片段的结束位置标识为开始位置和日志文件片段字节数之和;将同属于一个日志文件的日志文件片段按照采集顺序拼接,形成待传输的日志文件片段合集,若日志文件片段合集的大小超过预设阈值,需压缩后再执行传输至消息队列的操作;否则直接执行传输至消息队列的操作;
步骤2:通过比较日志文件片段合集的开始位置的标识与已传输的日志文件片段的文件发送位置的大小,对日志文件片段去重传输;具体为:在传输日志文件片段合集至消息队列的过程中,取日志文件片段合集中最后一个传输至消息队列的日志文件片段的结束位置为文件发送位置,定位并记录日志文件片段的文件发送位置;通过比对日志文件片段的开始位置与文件发送位置的标识大小,判断日志文件片段是否已经传入消息队列中;若日志文件片段的开始位置的标识小于文件发送位置,表示该日志文件片段已传入消息队列,则丢弃该日志文件片段;若该日志文件片段的开始位置的标识大于文件发送位置,表示该日志文件片段未传入消息队列,则将其传入消息队列中;
步骤3:在本地磁盘中查找隶属于同一个分布式文件的日志文件片段,根据日志文件片段的初始位置和结束位置的标识,依次写入分布式文件,完成无序的日志文件片段在分布式文件系中的顺序存储;具体为:数据消费端将满足数据需求的日志文件片段从消息队列中读取存入本地磁盘;扫描获取本地磁盘内的日志文件片段,根据前一个日志文件片段的结束位置与后一个日志文件片段的开始位置的标识,将隶属于同一个日志文件的日志文件片段按从小到大的顺序进行首尾拼接,并写入分布式文件***中的分布式文件中;所述分布式文件是日志文件存储在分布式文件***中的文件形式,所述分布式文件的命名与日志文件保持一致。
2.如权利要求1所述的一种高可用的日志采集和传输方法,其特征在于:所述步骤1中,所述采集***在采集日志文件片段的过程中,同步统计新采集的日志文件片段在日志文件中占据的行数,当所述行数的累计值超过预设值时,将新采集的多个日志文件片段存入宿主机器本地磁盘中;待下一次采集日志文件片段时重新统计所述行数;所述消息队列为Kafka。
3.如权利要求2所述的一种高可用的日志采集和传输方法,其特征在于:所述步骤1中,若压缩后的日志文件片段合集大小仍超过预设阈值,从日志文件片段合集的末位向前依次提取超出预设阈值部分的日志文件片段,拼接至下一个日志文件片段合集。
4.如权利要求3所述的一种高可用的日志采集和传输方法,其特征在于:所述步骤1中,日志文件片段合集大小的预设阈值配置为600K。
5.如权利要求4所述的一种高可用的日志采集和传输方法,其特征在于:所述步骤3的具体流程包括:
步骤3-1:读取新存入本地磁盘的日志文件片段,分别记录开始位置和结束位置的位置信息,存入开始位置数据集合和结束位置数据集合;在开始位置数据集合中,开始位置和日志文件片段元信息一一对应;在结束位置数据集合中,结束位置和日志文件片段元信息一一对应;所述日志文件片段元信息用于记录日志文件片段在本地磁盘的存储路径及日志文件片段名;
步骤3-2:扫描开始位置数据集合,获得日志文件中开始位置标识为“1”对应的日志文件片段,在分布式文件***中新建一个分布式文件,以该日志文件片段的命名作为分布式日志名称;按照存储路径,从本地磁盘中读取日志文件片段写入分布式文件中,以所述日志文件片段的结束位置记为新建的分布式文件的结束位置;在开始位置数据集合和结束位置数据集合中删除该日志文件片段的位置信息,继续执行步骤3-3;
若没有获得日志文件中开始位置标识为“1”对应的日志文件片段,获取分布式文件***中的分布式文件名及对应的分布式文件的结束位置,在开始位置数据集合中扫描获取与分布式文件命名一致的日志文件片段,若存在该日志文件片段,执行步骤3-4;若不存在,等待下一次步骤3-2的扫描;
步骤3-3:根据新建的分布式文件的结束位置,在开始位置数据集合中继续扫描,判断是否存在开始位置的标识排在分布式文件的结束位置后一位的日志文件片段;若存在,提取该日志文件片段写入分布式文件中,并拼接在分布式文件的尾部,更新分布式文件的结束位置;若不存在,等待下次步骤3-2的扫描;
步骤3-4:在获取的日志文件片段中,根据开始位置的标识,判断是否存在能拼接在分布式文件的结束位置的日志文件片段,若存在,根据日志文件片段元信息指明的存储路径,从本地磁盘中提取日志文件片段写入分布式文件中,拼接在分布式文件的尾部,更新分布式文件的结束位置;从开始位置数据集合和结束位置数据集合中删除该日志文件片段的位置信息;若不存在,保留日志文件片段在本地磁盘中,等待下次步骤3-2扫描。
6.如权利要求5所述的一种高可用的日志采集和传输方法,其特征在于:在所述步骤3-1中,所述开始位置数据集合以Key-Value数据结构存储日志文件片段和对应的开始位置,其中Key为开始位置,Value是日志文件片段元信息;所述结束位置数据集合以Key-Value数据结构存储日志文件片段和对应的结束位置,其中key为结束位置,Value是日志文件片段元信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011414342.XA CN112527758B (zh) | 2020-12-03 | 2020-12-03 | 一种高可用的日志采集和传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011414342.XA CN112527758B (zh) | 2020-12-03 | 2020-12-03 | 一种高可用的日志采集和传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112527758A CN112527758A (zh) | 2021-03-19 |
CN112527758B true CN112527758B (zh) | 2022-07-15 |
Family
ID=74997764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011414342.XA Active CN112527758B (zh) | 2020-12-03 | 2020-12-03 | 一种高可用的日志采集和传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112527758B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102246545A (zh) * | 2008-12-15 | 2011-11-16 | 高通股份有限公司 | 位置日志录入以及基于位置和时间的过滤 |
US20140101106A1 (en) * | 2012-10-09 | 2014-04-10 | Hon Hai Precision Industry Co., Ltd. | Log server and log file storage method |
CN106452819A (zh) * | 2015-08-13 | 2017-02-22 | 腾讯科技(深圳)有限公司 | 数据采集***及数据采集方法 |
-
2020
- 2020-12-03 CN CN202011414342.XA patent/CN112527758B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102246545A (zh) * | 2008-12-15 | 2011-11-16 | 高通股份有限公司 | 位置日志录入以及基于位置和时间的过滤 |
US20140101106A1 (en) * | 2012-10-09 | 2014-04-10 | Hon Hai Precision Industry Co., Ltd. | Log server and log file storage method |
CN106452819A (zh) * | 2015-08-13 | 2017-02-22 | 腾讯科技(深圳)有限公司 | 数据采集***及数据采集方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112527758A (zh) | 2021-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110147411B (zh) | 数据同步方法、装置、计算机设备及存储介质 | |
CN110569214B (zh) | 用于日志文件的索引构建方法、装置及电子设备 | |
CN104125163B (zh) | 一种数据处理方法、装置及终端 | |
CN105824744A (zh) | 一种基于b2b平台的实时日志采集分析方法 | |
CN111555963A (zh) | 消息推送方法、装置、电子设备及存储介质 | |
CN107463692B (zh) | 超大文本数据同步到搜索引擎的方法和*** | |
CN104584524A (zh) | 聚合中介***中的数据 | |
CN109522316A (zh) | 日志处理方法、装置、设备和存储介质 | |
CN111694800A (zh) | 一种提升数据同步性能的方法和数据同步*** | |
CN112925759B (zh) | 数据文件的处理方法和装置、存储介质、电子装置 | |
CN112632008A (zh) | 一种数据分片的传输方法、装置及计算机设备 | |
CN114968966A (zh) | 分布式元数据远程异步复制方法、装置和设备 | |
CN106990914B (zh) | 数据删除方法及装置 | |
CN116340055A (zh) | 一种固态硬盘的数据恢复方法及*** | |
CN111198885A (zh) | 数据的处理方法及装置 | |
CN117156172B (zh) | 视频切片上报方法、***、存储介质及计算机 | |
CN114490869A (zh) | 一种数据同步方法、装置、数据源端、目标端及存储介质 | |
CN112527758B (zh) | 一种高可用的日志采集和传输方法 | |
CN115801765A (zh) | 文件传输方法、装置、***、电子设备及存储介质 | |
CN111061719B (zh) | 数据收集方法、装置、设备和存储介质 | |
CN112395296A (zh) | 一种大数据归档方法、装置、设备及存储介质 | |
CN111143280B (zh) | 一种数据调度方法、***、装置及存储介质 | |
CN111241036A (zh) | 一种异步io数据处理方法、装置、设备及介质 | |
CN113064869B (zh) | 日志处理方法、装置、发送端、接收端设备及存储介质 | |
CN117111843B (zh) | 基于人工智能的自适应分布式存储资源调度平台 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |