一种日志采集装置和日志采集方法

来源:互联网 发布:网络电话机怎么安装 编辑:程序博客网 时间:2024/04/30 08:57
摘要
本发明涉及一种日志采集装置和方法。其中装置包括至少一个用于日志收集的客户端和至少一个用于日志记录的服务器;所述客户端和服务器之间通过网络进行实时的日志信息发送。方法包括:客户端生成日志信息并将日志信息写入客户端的磁盘文件;读取客户端磁盘文件中的日志信息,并向服务器发送连接请求;服务器收到连接请求后,与客户端建立网络连接并接收日志信息;服务器将接收的日志信息分别发送给服务器端日志写入模块和服务器端日志写入数据库模块;服务器端日志写入模块将所述日志信息写入服务器磁盘文件;服务器端日志写入数据库模块将所述日志信息写入数据库。利用本发明的装置和方法,提高了数据分析的及时性,实现了日志的分布式采集。
说明

一种日志采集装置和日志采集方法

技术领域

[0001] 本发明涉及计算机互联网技术领域,尤其涉及一种分布式日志的实时采集装置和 方法。

背景技术 

[0002] 现在的互联网领域,对用户行为的分析越来越重要,而用户行为分析的基础是用 户的使用日志。对于互联网中很多分布式的大流量产品来说,随着服务器的分布,日志的分 析变得越来越麻烦,比如前端多台业务服务器的日志统计,定期(每小时,每天)截断日志, 然后通过FTP (File Transfer Protocol,文件传输协议)传到一台服务器上进行统一处理, 在有些日志的计算处理前,还需要考虑日志的排序问题。

[0003] 例如目前常见的一种日志的备份方式:多台业务服务器将通过文本的方式按照设 计好的日志格式将日志记录在本地的日志文件中,按天或按小时截断日志文件。凌晨业务 负载较低时,将日志文件通过ftp的方式上传到集中的日志服务器,待所有应用服务器上 传完日志文件后,集中的日志服务器将所有的日志进行合并后,写入到数据库中,供数据分 析或数据挖掘程序使用。

[0004] 这样的日志同步可以支持几台到十几台规模的并发服务。当管理的服务器达到几 十台,而且有大量的服务器中间会有上线/下线变更的时候,集中的日志定期同步更显得 非常难于管理,而日志的同步由于要避开白天的高峰,往往需要用凌晨的低峰时段进行同 步,24小时下来,上G的日志同步也是风险很高的操作。而成为瓶颈的日志排序合并操作也 会妨碍其他后续计算的周期。

[0005] 现有的技术方案主要存在以下缺点:

[0006] 1、日志收集的周期性太长,为了保证业务的正常运行,一般都是一天的时间。

[0007] 2、可扩展性较差,对于越大的系统日志的收集和处理将越困难。

[0008] 3、日志文件太大。由于目前普遍使用文本文件的方式记录文件,日志文件没有很 好的压缩,需要大量的磁盘空间。

[0009] 4、日志分析及时性差。由于有的系统需要在特定的时间完成日志分析,现有的方 式上传、合并日志将占用日志分析大量的时间,日志量越大,日志上传和合并的时间将越 长,导致日志分析无法及时完成。

[0010] 5、可维护性差。业务的日志格式方式变化,日志的解析方式随之更改,系统升级时 将面对不确定性。

[0011] 因此,需要一种新的日志收集方式,将日志收集的时间做到实时,并提高系统的可 扩展性,同时节省磁盘空间,减少日志上传和合并的时间,保证日志分析的及时性。

发明内容

[0012] 本发明所要解决的技术问题是提供一种分布式实时日志采集装置,实现日志的分 布的实时收集和及时分析,并提高装置的可扩展性,减小日志文件,并便于日志的维护。[0013] 本发明解决上述技术问题的技术方案如下:一种日志采集装置,包括至少一个用 于日志收集的客户端和至少一个用于日志记录的服务器;所述客户端和服务器之间通过网 络进行 实时的日志信息发送。

