日志采集方法和系统的制作方法

文档序号:7995771阅读:144来源:国知局
日志采集方法和系统的制作方法
【专利摘要】本发明提供一种日志采集方法和系统,所述方法包括通过UDP传输方式获取日志数据;按预设写入频率将日志数据写入日志文件;对日志文件进行打包压缩得到压缩文件;通过TCP传输方式转发压缩文件。上述日志采集方法和系统,通过UDP传输方式获取日志数据,按预设频率将日志数据写入日志文件,对日志文件进行打包压缩得到压缩文件,然后通过TCP传输方式转发压缩文件,异步采集日志数据且分布式处理日志数据,提高了系统性能和存储效率,且按预设写入频率写入数据减轻了磁盘的读写负荷。
【专利说明】日志采集方法和系统
【技术领域】
[0001]本发明涉及日志存储技术,特别是涉及日志采集方法和系统。
【背景技术】
[0002]日志数据是为了便于业务分析和系统分析而记录的程序行为数据,这类数据通常具有数据量大的特点。传统的日志采集方法是在日志数据产生时将产生的日志数据直接写入数据库。这种日志采集方法容易给系统带来性能压力和存储压力,从而极大影响系统的正常运行。

【发明内容】

[0003]基于此,有必要针对现有日志采集方法容易给系统带来性能压力和存储压力的问题,提供一种能提高系统性能和存储效率的日志采集方法。
[0004]此外,还有必要提供一种能提高系统性能和存储效率的日志采集系统。
[0005]一种日志采集方法,包括如下步骤:
[0006]通过UDP传输方式获取日志数据;
[0007]按预设写入频率将日志数据写入日志文件;
[0008]对日志文件进行打包压缩得到压缩文件;
[0009]通过TCP传输方式转发压缩文件。
[0010]一种日志采集系统,包括UDP中转服务器,所述UDP中转服务器包括:
[0011]获取模块,用于通过UDP传输方式获取日志数据;
[0012]写文件模块,按预写入设频率将日志数据写入日志文件;
[0013]打包压缩模块,用于对日志文件进行打包压缩得到压缩文件;
[0014]转发模块,用于通过TCP传输方式转发压缩文件。
[0015]上述日志采集方法和系统,通过UDP传输方式获取日志数据,按预设写入设频率将日志数据写入日志文件,对日志文件进行打包压缩得到压缩文件,然后通过TCP传输方式转发压缩文件,异步采集日志数据且分布式处理日志数据,提高了系统性能和存储效率,且按预设写入频率写入数据减轻了磁盘的读写负荷。
【专利附图】

