基于Redis和Logstash的数据采集方法及设备转让专利

申请号 : CN201811302690.0

文献号 : CN109492037B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 董晓斌喻波王志海董爱华安鹏

申请人 : 北京明朝万达科技股份有限公司

摘要 :

本发明提供了一种基于Redis和Logstash的数据采集方法,包括:数据接收服务器接收由外部系统推送的数据;将所述推送的数据通过所述Redis存储到文件系统中;所述Logstash从所述文件系统采集所述数据;所述Logstash将所述数据转换后发送给应用系统。利用Redis的高性能的存储机制,可以加快数据的处理,且通过不同服务的解耦操作,提高了服务的稳定性以及降低了出错的几率。

权利要求 :

1.一种基于Redis和Logstash的数据采集方法,其特征在于包括:步骤1、数据接收服务器接收由外部系统推送的数据;

步骤2、将所述推送的数据通过所述Redis存储到文件系统中;

步骤3、所述Logstash从所述文件系统采集所述数据;

步骤4、所述Logstash将所述数据转换后发送给应用系统。

2.如权利要求1所述的数据采集方法,其特征在于所述步骤2还包括:确定所述接收数据的业务类型,确定文件存储方式。

3.如权利要求2所述的采集方法,其特征在于所述步骤2还包括:对存储在内存中的数据设置第一计时器,当所述第一计时器超过设定的第一时长阈值时,则将所述数据存储到磁盘中的文件系统的文件中,并删除所述内存中的数据;

对存储在磁盘中的文件系统中的文件设置第二计时器,当所述第二计时器超过设定的第二时长阈值时,则对所述文件进行标记,生成标记文件。

4.如权利要求3所述的采集方法,其特征在于所述步骤3还包括:步骤3.1、所述Logstash包括多个读取插件,所述多个读取插件并发读取所述文件系统中的文件;

步骤3.2、当至少一个所述读取插件读取成功,则数据采集成功,并将读取的文件数据作为采集数据;否则数据采集失败。

5.如权利要求4所述的采集方法,其特征在于所述步骤4还包括:如果采集数据成功,将所述采集的数据基于所述业务类型对应的数据结构进行数据清洗和数据封装,转换为所述应用系统支持的数据格式,并通过相应的转发插件,发送给所述应用系统。

6.如权利要求5所述的采集方法,其特征在于还包括:周期性检测所述磁盘中的文件系统是否有所述标记文件,如果有,则进入所述标记文件删除处理过程。

7.如权利要求6所述的采集方法,其特征在于所述标记文件删除处理过程包括下述步骤:步骤a、判断所述标记文件中的数据是否已经被发送给应用系统,是则转步骤d,否则转步骤b;

步骤b、判断所述标记文件对应的第二计时器对应的第二时长阈值是否被延长过;是则转步骤d,否则转步骤c;

步骤c、将所述标记文件对应的所述第二时长阈值延长一设定值,继续所述标记文件对应的所述第二计时器的计时,并监测所述第二计时器的计时是否达到所述第二时长阈值,如果达到,则转步骤a,否则,则继续监测所述第二计时器的计时;

步骤d、删除所述标记文件。

8.如权利要求7所述的采集方法,其特征在于所述设定值按如下方式设定:设定值=(所述磁盘的空闲容量×调节系数)/(所述磁盘的单位时间内的平均数据写入量),所述调节系数为小于1的正数。

9.如权利要求8所述的采集方法,其特征在于所述调节系数为0.625。

10.一种基于Redis和Logstash的数据采集设备,其特征在于包括:处理器和存储器,所述存储器具有存储有程序代码的介质,当所述处理器读取所述介质存储的程序代码时,所述数据采集设备能够执行权利要求1-9任一项所述的方法。

说明书 :

基于Redis和Logstash的数据采集方法及设备

技术领域

[0001] 本发明涉及数据采集和存储领域,具体涉及一种基于Redis和Logstash的数据采集方法及设备。

背景技术