[0014] 本发明的有益效果是:实时的日志信息传送,使得日志信息不需要定期收集,因而 不会因为日志的集中上传、合并而导致数据分析的不及时,多个客户端和服务器通过网络 进行日志传送,实现了日志的分布式采集。

[0015] 在上述技术方案的基础上,本发明还可以做如下改进。

[0016] 进一步,所述服务器至少为两个,服务器之间通过链式结构连接。

[0017] 上述进一步方案中的链式结构是指,所述服务器可以同时作为用于日志收集的客 户端与另一台服务器进行连接并进行实时的日志信息发送,从而实现一种日志采集的多级 结构,这种链式结构可保证根据需要随时增加服务器数量,扩展性好,保证本发明装置不会 限制业务的发展。

[0018] 进一步,所述日志的格式采用google的protocol buffer格式。

[0019] protocol buffer是google的一种数据交换的格式,它独立于语言,独立于平台。 google提供了三种语言的实现:jaVa、C++和python,每一种实现都包含了相应语言的编译 器以及库文件。由于protocol buffer是一种二进制的格式,比使用xml进行数据交换快 许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。

[0020] 采用上述进一步方案的google的protocol buffer格式,其有意效果还在于具有 良好的维护性,不会因为系统日志的升级而需要修改日志的解析模块。

[0021] 进一步,所述日志为二进制格式。

[0022] 采用上述进一步方案的有益效果是,采用二进制格式,可有效的减少日志文件的 大小(二进制格式日志文件的大小只有文本文件的20%左右),为日志的备份节省了大量 的磁盘空间。

[0023] 进一步,所述客户端包括客户端日志记录模块和客户端日志读取发送模块;所述 客户端日志记录模块用于将日志信息按分钟、小时或者天为单位进行分割并记录到日志文 件中;所述客户端日志读取发送模块用于同服务器建立网络连接,以及读取日志文件中的 日志信息并将其发送给所述服务器。

[0024] 采用上述进一步方案的有益效果是,实现了日志信息在客户端的收集和发送,通 过对文件的分割,可以保证文件的体积不会太大,提高日志的读取和写入速度,保证装置的 性能。

[0025] 进一步,所述客户端日志读取发送模块包括客户端日志读取模块和客户端日志发 送模块;所述客户端日志读取模块用于读取日志文件中的日志信息并发送给所述客户端日 志发送模块;所述客户端日志发送模块用于同服务器建立网络连接并将从客户端日志读取 模块接收的日志信息发送给服务器;所述客户端日志发送模块具有自动重连功能和无响应 自动重发功能。

[0026] 采用上述进一步方案的有益效果是,保证日志信息发送的准确性。

[0027] 进一步,所述服务器包括服务器端日志接收模块和服务器端日志处理模块;所述 服务器端日志接收模块用于同所述客户端建立网络连接并接收客户端发送的日志信息并 将其发送给所述服务器端日志处理模块;所述服务器端日志处理模块用于将接收到的日志信息进行分析、处理并写入到服务器端本地的日志文件中和写入到数据库中。

[0028] 采用上述进一步方案的有益效果是,实现了服务器端对日志信息的接收和保存, 将日志信息分别保存到日志文件中和数据库中,一方面用于备份和故障恢复,另一方面为 数据分析和数据挖掘提供数据源。 [0029] 进一步,所述服务器端日志处理模块包括服务器端日志写入模块和服务器端日志 写入数据库模块;所述服务器端日志写入模块用于将所述日志信息通过异步方式写入到服 务器端本地的日志文件中;所述服务器端日志写入数据库模块用于将所述日志信息写入数 据库中,并进行日志信息在数据库中的水平拆分和垂直拆分。