【附图说明】
[0016]图1为一个实施例中一种日志米集方法流程不意图;
[0017]图2为另一个实施例中一种日志采集方法流程示意图;
[0018]图3为又一个实施例中一种日志采集方法流程示意图;
[0019]图4为一个实施例中一种日志米集系统结构不意图;
[0020]图5为另一个实施例中一种日志米集系统结构不意图;
[0021]图6为又一个实施例中一种日志米集系统结构不意图;
[0022]图7为一个实施例中一种日志采集系统示意图。【具体实施方式】
[0023]下面结合具体的实施例及附图对日志采集方法和系统的技术方案进行详细的描述,以使其更加清楚。
[0024]如图1所示,在一个实施例中,一种日志采集方法,包括如下步骤:
[0025]步骤SI 10,通过UDP传输方式获取日志数据。
[0026]本实施例中,UDP (User Datagram Protocol,用户数据包协议)传输方式是指使用UDP协议的数据传输方式,UDP是OSI (Open System Interconnect,开放式系统互联)参考模型中一种面向非连接的传输层协议,提供面向事务的简单信息传送服务,通过UDP传输方式获取日志数据的传输效率高,可以减轻系统性能压力。具体的,可以用socket(套接字)创建一个UDP服务进程,接收通过UDP传输方式发送的日志数据。日志数据是记录应用程序行为的数据,可以将获取的日志数据暂存在缓存中,便于快速读取。另外,如果接收的日志数据是经过压缩的,需要先进行解压还原。
[0027]步骤S130,按预设写入频率将日志数据写入日志文件。
[0028]本实施例中,将获取的日志数据按预设频率写入到日志文件中,例如,每20秒创建一个日志文件并将该时间段内获取的日志数据有序地写入创建的日志文件中,有间隔地写入日志数据到日志文 件中,可以减轻磁盘的读写负荷,有序地写入日志数据可以保证日志数据的条理性。日志文件的命名可以是根据文件创建时间和一个随机数来命名,如20121216151920.7387.log,其中20121216151920是日志文件的创建时间,包括年月日时分秒,7387是f99999之间的随机数,log文件扩展名。这样的命名方式可以避免文件名的重复以及便于文件排序。
[0029]步骤S150,对日志文件进行打包压缩得到压缩文件。
[0030]本实施例中,对日志文件进行打包和压缩以减少日志文件的比特数和字节总数,从而减少文件大小,节约磁盘空间。压缩方式可以是zip、7z、gz、tar或者rar等。压缩文件的命名可以是根据时间和系统信息进行命名,如文件名可以是20121216151801_601_192? 168.100.101.zip,其中20121216151801是当前系统时间的年月日时分秒,601是服务器编号,192.168.100.101是服务器IP地址,zip是采用zip压缩方式的压缩文件扩展名,通过这种文件命名方式可以方便分析压缩文件来源和压缩方式,并且避免文件重名。
[0031]具体的,可以按预设打包频率对日志文件进行打包处理,使压缩包里包含有多个日志文件,例如,可以2分钟一次打包压缩,将2分钟之内生成的日志文件打包压缩在一个压缩文件里面,这样可以减少处理器的使用率,减少系统的性能压力。另外,可以将已经被打包压缩处理过的日志文件及时删除,节约存储空间。
[0032]步骤S170,通过TCP传输方式转发压缩文件。
[0033]本实施例中,TCP (Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的和基于字节流的运输层(Transport layer)通信协议,通过TCP传输方式发送压缩文件可以保证文件传输的准确性和可靠性。具体的,可以根据文件名中的时间顺序将压缩文件从本服务器转发到另一个服务器,进行日志的进一步整理和存储。当确定压缩文件转发成功后,例如收到压缩文件成功接收标识后,可以删除相应的已经成功传输的压缩文件,以节约存储空间。[0034]上述日志采集方法,通过UDP传输方式获取日志数据,按预设频率将日志数据写入日志文件,对日志文件进行打包压缩得到压缩文件,然后通过TCP传输方式转发压缩文件,异步采集日志数据且分布式处理日志数据,提高了系统性能和存储效率,且按预设写入频率写入数据减轻了磁盘的读写负荷。
[0035]如图2所示,在一个实施例中,上述步骤SllO之前还包括如下步骤:
[0036]步骤S210,采集应用程序的日志数据。
[0037]本实施例中,提供一个用于应用程序发送日志数据的接口函数,应用程序调用该函数时,将需要记录的日志数据以指定参数进行传递,从而采集到应用程序的日志数据。
[0038]步骤S230,将日志数据中的多个字段连接成一个字符串,以形成格式化的日志数据。
[0039]本实施例中,日志数据中的日志字段分为普通字段和扩展字段,普通字段的个数是固定的,扩展字段是为了灵活增减日志数据项而定义,扩展字段的扩展项数量是可变的。为了将普通字段和扩展字段连接成一个完整的字符串,将日志数据进行格式化处理。
[0040]具体的,首先进行字符替换,将日志数据中的“@1$”和“@2$”替换为空字符,将扩展项中的英文状态的重音号”替换为“@2$”,将各字段中的英文状态的逗号“,”替换为“@1$”。然后将替换过的各扩展项用英文状态的重音号”连接形成新的扩展字段,将新的扩展字段和替换过的普通字段用英文状态的逗号“,”连接成一个字符串,得到格式化的日志数据。将日志数据进行格式化处理,便于日志数据的传送。
[0041 ] 步骤S250,将格式化的日志数据进行压缩。
[0042]该压缩方式可以是gz等数据压缩方式,将格式化的日志数据进行压缩以减少日志数据的比特数和字节总数,在发送日志数据时提高发送效率。
[0043]步骤S270,通过UDP传输方式发送压缩后的日志数据。
[0044]由于在局域网内传输日志数据,可以米用UDP传输方式,UDP传输方式是面向非连接的传输方式,相对TCP需要传输的数据较少,简单快速,可以提高传输效率,减轻系统性能压力。
[0045]如图3所示,在一个实施例中,上述步骤S170之后还包括如下步骤:
[0046]步骤S310,获取并解压压缩文件得到日志文件。
[0047]本实施例中,获取通过TCP传输方式转发的压缩文件,可以在一个压缩文件接收成功后回复一个成功标识以通知成功接收压缩文件。按照压缩文件名中的时间顺序解压接收的压缩文件,从压缩文件中提取得到日志文件。解压完成后,将解压过的压缩文件做备份,并将备份过的压缩文件删除,以节约存储空间。
[0048]步骤S330,读取日志文件得到日志数据。
[0049]按日志文件名中的时间顺序读取日志文件,逐行读取日志文件内容得到日志数据。
[0050]步骤S350,反格式化日志数据得到日志字段。
[0051 ] 按照步骤S230的格式化规则反格式化日志数据,得到日志数据中的日志字段,该字段包括普通字段和扩展字段。
[0052]步骤S370,将日志字段写入日志数据库。
[0053]分析日志字段中的日志数据,取出相应的字段写入数据库相应的位置。将日志数据写入数据库便于日志的检索和查看。
[0054]如图4所示,在一个实施例中,一种日志采集系统,包括UDP中转服务器100,该UDP中转服务器100包括获取模块110、写文件模块130、打包压缩模块150和转发模块170。
[0055]获取模块110,用于通过UDP传输方式获取日志数据。
[0056]本实施例中,UDP传输方式是指使用UDP协议的数据传输方式,UDP是OSI参考模型中一种面向非连接的传输层协议,提供面向事务的简单信息传送服务,通过UDP传输方式获取日志数据的传输效率高,可以减轻系统性能压力。具体的,可以用socket创建一个UDP服务进程,接收通过UDP传输方式发送的日志数据。日志数据是记录应用程序行为的数据,可以将获取的日志数据暂存在缓存中,便于快速读取。另外,如果接收的日志数据是经过压缩的,需要先进行解压还原。
[0057]写文件模块130,用于按预设写入频率将日志数据写入日志文件。
[0058]本实施例中,写文件模块130将获取的日志按预设频率写入到文件中,例如每20秒创建一个文件并将该时间段内获取的日志数据有序地写入创建的文件中,有间隔地写入日志数据到文件中,可以减轻磁盘的读写负荷,有序地写入日志数据可以保证日志数据的条理性。日志文件的命名可以是根据文件创建时间和一个随机数来命名,如20121216151920.7387.log,其中20121216151920是日志文件的创建时间,包括年月日时分秒,7387是f99999之间的随机数,log文件扩展名。这样的命名方式可以避免文件名的重复以及便于文件排序。
[0059]打包压缩模块150,用于对日志文件进行打包压缩得到压缩文件。
[0060]本实施例中,打包压缩模块150对日志文件进行打包和压缩以减少日志文件的比特数和字节总数,从而减少文件大小,节约磁盘空间。压缩方式可以是zip、7z、gz、tar或者rar等。压缩文件的命名可以是根据时间和系统信息进行命名,如文件名可以是20121216151801_601_192.168.100.101.zip,其中 20121216151801 是当前系统时间的年月日时分秒,601是服务器编号,192.168.100.101是服务器IP地址,zip是采用zip压缩方式的压缩文件扩展名,通过这种文件命名方式可以方便分析压缩文件来源和压缩方式,并且避免文件重名。
[0061]具体的,打包压缩模块150可以按预设打包频率对日志文件进行打包处理,使压缩包里包含有多个日志文件,例如,可以2分钟一次打包压缩,将2分钟之内生成的日志文件打包压缩在一个压缩文件里面,这样可以减少处理器的使用率,减少系统的性能压力。另夕卜,可以将已经被打包压缩处理过的日志文件及时删除,节约存储空间。
[0062]转发模块170,用于通过TCP传输方式转发压缩文件。
[0063]本实施例中,TCP是一种面向连接的、可靠的和基于字节流的运输层通信协议,通过TCP传输方式发送压缩文件可以保证文件传输的准确性和可靠性。具体的,可以根据文件名中的时间顺序将压缩文件从本服务器转发到另一个服务器,进行日志的进一步整理和存储。
[0064]在一个实施例中,上述UDP中转服务器100还包括删除模块190,用于在判断到压缩文件转发成功后,删除压缩文件。当确定压缩文件转发成功后,例如收到压缩文件成功接收标识后,可以删除相应的已经成功传输的压缩文件,以节约存储空间。
[0065]上述日志采集系统,通过UDP传输方式获取日志数据,按预设频率将日志数据写Λ日志文件,对日志文件进行打包压缩得到压缩文件,然后通过TCP传输方式转发压缩文件,异步采集日志数据且分布式处理日志数据,提高了系统性能和存储效率,且按预设写入频率写入数据减轻了磁盘的读写负荷。
[0066]如图5所示,在一个实施例中,上述日志采集系统还包括日志数据采集模块200,该日志数据采集模块200包括:采集单元210、格式化单元230、压缩单元250和传输单元270。
[0067]采集单元210,用于采集应用程序的志数据。
[0068]本实施例中,采集单元210提供一个用于应用程序发送日志数据的接口函数,应用程序调用该函数时,将需要记录的日志数据以指定参数进行传递,从而采集到应用程序的日志数据。
[0069]格式化单元230,用于将日志数据中的多个字段连接成一个字符串,以形成格式化的日志数据。
[0070]本实施例中,日志数据中的日志字段分为普通字段和扩展字段,普通字段的个数是固定的,扩展字段是为了灵活增减日志数据项而定义,扩展字段的扩展项数量是可变的。为了将普通字段和扩展字段连接成一个完整的字符串,将日志数据进行格式化处理。
[0071]具体的,首先进行字符替换,将日志数据中的“@1$”和“@2$”替换为空字符,将扩展项中的英文状态的重音号”替换为“@2$”,将各字段中的英文状态的逗号“,”替换为“@1$”。然后将替换过的各扩展项用英文状态的重音号”连接形成新的扩展字段,将新的扩展字段和替换过的普通字段用英文状态的逗号“,”连接成一个字符串,得到格式化的日志数据。将日志数据进行格式化处理,便于日志数据的传送。
[0072]压缩单元250,用于将格式化的日志数据进行压缩。该压缩方式可以是gz等数据压缩方式,将格式化的日志数据进行压缩以减少日志数据的比特数和字节总数,在发送日志数据是提高发送效率。
[0073]传输单兀270,用于通过UDP传输方式发送压缩后的日志。
[0074]本实施例中,由于在局域网内传输日志数据,可以米用UDP传输方式,UDP传输方式是面向非连接的传输方式,相对TCP需要传输的数据较少,简单快速,可以提高传输效率,减轻系统性能压力。
[0075]如图6所示,在一个实施例中,上述日志采集系统还包括日志中心服务器300,该日志中心服务器300包括解压模块310、读取模块330、反格式化模块350和写入模块370。
[0076]解压模块310,用于获取并解压压缩文件得到日志文件。
[0077]本实施例中,解压模块310获取通过TCP传输方式转发的压缩文件,可以在一个压缩文件接收成功后回复一个成功标识以通知成功接收压缩文件。按照压缩文件名中的时间顺序解压接收的压缩文件,从压缩文件中提取得到日志文件。解压完成后,将解压过的压缩文件做备份,并将备份过的压缩文件删除,以节约存储空间。
[0078]读取模块330,用于读取日志文件得到日志数据。
[0079]本实施例中,读取模块330按日志文件名中的时间顺序读取日志文件,逐行读取日志文件内容得到日志数据。
[0080]反格式化单元350,用于反格式化日志数据得到日志字段。
[0081]本实施例中,反格式化单元350按照格式化单元230的格式化规则反格式化日志数据,得到日志数据中的日志字段,该字段包括普通字段和扩展字段。
[0082]写入单元370,用于将日志字段写入日志数据库。
[0083]本实施例中,写入单元370通过分析日志字段中的日志数据,取出相应的字段写入数据库相应的位置。将日志数据写入数据库便于日志的检索和查看。
[0084]下面结合一个具体的实施例来详细阐述上述日志采集方法和系统,如图7所示,应用程序产生日志数据,通过调用日志数据采集模块200的接口函数来传递日志数据。日志数据采集模块200将采集的日志数据进行格式化并压缩,采用UDP协议将压缩后的日志数据打包成m)P数据包进行传送,发送到UDP中转服务器100。UDP中转服务器100包括获取模块110、写文件模块130、打包压缩模块150和转发模块170,UDP中转服务器100作为日志数据的中转站,对日志数据进一步处理,以减轻应用程序和日志数据采集模块200的系统性能压力,同时便于日志数据的准确传输。UDP中转服务器100采用TCP协议进行压缩文件的传输以保证日志数据的完整性和准确性。日志中心服务器300接收UDP中转服务器100转发的日志数据的压缩文件,然后将压缩文件进行解压还原,读取日志文件中的日志数据,并进行日志数据的反格式化,得到原始的日志字段,包括普通字段和扩展字段,读取字段中的日志数据对应存储到数据库中,将日志数据写入数据库便于日志的检索和查看。
[0085]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种日志采集方法,包括如下步骤: 通过UDP传输方式获取日志数据; 按预设写入频率将所述日志数据写入日志文件; 对所述日志文件进行打包压缩得到压缩文件; 通过TCP传输方式转发所述压缩文件。
2.根据权利要求1所述的日志采集方法,其特征在于,所述通过UDP传输方式获取日志数据的步骤之前还包括如下步骤: 采集应用程序的日志数据; 将日志数据中的多个字段连接成一个字符串,以形成格式化的日志数据; 将所述格式化的日志数据进行压缩; 通过UDP传输方式发送压缩后的日志数据。
3.根据权利要求2所述的日志采集方法,其特征在于,所述通过TCP传输方式转发所述压缩文件的步骤之后还包括如下步骤: 获取并解压所述压缩文件得到日志文件; 读取所述日志文件得到日志数据; 反格式化所述日志数据得到日志字段; 将所述日志字段写入日志数据库。
4.根据权利要求1所述的日志采集方法,其特征在于,所述通过TCP传输方式转发所述压缩文件的步骤之后还包括: 在判断到所述压缩文件转发成功后,删除所述压缩文件。
5.根据权利要求1所述的日志采集方法,其特征在于,所述对所述日志文件进行打包压缩得到压缩文件的步骤具体为: 按预设打包频率对所述日志文件进行打包压缩; 删除所述已打过包的日志文件。
6.一种日志采集系统,其特征在于,包括UDP中转服务器,所述UDP中转服务器包括: 获取模块,用于通过UDP传输方式获取日志数据; 写文件模块,按预设写入频率将所述日志数据写入日志文件; 打包压缩模块,用于对所述日志文件进行打包压缩得到压缩文件; 转发模块,用于通过TCP传输方式转发所述压缩文件。
7.根据权利要求6所述的日志采集系统,其特征在于,所述系统还包括日志数据采集模块: 所述日志数据采集模块包括: 采集单元,用于采集应用程序的日志数据; 格式化单元,用于将日志数据中的多个字段连接成一个字符串,以形成格式化的日志数据; 压缩单元,用于将所述格式化的日志数据进行压缩; 传输单元,用于通过UDP传输方式发送所述压缩后的日志数据。
8.根据权利要求7所述的日志采集系统,其特征在于,所述系统还包括日志中心服务器,所述日志中心服务器包括:解压模块,用于获取并解压所述压缩文件得到日志文件; 读取模块,用于读取所述日志文件得到日志数据; 反格式化模块,用于反格式化所述日志数据得到日志字段; 写入模块,用于将所述日志字段写入日志数据库。
9.根据权利要求6所述的日志采集系统,其特征在于,所述UDP中转服务器还包括删除模块,用于在判断到所述压缩文件转发成功后,删除所述压缩文件。
10.根据权利要求6所述的日志采集方法,其特征在于,所述打包压缩模块还用于按预设打包频率对所述日志文件进行打包压缩,删除所述已打过包的日志文件。
【文档编号】H04L29/06GK103944744SQ201310021720
【公开日】2014年7月23日 申请日期:2013年1月21日 优先权日:2013年1月21日
【发明者】张奎 申请人:博雅网络游戏开发(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1