[0002] 在开源数据系统中,常用的有Redis、Memcached等。其中,Redis是一个key-value存储系统,与分布式的快取系统Memcached相比,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set--有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与Memcached一样,为了保证效率,数据都是缓存在内存中。但区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。可见,Redis是一个具有更高性能的key-value数据库,很大程度补偿了Memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。
[0003] 为了提取Redis里存储的数据,如图1和图2所示,一种方法与Logstash结合,Logstash是一个开源的数据收集引擎,它具有备实时数据传输能力,它可以统一过滤来自不同源的数据,并按照开发者的制定的规范输出到目的地。通过将两者结合,构成日志分析系统。如图1所示,在需要收集日志的所有服务上部署Logstash,作为Logstash-agent(也称为:Logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis完成存储,然后Logstash-indexer,如图1中的Logstash-index1、Logstash-index2将日志收集在一起交给全文搜索服务集群ElasticSearch-Cluster,可以用ElasticSearch-Cluster进行自定义搜索并通过Kibana来结合自定义搜索进行页面展示,图2中展示了Redis与Logstash交互的过程:(1)外部系统将数据推送到系统中,系统将外部系统的数据存储在Redis中,并依据不同的数据以及存储的数据类型,定义统一的前缀key;(2)存储这些数据时,设置这些数据值Redis中的超时时间,该超时时间依据不同的业务场景以及业务需要,可以设置为不同的值;(3)通过修改Redis源码的方式,将这部分的数据分别落地存储到自定义的文件中;(4)Logstash的文件读取插件(Logstash自带插件)监控增量的读取文件中的数据;(5)依据业务不同以及采集到的数据的结构不同,定义不同的数据清洗、封装filter插件(Logstash自带插件),将数据装换为外部系统中所需要的数据格式;(6)依据业务不同以及外部系统存储介质的不同,定义不同的数据外发插件(Logstash自带插件),将数据外发存储到不同的外部系统中。
[0004] 由于Redis为了保证其效率,数据都是缓存在内存中,而内存的存储空间往往是有限制的,这就需要Redis周期性将数据写入到不同的磁盘中,当将Redis应用于数据采集时,由于数据采集需要针对不同的数据存储到不同的磁盘中,需要针对Redis编写大量的复杂控制逻辑,从而增加了Redis的应用复杂度,而较高的应用度通常会导致Redis性能降低和不稳定的现象。所述日志分析系统利用Logstash来实现Redis的数据采集功能,但其只限于对日志数据类型的存储和采集,并且,两者的逻辑耦合复杂,使得其应用具有较大局限性。

发明内容

[0005] 为了解决Redis在数据采集中的上述技术问题,本发明虽然也是通过将日志监测分析系统Logstash和Redis相结合,但本发明通过对Logstash进行创新性设计,降低Logstash与Redis之间的耦合程度,并能够适应不同的数据类型。为实现上述目的,本发明提出了一种基于Redis和Logstash的数据采集存储方法和设备。具体的,采用以下技术方案:
[0006] 第一方面,本发明提供了一种基于Redis和Logstash的数据采集方法,其特征在于包括:
[0007] 步骤1、数据接收服务器接收由外部系统推送的数据;
[0008] 步骤2、将所述推送的数据通过所述Redis存储到文件系统中;
[0009] 步骤3、所述Logstash从所述文件系统采集所述数据;
[0010] 步骤4、所述Logstash将所述数据转换后发送给应用系统。
[0011] 进一步的,在上述技术方案的基础上,作为更优的技术方案,所述步骤2还包括:
[0012] 确定所述接收数据的业务类型,确定文件存储方式。
[0013] 进一步的,在上述技术方案的基础上,作为更优的技术方案,所述步骤2还包括:
[0014] 对存储在内存中的数据设置第一计时器,当所述第一计时器超过设定的第一时长阈值时,则将所述数据存储到磁盘中的文件系统的文件中,并删除所述内存中的数据;
[0015] 对存储在磁盘中的文件系统中的文件设置第二计时器,当所述第二计时器超过设定的第二时长阈值时,则对所述文件进行标记,生成标记文件。
[0016] 进一步的,在上述技术方案的基础上,作为更优的技术方案,所述步骤3还包括:
[0017] 步骤3.1、所述Logstash包括多个读取插件,所述多个读取插件并发读取所述文件系统中的文件;
[0018] 步骤3.2、当至少一个所述读取插件读取成功,则数据采集成功,并将读取的文件数据作为采集数据;否则数据采集失败。
[0019] 进一步的,在上述技术方案的基础上,作为更优的技术方案,所述步骤4还包括:
[0020] 如果采集数据成功,将所述采集的数据基于所述业务类型对应的数据结构进行数据清洗和数据封装,转换为所述应用系统支持的数据格式,并通过相应的转发插件,发送给所述应用系统。
[0021] 进一步的,在上述技术方案的基础上,作为更优的技术方案,还包括:
[0022] 周期性检测所述磁盘中的文件系统是否有所述标记文件,如果有,则进入所述标记文件删除处理过程。
[0023] 进一步的,在上述技术方案的基础上,作为更优的技术方案,所述标记文件删除处理过程包括下述步骤:
[0024] 步骤a、判断所述标记文件中的数据是否已经被发送给应用系统,是则转步骤d,否则转步骤b;
[0025] 步骤b、判断所述标记文件对应的第二计时器对应的第二时长阈值是否被延长过;是则转步骤d,否则转步骤c;
[0026] 步骤c、将所述标记文件对应的所述第二时长阈值延长一设定值,继续所述标记文件对应的所述第二计时器的计时,并监测所述第二计时器的计时是否达到所述第二时长阈值,如果达到,则转步骤a,否则,则继续监测所述第二计时器的计时;
[0027] 步骤d、删除所述标记文件。
[0028] 进一步的,在上述技术方案的基础上,作为更优的技术方案,所述设定值按如下方式设定:
[0029] 设定值=(所述磁盘的空闲容量×调节系数)/(所述磁盘的单位时间内的平均数据写入量),所述调节系数为小于1的正数。
[0030] 进一步的,在上述技术方案的基础上,作为更优的技术方案,所述调节系数为0.625。
[0031] 另一方面,本发明还提出了一种基于Redis和Logstash的数据采集设备,其特征在于包括:
[0032] 处理器和存储器,所述存储器具有存储有程序代码的介质,当所述处理器读取所述介质存储的程序代码时,所述电子设备能够执行权利要求1-9任一项所述的方法。
[0033] 与现有技术方案相比,本发明实施例的技术方案至少具有以下有益的技术效果:
[0034] 将Redis的高性能的存储机制与改进的内存、磁盘数据存储机制相结合,可以加快数据的处理,且通过不同服务的解耦操作,提高了服务的稳定性以及降低了数据被迫丢失和出错的几率,另外,通过并发Logstash中多个读取插件,减少了编写代码实现数据选择和转换的操作,节约时间成本以及人力成本。

附图说明

[0035] 图1和图2是现有技术中的日志分析系统的结构示意图;
[0036] 图3和图4是本发明提出的基于Redis和Logstash的数据采集方法的更佳实施例结构及流程示意图;
[0037] 图5是本发明提出的基于Redis和Logstash的数据采集设备的一个更佳实施例的示意图。
[0038] 下面对本发明进一步详细说明。但下述的实例仅仅是本发明的简易例子,并不代表或限制本发明的权利保护范围,本发明的保护范围以权利要求书为准。

具体实施方式

[0039] 下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。
[0040] 为更好地说明本发明,便于理解本发明的技术方案,本发明的典型但非限制性的实施例如下:这里需要特别说明的是本发明说明书所列的实施方式仅是为了说明问题方便而给出的示例性实施方法,其不得理解为是本发明唯一正确的实施方式,更不得理解为是对本发明保护范围的限制性说明。
[0041] 大数据应用中的数据采集及存储是大数据应用中最为基础的一项功能。其特点是以尽可能获取足够多的多样化数据,这使得大数据应用中的数据采集及存储与传统的数据采集和存储相比,有着截然不同的特性:首先,大量的数据需要数据采集时要有足够快捷的处理速度对这些数据进行处理,其次,要求高效利用有限容量的存储空间,避免容量不足时引起的数据被迫丢失的现象,第三,数据的多样化则要求具有较高的数据适应能力,以满足各类数据的处理。因此,大数据应用中,采用传统的数据采样和存储的技术方案已经难以满足应用需求。
[0042] 为了便于理解,以更佳的实施例为例来阐述本发明的发明构思以及实施方式,但不表明本发明所保护的范围仅限于所述实施例。
[0043] 参见图3,本实施例包括4个主要部分:用于提供数据接收服务的数据接收服务端,提供Redis服务的Redis端,文件系统和提供Logstash服务的Logstash服务端。其采集、存储和处理数据的流程如下:
[0044] 数据接收服务端提供的数据接收接收服务接收外部系统推送的各种数据;
[0045] Redis接收到数据之后,数据先暂时存放在速度较快的内存中,以满足大数据接收的速度要求,同时根据所接收数据的业务类型确定所述数据的存储方式,数据的业务类型可根据应用需求设定,一个更佳的实施方式为:根据数据来源的特点设定业务类型,如将从新闻门户网站推送的新闻数据为主体的新闻业务类、从广告门户网站推送的广告数据为主体的广告业务类,等等,这些内容的数据具有各自不同的特点,如新闻业务类更新较快,并且数据量大,广告类相对更新相对较慢,数据重复性较多。为了确保不同业务类的数据都能够及时被采集和存储,要根据不同业务类数据的特点设定不同的文件存储方式,例如,新闻业务类由于数据量大,则以压缩方式存储,而广告业务类,则以非压缩方式存储。当内存中的数据满足一定要求后,则被存储到文件系统的相应文件中,
[0046] 对于文件系统中已经发送出去的数据或者停留过久的数据,则需要及时清理,以减少对磁盘空间的占用。因此,数据接收服务还提供了定时调度的方式删除过期的文件数据,防止系统中磁盘使用过多。作为本发明的又一个创新点,本发明提出了一种基于计时器的方案以优化利用内存和文件系统的数据存储能力。一个更佳的实施方式为:对存储在内存中的数据设置第一计时器,当所述第一计时器超过设定的第一时长阈值时,则将所述数据存储到磁盘中的文件系统的文件中,并删除所述内存中的数据,从而增加了内存的空余空间。
[0047] 对存储在磁盘中的文件系统中的文件设置第二计时器,当所述第二计时器超过设定的第二时长阈值时,则对所述文件进行标记,生成标记文件。对标记文件则采取如下方式处理:
[0048] 周期性检测所述磁盘中的文件系统是否有所述标记文件,如果有,则进入所述标记文件删除处理过程。进一步的,所述标记文件删除处理过程包括下述步骤:
[0049] 步骤a、判断所述标记文件中的数据是否已经被发送给应用系统,是则转步骤d,否则转步骤b;
[0050] 步骤b、判断所述标记文件对应的第二计时器对应的第二时长阈值是否被延长过;是则转步骤d,否则转步骤c;
[0051] 步骤c、将所述标记文件对应的所述第二时长阈值延长一设定值,继续所述标记文件对应的所述第二计时器的计时,并监测所述第二计时器的计时是否达到所述第二时长阈值,如果达到,则转步骤a,否则,则继续监测所述第二计时器的计时;
[0052] 步骤d、删除所述标记文件。
[0053] 上述步骤c将第二时长阈值延长作为本发明的又一创新点,能够有效降低数据由于存储空间的限制引起的被迫删除的情况。作为一个更佳的实施方式,设定值=(所述磁盘的空闲容量×调节系数)/(所述磁盘的单位时间内的平均数据写入量),所述调节系数为小于1的正数。其中,所述调节系数可设置为0.625
[0054] 一个更佳的实施方式为:文件以天为单位存储,通过设置其数据超时时间,防止数据挤压过多,避免内存和磁盘占用暴增的不利情形出现所导致的数据被迫丢失的情况。
[0055] Logstash端提供Logstash服务,Logstash是一种具有实时管道处理能力的开源数据收集引擎。其读取数据通过插件的方式,在将数据读取后,并对其中无效的内容进行过滤生成结构化的数据。通常,Logstash的读取插件适应于一种数据结构。但是在大数据应用中,由于数据的多样化,其所需要的数据结构的形式也非常多样,传统的处理方式,是针对每种类型设置一种插件,然后从中选择。但是,这种选择往往需要判断时间,在数据接收服务端的接收数据量很大的情况下,则会对Redis的存储空间有更大的需求,如果此时及时腾出空间,对于及时接收数据具有非常重要的意义。因此,如果Logstash服务端如果能尽可能快的将数据取走,则有利于存储空间的利用。作为本发明的又一创新点,本实施方式包括多个文件读取插件,每个读取插件转换成一种格式的结构化数据,采取并发读取文件系统中的同一数据,并输出至少一种格式的结构化数据,减少了因数据格式选择操作所导致时间占用。作为一个更佳的实施方式,可以依据业务不同以及采集到的数据的结构不同,定义多种不同的数据清洗、封装filter插件,将数据装换为外部系统中所需要的数据格式。
[0056] 另外,还依据业务不同以及外部系统存储介质的不同,定义不同的数据外发插件,将上述读取的数据外发存储到不同的外部系统中。
[0057] 本发明利用Redis的高性能的存储机制,可以加快数据的处理,且通过不同服务的解耦操作,提高了服务的稳定性以及降低了出错的几率。另外,通过创新性并发使用Logstash不同插件的配置文件,减少了通过编写代码实现数据转换的操作,节约时间成本以及人力成本。
[0058] 参见图4,作为又一个优选实施例,在以上述技术方案为基础,该实施例具体为采集互联网网站访问记录,并将这些访问记录存储到ElasticSearch服务中的实例。
[0059] 首先,由互联网网站将用户访问网站的话单记录信息发送到系统中,将数据交由数据接收服务;
[0060] 然后,数据接收服务接收数据之后,将数据存储到Redis服务中;
[0061] 接着,数据接收服务定时调度的删除文件系统中存放超过指定期限的话单数据,例如:前30天的话单数据;
[0062] 然后,Redis服务将数据基于话单的数据特点存储到相应的文件系统中;
[0063] Logstash读取文件系统中的文件数据,经过转换之后,使用相应的插件,如Logstash-es-ouput插件,将数据外发到指定的ElasticSearch服务;
[0064] 而用户可以通过使用ElasticSearch服务高性能的数据检索能力对用户的访问数据进行检索以及查看报表。
[0065] 作为本发明的第二个方面,还提供一种电子设备,如图5所示,包括:处理器1120和存储器1140,所述存储器1140具有存储有程序代码的介质(计算机可读存储介质),当所述处理器读取所述介质存储的程序代码时,通过输入单元1130和输出单元1150的协助,使得所述电子设备能够执行上述方法步骤。
[0066] 对于方法实施,本发明提出的各种实施方式可以以使用例如计算机软件、硬件或其任何组合的计算机可读介质来实施。对于硬件实施,本发明提出的各种实施方式可以通过使用特定用途集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、现场可编程门阵列(FPGA)、处理器、处理器、微处理器、微处理器、被设计为执行这里描述的功能的电子单元中的至少一种来实施,在一些情况下,本发明提出的各种实施方式可以在图所示的处理器1120中实施。对于软件实施,本发明提出的各种实施方式可以与允许执行至少一种功能或操作的单独的软件模块来实施。软件代码可以由以任何适当的编程语言编写的软件应用程序(或程序)来实施,软件代码可以存储在存储器1140中并且由处理器1120执行。
[0067] 申请人声明,本发明通过上述实施例来说明本发明的详细结构特征,但本发明并不局限于上述详细结构特征,即不意味着本发明必须依赖上述详细结构特征才能实施。所属技术领域的技术人员应该明了,对本发明的任何改进,对本发明所选用部件的等效替换以及辅助部件的增加、具体方式的选择等,均落在本发明的保护范围和公开范围之内。
[0068] 以上详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。
[0069] 另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
[0070] 此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。