[0030] 采用上述进一步方案的有益效果是,采用异步方式写入日志文件与同步方式相比 提高了装置的性能,提高了单位时间内服务器端日志接收模块的日志接收数量;对数据库 进行水平和垂直拆分使得系统满足了极大数据量的需求。

[0031] 本发明还提供了一种日志的采集方法,包括:

[0032] 步骤100、客户端生成日志信息并将所述日志信息写入到客户端的磁盘文件中;

[0033] 步骤200、读取客户端磁盘文件中的日志信息,并向服务器发送连接请求;

[0034] 步骤300、服务器收到连接请求后,与客户端建立网络连接并接收日志信息;

[0035] 步骤400、服务器将接收的日志信息分别发送给服务器端日志写入模块和服务器 端日志写入数据库模块;

[0036] 步骤500、服务器端日志写入模块将所述日志信息写入服务器磁盘文件;

[0037] 步骤600、服务器端日志写入数据库模块将所述日志信息写入数据库。

[0038] 采用上述方法的有益效果在于:实现了日志信息从客户端到服务器的采集和保存。

[0039] 进一步,所述步骤100包括:

[0040] 步骤101、客户端生成日志信息,并将日志信息写入到消息队列中;

[0041] 步骤102、将消息队列中的日志信息写入到客户端磁盘文件。

[0042] 采用上述进一步方案的有益效果是,先将日志信息记录到日志消息队列中,然后 通过日志写入线程完成日志的写入文件的操作,从而保证日志记录不影响客户端应用的响 应速度。

[0043] 通过本发明提供的装置和方法,可以实现实时的日志信息的分布式采集,装置的 扩展性强,日志文件小,并且具有良好的维护性,不会因为系统升级而对日志解析进行修 改。另外,日志采集方式采用TCP/IP协议,由客户端通过socket (也称作"套接字",应用 程序通常通过socket向网络发出请求或者应答网络请求)向服务器发送日志信息,从而保 证日志采集的准确性。总之,本发明的装置和方法解决了现有日志备份方式所存在的问题。

附图说明

[0044] 图1为本发明的日志采集装置结构图;

[0045] 图2为本发明的日志采集方法流程图;

[0046] 图3为本发明的日志采集方法中步骤100的子流程图。



[0047] 附图中,各标号所代表的部件列表如下:

[0048] 1、客户端,2、服务器,3、网络,11、客户端日志记录模块,12、客户端日志读取发送模块,121、客户端日志读取模块,122、客户端日志发送模块,21、服务器端日志接收模块, 22、服务器端日志处理模块,221、服务器端日志写入模块,222、服务器端日志写入数据库模 块

具体实施方式 

[0049] 以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

[0050] 如图1所示,为本发明的装置结构示意图,包括至少一个客户端1和至少一个服务 器2,所述客户端1用于日志的收集,所述服务器2用于日志的记录,客户端1和服务器2通 过网络3进行日志信息的发送。本发明中的日志采集方式采用TCP/IP协议,由客户端1利 用socket向服务器2发送日志消息,采用TCP/IP协议是为了保证日志采集的准确性。

[0051] 客户端1包括客户端日志记录模块11和客户端日志读取发送模块12。其中,客户端日志记录模块11供客户端1的应用使用(“应用”是指使用所述客户端1的各种程序服 务),将应用的日志信息记录到客户端1的日志文件中,日志记录模式可以按分钟、小时、天 为单位进行日志自动分割。客户端日志记录模块11为了保证日志记录不影响应用的响应 速度,日志记录采用异步写入方式,先将日志信息记录到日志消息队列中,然后通过日志写 入线程完成日志的写入文件的操作。

[0052] 客户端日志读取发送模块12包括了客户端日志读取模块121和客户端日志发送模块122,其中客户端日志读取模块121负责读取日志文件中的日志信息并发送给所述客 户端日志发送模块122 ;客户端日志发送模块122负责与服务器端建立网络连接,并将从客 户端日志读取模块121接收的日志信息发送给服务器2。为了保证消息发送的准确性,客户 端日志发送模块122具有网络断开自动重连功能和消息无响应自动重发功能。

