一种日志数据采集方法及装置与流程

文档序号:18739410发布日期:2019-09-21 01:36阅读:253来源:国知局
一种日志数据采集方法及装置与流程

本发明涉及金融科技(Fintech)领域和计算机软件领域,尤其涉及一种日志数据采集方法及装置。



背景技术:

随着计算机技术的发展,越来越多的技术(大数据、分布式、区块链(Blockchain)、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变。目前,金融科技领域中的计算机软件在运行过程中,会产生大量日志。这些日志在一定程度上表征了计算机软件的运行状况,因此,有必要对计算机软件的日志进行收集,以对计算机软件的运行状况进行分析,从而方便管理人员对计算机软件做调整,提升计算机软件的性能。

目前采集计算机软件的日志的方法中,当计算机软件负载较大时,计算机软件的业务功能和日志采集会互相竞争调度资源会比较明显,特别计算机软件在函数调用错误时会瞬间产生大量的错误日志,这时对日志进行采集,会严重影响计算机软件正常的业务功能,甚至会导致运行计算机软件的机器死机。因此,现有技术中,采集计算机软件日志的过程中,会影响计算机软件业务功能的运转,是一个亟待解决的问题。



技术实现要素:

本申请实施例提供一种日志数据采集方法及装置,解决了现有技术中采集计算机软件日志的过程中,会影响计算机软件业务功能的运转的问题。

第一方面,本申请实施例提供一种日志数据采集方法:确定有效的日志文件;通过预配置数量的处理核,将所述有效的日志文件中的日志数据采集至预设内存空间;所述预设内存空间的内存容量小于或等于预设内存阈值;通过所述处理核,将所述预设内存空间中的所述日志数据传输至预设缓存空间;其中,传输占用的带宽小于或等于预设带宽阈值。

上述方法中,确定了有效的日志文件后,通过预配置数量的处理核,将所述有效的日志文件中的日志数据采集至预设内存空间,也就是在限制采集日志的处理核数量的情况下进行日志数据采集,而且所述预设内存空间小于或等于预设内存阈值,即限制了采集的日志数据的内存空间,另外,通过所述处理核,在预设传输带宽内,将所述预设内存空间中的所述日志数据采集至预设缓存空间,由于预设传输带宽小于或等于预设带宽阈值,所以仅在预设带宽阈值内采集日志,因此通过对处理核数量、日志数据的内存空间以及采集传输带宽的限制,极大降低了采集日志时对计算机软件的业务功能运转的影响。

一种可选实施方式中,所述确定有效的日志文件,包括:确定包含预设文件扩展名的文件;将所述包含预设文件扩展名的文件中在预设时长内有更新的文件,确定为所述有效的日志文件。

上述方法中,将满足包含预设文件扩展名且在预设时长内有更新的文件,确定为有效的日志文件,从而实现在该条件下自动确定有效的日志文件,无需要人工配置日志文件的路径,从而采集日志数据不容易出错。

一种可选实施方式中,所述通过预配置数量的处理核,将所述有效的日志文件中的日志数据采集至预设内存空间,包括:通过所述处理核,调度至少一个第一采集协程,并发将所述有效的日志文件中的日志数据采集至所述预设内存空间。

上述方法中,通过所述处理核,调度至少一个第一采集协程,并发采集所述有效的日志文件中的日志数据,且采集到预设内存空间,存取速度较快,从而提升了日志数据的采集效率。

一种可选实施方式中,所述将所述有效的日志文件中的日志数据采集至所述预设内存空间,包括:将所述有效的日志文件中的所述日志数据采集至所述预设内存空间,直至所述预设内存空间中存储容量不足;并在确定所述预设内存空间中的所述日志数据传输至所述预设缓存空间后,继续将所述有效的日志文件中的所述日志数据采集至所述预设内存空间。

上述方式下,所述预设内存空间中存储容量不足之前,都可将所述有效的日志文件中的所述日志数据采集至所述预设内存空间,从而在一定程度上限制了日志数据占用的存储容量,并在确定所述预设内存空间中的所述日志数据传输至所述预设缓存空间,即存储容量有了剩余空间后,继续将所述有效的日志文件中的所述日志数据采集至所述预设内存空间,从而在限制日志数据占用的存储容量的情况下,采集日志数据。

一种可选实施方式中,所述通过所述处理核,将所述预设内存空间中的所述日志数据传输至预设缓存空间,包括:通过所述处理核,确定传输所述日志数据占用的带宽;若小于所述预设带宽阈值,则通过所述处理核,调度至少一个第二采集协程,并发将所述预设内存空间中的所述日志数据传输至所述预设缓存空间。

上述方式下,通过所述处理核,确定传输所述日志数据占用的带宽,若小于所述预设带宽阈值,则通过所述处理核,调度至少一个第二采集协程,并发将所述预设内存空间中的所述日志数据传输至所述预设缓存空间,从而在限制传输所述日志数据占用的带宽的基础上,提升日志数据采集的效率。

第二方面,本申请提供一种日志数据采集装置,包括:确定模块,用于确定有效的日志文件;处理模块,用于通过预配置数量的处理核,将所述有效的日志文件中的日志数据采集至预设内存空间;所述预设内存空间的内存容量小于或等于预设内存阈值;通过所述处理核,将所述预设内存空间中的所述日志数据传输至预设缓存空间;其中,传输占用的带宽小于或等于预设带宽阈值。

一种可选实施方式,所述确定模块具体用于:确定包含预设文件扩展名的文件;将所述包含预设文件扩展名的文件中在预设时长内有更新的文件,确定为所述有效的日志文件。

一种可选实施方式,所述处理模块具体用于:通过所述处理核,调度至少一个第一采集协程,并发将所述有效的日志文件中的日志数据采集至所述预设内存空间。

一种可选实施方式,所述处理模块具体用于:将所述有效的日志文件中的所述日志数据采集至所述预设内存空间,直至所述预设内存空间中存储容量不足;并在确定所述预设内存空间中的所述日志数据传输至所述预设缓存空间后,继续将所述有效的日志文件中的所述日志数据采集至所述预设内存空间。

一种可选实施方式,所述处理模块具体用于:通过所述处理核,确定传输所述日志数据占用的带宽;若小于所述预设带宽阈值,则通过所述处理核,调度至少一个第二采集协程,并发将所述预设内存空间中的所述日志数据传输至所述预设缓存空间。

上述第二方面及第二方面各个实施例的有益效果,可以参考上述第一方面及第一方面各个实施例的有益效果,这里不再赘述。

第三方面,本申请实施例提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个实施例的方法。

第四方面,本申请实施例提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个实施例的方法。

附图说明

图1为本申请实施例提供的一种日志数据方法可应用的架构示意图;

图2为本申请实施例提供的一种日志数据方法的步骤流程示意图;

图3为本申请实施例提供的一种日志数据装置的结构示意图。

具体实施方式

为了更好的理解上述技术方案,下面将结合说明书附图及具体的实施方式对上述技术方案进行详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互结合。

在金融机构(银行机构、保险机构或证券机构)在进行业务(如银行的贷款业务、存款业务等)运转过程中,会产生大量日志。这些日志在一定程度上表征了金融机构机器中计算机软件的运行状况,因此,有必要对计算机软件的日志进行收集,以对计算机软件的运行状况进行分析。然而,目前采集计算机软件的日志的方法中,当计算机软件负载较大时,计算机软件的业务功能和日志采集会互相竞争调度资源会比较明显,特别计算机软件在函数调用错误时会瞬间产生大量的错误日志,会严重影响计算机软件正常的业务功能,甚至会导致运行计算机软件的机器死机。这种情况不符合银行等金融机构的需求,无法保证金融机构各项业务的高效运转。

为此,如图1所示,本申请实施例提供了一种日志数据方法可应用的架构示意图。

日志文件:业务系统是部署在应用主机上用于实现业务功能的软件,业务系统在实现业务功能的过程中会产生大量的日志数据。日志文件就是应用主机上的用来写入实时产生的日志数据的文件。可以通过日志收集组件将日志文件中的日志数据收集至应用主机的内存空间,日志收集组件的名称不做限定,举例来说,日志收集组件的名称可以为LogDog,其中LogDog可以基于多种编程语言实现,如GO语言,LogDog可以借助GO的协程持续并发采集日志文件中的日志数据至预设内存空间。

预设内存空间:预设内存空间为日志收集组件从日志文件中收集到日志数据之后,应用主机上的一个暂时存储的空间。预设内存空间的容量可以通过预先配置来实现对预设内存空间的容量的限制。可以通过日志收集组件经网络将预设内存空间中的日志数据传输至预设缓存空间。

预设内存空间具体可以为一个阻塞队列(BlockingQueue),BlockingQueue是一个支持并发的先进先出队列,可以显式设置BlockingQueue的最大容量。日志收集组件也可以从BlockingQueue中批量发往给远程日志缓冲存储空间(WeMQ)。

预设缓存空间:预设缓存空间为存储待分析日志数据的空间,可以为一个数据库。一般来说,对一个应用系统的日志进行分析时,需要对大量的日志数据一同分析,应用主机的内存一般难以满足要求,因此还需要将存储在应用主机的日志数据收集至预设缓存空间,以便进行分析。

下面结合图2,详细介绍本申请实施例提供的一种日志数据方法。

步骤201:确定有效的日志文件。

步骤202:通过预配置数量的处理核,将所述有效的日志文件中的日志数据采集至预设内存空间。

需要说明的是,预配置数量的处理核可以为中央处理器(Central Processing Unit,CPU)的处理核。

所述预设内存空间的内存容量小于或等于预设内存阈值。

步骤203:通过所述处理核,将所述预设内存空间中的所述日志数据传输至预设缓存空间。

其中,传输占用的带宽小于或等于预设带宽阈值。

上述步骤201~步骤203的执行主体可以为应用主机。

步骤201中,获取确定有效的日志文件的一种可选实施方式可以为:

确定包含预设文件扩展名的文件;将所述包含预设文件扩展名的文件中在预设时长内有更新的文件,确定为所述有效的日志文件。

上述方法中,将满足包含预设文件扩展名且在预设时长内有更新的文件,确定为有效的日志文件,从而实现在该条件下自动确定有效的日志文件,无需要人工配置日志文件的路径,从而采集日志数据不容易出错。

举例来说,上述可选实施方式具体为:

由于每台应用主机部署的业务系统都是不同的,但同时业务系统使用的指定的日志路径以及打印的日志文件名称均有一定的规律。举例来说,通常情况业务系统均部署在Linux操作系统的/data目录数据盘下,可以从/data目录数据盘的日志文件中收集日志数据。并以对应的子系统命名文件夹,同时日志文件一般都是以.log结尾的文件,且日志文件因持续有日志写入从而文件的元数据会有持续更新。

根据以上特点,日志收集组件,如LogDog会持续扫描下/data数据目录下所有以.log结尾的文件,且持续观测文件的更新时间变化,满足持续更新一段预设时长,例如5分钟,则认为该日志文件有效,LogDog自动增加对该日志文件的监听,并持续收集该日志文件中的日志数据至预设内存空间,并将预设内存空间中的日志数据收集至预设缓存空间,最终实现了无需人工在成千上万台机器中手动配置每一台主机应用的日志路径,实现程序自动探测日志,自动检测采集上报。

步骤202中,一种可选实施方式如下:

通过所述处理核,调度至少一个第一采集协程,并发将所述有效的日志文件中的日志数据采集至所述预设内存空间。

需要说明的是,第一采集协程的名字不做限定,举例来说为Tail协程。

上述方法中,通过所述处理核,调度至少一个第一采集协程,并发采集所述有效的日志文件中的日志数据,且采集到预设内存空间,存取速度较快,从而提升了日志数据的采集效率。

举例来说,上述可选实施方式具体为:

日志收集组件,举例来说为LogDog。LogDog通过GO的runtime调度器的方法GOMAXPROCS设置最大可同时使用的CPU核数;比如业务系统使用的CPU4核的虚拟机,此时可设置GOMAXPROCS的值为1,即同时只允许使用1个CPU核进行日志采集工作,预留3个核给业务系统;如果主机的系统耗费资源较多,一般情况下相应机器的物理资源也会更多,例如业务系统使用24核的物理机时,此时可以设置GOMAXPROCS的值为4,即同时允许使用4个CPU核进行日志采集,这样可以提升日志的采集速度。

在上述可选实施方式中,将所述有效的日志文件中的日志数据采集至所述预设内存空间具体可以为:

将所述有效的日志文件中的所述日志数据采集至所述预设内存空间,直至所述预设内存空间中存储容量不足;并在确定所述预设内存空间中的所述日志数据传输至所述预设缓存空间后,继续将所述有效的日志文件中的所述日志数据采集至所述预设内存空间。

这里需要说明的是,预设内存空间中存储容量不足的含义为:预设内存空间中已占用的容量与预设内存空间中存储容量的差值小于或等于预设容量差值阈值。举例来说,预设内存空间中存储容量为100MB,预设差值阈值为0.1MB,那么当所述内存空间中已占用的存储空间大于或等于99.9MB时,则暂停将有效的日志文件中的所述日志数据采集至所述预设内存空间,直至内存空间中已占用的存储空间小于99.9MB时,再启动将有效的日志文件中的所述日志数据采集至所述预设内存空间的过程。

上述方式下,所述预设内存空间中存储容量不足之前,都可将所述有效的日志文件中的所述日志数据采集至所述预设内存空间,从而在一定程度上限制了日志数据占用的存储容量,并在确定所述预设内存空间中的所述日志数据传输至所述预设缓存空间,即存储容量有了剩余空间后,继续将所述有效的日志文件中的所述日志数据采集至所述预设内存空间,从而在限制日志数据占用的存储容量的情况下,采集日志数据。

步骤203中,日志采集组件从预设内存空间采集日志数据,传输给预设缓存空间时,会和业务系统抢占传输带宽资源;为优先保证业务系统的业务请求流量正常发送,日志采集组件可通过限制采集日志占用的网络传输带宽。

一种可选实施方式中如下:

通过所述处理核,确定传输所述日志数据占用的带宽;若小于所述预设带宽阈值,则通过所述处理核,调度至少一个第二采集协程,并发将所述预设内存空间中的所述日志数据传输至所述预设缓存空间。

上述方式下,通过所述处理核,确定传输所述日志数据占用的带宽,若小于所述预设带宽阈值,则通过所述处理核,调度至少一个第二采集协程,并发将所述预设内存空间中的所述日志数据传输至所述预设缓存空间,从而在限制传输所述日志数据占用的带宽的基础上,提升日志数据采集的效率。

下面以日志采集组件LogDog为例,通过对LogDog中的传输带宽控制组件RateLimit控制日志采集所占用的传输带宽,具体说明上述实施方式:

RateLimit运行后本质是实现一种令牌桶算法,也就是以固定的频率向桶中放入令牌,例如一秒钟100枚令牌,实际日志在每次响应请求之前,也就是从预设内存空间传输至预设缓存空间之前,都需要从桶中获取令牌,只有取到令牌的请求才会被成功响应,此时才能获取到采集日志的传输带宽,获取的方式有两种:阻塞等待令牌或者取不到立即返回失败。比如说设置日志的RateLimit为100枚令牌,单次批量发送最多发送10个日志,每个日志最大10KB,即每秒日志发送的最大流量为10枚令牌*10个日志*10KB,约等于10MB。

结合步骤203中的上述可选实施方式,举例来说,将所述有效的日志文件中的日志数据采集至所述预设内存空间具体可以如下:

LogDog通过至少一个第一采集协程如Tail协程持续将日志文件中的日志数据写入BlockingQueue队列,至少一个第二采集协程同时从BlockingQueue获取日志数据,当至少一个第二采集协程的收集速度小于至少一个第一采集协程写入的速度时,预设内存空间中剩余的存储空间会越来越小,直至预设内存空间中的存储容量不足,这时暂停至少一个第一采集协程将日志文件中的日志数据写入的步骤。

另外,当预设内存空间中的存储容量不足时,另一种实施方式为:

持续提高通过至少一个第一采集协程如Tail协程持续将日志文件中的日志数据写入BlockingQueue,若BlockingQueue满,则将BlockingQueue最前的日志数据移出,也称为日志数据从BlockingQueue溢出。日志数据溢出后将被丢弃,也不会持续增大LogDog使用的内存空间。举例来说每个日志按照最大10KB来计算,可以设置BlockingQueue的大小为5000,即整个BlockingQueue最多允许缓存50000个日志,总占用内存大小为50M。而业务系统使用的虚拟机一般内存有8G,因此也预留有足够的内存供业务系统使用,预设内存空间LogDog仅占少部分主机内存。

上述方法中,确定了有效的日志文件后,通过预配置数量的处理核,将所述有效的日志文件中的日志数据采集至预设内存空间,也就是在限制采集日志的处理核数量的情况下进行日志数据采集,而且所述预设内存空间小于或等于预设内存阈值,即限制了采集的日志数据的内存空间,另外,通过所述处理核,在预设传输带宽内,将所述预设内存空间中的所述日志数据采集至预设缓存空间,由于预设传输带宽小于或等于预设带宽阈值,所以仅在预设带宽阈值内采集日志,因此通过对处理核数量、日志数据的内存空间以及采集传输带宽的限制,极大降低了采集日志时对计算机软件的业务功能运转的影响。

本申请提供了一种日志数据收集方法,该方法限制了采集日志数据的资源,可以在限制使用中央处理器的处理核数量、内存、传输带宽等资源的情况下,实现日志数据的尽可能送达。因为日志采集组件部署在业务系统的主机上,需要业务系统抢占应用主机资源,所以尽可能优先保证业务系统使用资源的优先,而限制日志采集组件的资源使用量。另外,本申请提供的日志数据收集方法,可自动探测主机业务系统日志路径,无需人工在成千上万台机器中手动配置每一台应用主机的日志路径,实现程序自动探测日志路径,自动检测采集上报。

如图3所示,为本申请提供一种日志数据采集装置的结构示意图,该装置包括:确定模块301,用于确定有效的日志文件;处理模块302,用于通过预配置数量的处理核,将所述有效的日志文件中的日志数据采集至预设内存空间;所述预设内存空间的内存容量小于或等于预设内存阈值;通过所述处理核,将所述预设内存空间中的所述日志数据传输至预设缓存空间;其中,传输占用的带宽小于或等于预设带宽阈值。

一种可选实施方式,所述确定模块301具体用于:确定包含预设文件扩展名的文件;将所述包含预设文件扩展名的文件中在预设时长内有更新的文件,确定为所述有效的日志文件。

一种可选实施方式,所述处理模块302具体用于:通过所述处理核,调度至少一个第一采集协程,并发将所述有效的日志文件中的日志数据采集至所述预设内存空间。

一种可选实施方式,所述处理模块302具体用于:将所述有效的日志文件中的所述日志数据采集至所述预设内存空间,直至所述预设内存空间中存储容量不足;并在确定所述预设内存空间中的所述日志数据传输至所述预设缓存空间后,继续将所述有效的日志文件中的所述日志数据采集至所述预设内存空间。

一种可选实施方式,所述处理模块302具体用于:通过所述处理核,确定传输所述日志数据占用的带宽;若小于所述预设带宽阈值,则通过所述处理核,调度至少一个第二采集协程,并发将所述预设内存空间中的所述日志数据传输至所述预设缓存空间。

最后应说明的是:本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

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