[0053] 本发明中,服务器2包括有服务器端日志接收模块21和服务器端日志处理模块 22。其中,服务器端日志接收模块21负责监听网络请求,接收客户端1的网络请求,并建立 与客户端1的网络连接。服务器端日志处理模块22用于将接收到的日志信息进行分析、处 理并写入到服务器端本地的日志文件中和写入到数据库中。

[0054] 服务器端日志处理模块22包括服务器端日志写入模块221和服务器端日志写入数据库模块222。其中,服务器端日志写入模块221负责将服务器端接收模块接收到的日志 信息通过异步的方式写入到服务器端本地的日志文件中,以用于备份和故障恢复。服务器 端日志写入数据库模块222负责将服务器端日志接收模块21接收到的日志信息写入数据 库中,并完成日志信息在数据库中的水平拆分和垂直拆分的工作。

[0055] 本发明中,当服务器2的数量为两或两个以上时,服务器2之间通过链式结构连接,即所述服务器2可以同时作为另一台用于日志收集的客户端与另一台服务器进行连接 并进行实时的日志信息发送,从而实现一种日志采集的多级结构,这样可以保证系统不会 限制业务的发展。因为随着系统的复杂性逐渐增加,单层的客户端_服务器日志模式便可 能无法满足系统的要求,采用上述链式结构,使得服务器2可以作为日志收集的一个节点, 向另一台与其连接的服务器,即上一级服务器,传输日志信息,从而让系统具有了更好的可 扩展性。

[0056] 本实施方式中的日志信息采用二进制格式保存,日志文件的大小只有文本文件的20%左右;日志的收集是实时的,从而不会因为日志的集中上传、合并导致数据分析的不及时;另外,日志格式采用基于google的protocolbuffer格式,具有良好的维护性,不会因为系统日志的升级而需要修改日志的解析模块。

[0057] 如图2所示,本发明的装置所采用的日志采集方法为:

[0058] 步骤100、客户端生成日志信息并将所述日志信息写入到客户端的磁盘文件中;

[0059] 步骤200、读取客户端磁盘文件中的日志信息,并向服务器发送连接请求; [0060] 步骤300、服务器收到连接请求后,与客户端建立网络连接并接收日志信息;

[0061] 步骤400、服务器将接收的日志信息分别发送给服务器端日志写入模块和服务器 端日志写入数据库模块;

[0062] 步骤500、服务器端日志写入模块将所述日志信息写入服务器磁盘文件;

[0063] 步骤600、服务器端日志写入数据库模块将所述日志信息写入数据库。

[0064] 其中,步骤100包括:

[0065] 步骤101、客户端生成日志信息,并将日志信息写入到消息队列中;

[0066] 步骤102、将消息队列中的日志信息写入到客户端磁盘文件。

[0067] 通过本技术方案的实时,保证的整个应用系统的可扩展性,通过增加普通PC Server服务器的方式可以完成系统的扩展,避免了只能通过提高单服务器的处理能力的方 式提高系统的处理能力,可以有效的降低业务的服务器成本投入。同时,由于将日志的记录 与应用进行了异步分离处理(目前常用的应用会直接将日志记录到数据库中,可能因为数 据库的异常而影响应用本身的服务。而所述的异步分离处理方式,与目前常用的方式不同, 日志不再直接写入数据库,而是如上所述写入文件中,从而避免了相关的问题,写入数据库 是由服务器端的模块来完成),避免因为日志记录影响应用无法为用户提供服务,提高了整 个系统的健壮性;通过采用二进制protocol buffer的方式记录日志,有效的减少了日志 文件的大小,为日志的备份节省了大量的磁盘空间。

[0068] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和 原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。


0 0
原创粉丝点击