专利名称:日志收集系统的制作方法
技术领域:
本发明涉及互联网技术领域,具体涉及一种日志收集系统。
背景技术:
互联网时代的后台数据非常重要而且庞大,比如日志数据和统计数据。这些后台数据可能是后台工程师分析程序运行状况的第一手资料,也可能是业务运营决策所依赖的第一参考。然而大流量的网站一般都有上千万台生产服务器,且分布于各个不同的机房。日志文件或统计数据就会存放在这些网络异构且分布零散的生产服务器上,给日志的收集、传输、汇总及分析带来很大的困难。目前有一些开源的软件可以用来收集这些日志,但也存 在着很多不能解决的情况。目前较为常用的一些开源软件例如Scribe,可以达到简单收集日志数据的目的。Scribe是当前的一个大型的社交网络服务网站的开源的日志收集系统,在该大型的社交网络服务网站内部已经得到大量的应用。它能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS,分布式文件系统HDFS等)上,以便于进行集中统计分析处理。它为日志的“分布式收集,统一处理”提供了一个可扩展的,高容错的方案。当中央存储系统的网络或者机器出现故障时,scribe会将日志转存到本地或者另一个位置,当中央存储系统恢复后,scribe会将转存的日志重新传输给中央存储系统。其通常与Hadoop结合使用,scribe用于向HDFS中push日志,而Hadoop通过MapReduce作业进行定期处理。图I是现有的Scribe收集日志的示意图。如图I所示,Scribe从作为种数据源的各应用上收集数据,放到一个共享队列上,然后push到后端的中央存储系统上。当中央存储系统出现故障时,scribe可以暂时把日志写到本地文件中,待中央存储系统恢复性能后,scribe把本地日志续传到中央存储系统上。各个数据源须通过THRIFT (由于采用了 THRIFT,客户端可以采用各种语言编写向scribe传输数据,每条数据记录包含一个category和一个message )。可以在scribe配置用于监听端口的THRIFT线程数(默认为3)。在后端,scribe可以将不同category的数据存放到不同目录中,以便于进行分别处理。后端的日志存储方式可以是各种各样的store,包括file (文件),buffer (双层存储,一个主储存,一个副存储),network (另一个scribe服务器)等。但是scribe存在如下缺点(I) scribe的一个缺点是前端组织数据不灵活,只能使用两个字段,即catagory和message,在生产服务器的应用程序中,如果想用scribe发送数据,则每条数据只能有catagory和message两个字段,如果想传送多个字段,则必须自己组织数据,将要传送的多个数据合并到message里面。在后期分析数据时还要自己解析message,得到原来的多个字段。这给数据的传输造成了诸多的限制和不便。(2)另一个缺点是,scribe会接收每一条数据,并把它们忠实地记录在本地缓存,以一定频率批量发送数据,即便两条数据的category和message是一模一样的。这在数据传输量很大、传输频率很高时,容易造成严重的网络堵塞和延迟。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的日志收集系统。依据本发明,提供了一种日志收集系统,该系统包括服务器端和部署于不同生产服务器上的多个客户端,所述客户端,适于获取生产服务器所产生的对应不同类别业务的数据,并将特定标识的数据归并为一条数据后发送给所述服务器端;所述服务器端,适于从各客户端接收数据,并进行存储或转发。可选地,该客户端包括数据获取单元、归并处理单元和多个存储单元,所述多个 存储单元分别对应不同类别的业务,且每个存储单元都有一个对应的定时周期;所述数据获取单元,适于从生产服务器获取对应不同类别业务的数据,将所获取的数据按照对应的不同类别的业务分发到对应的存储单元进行保存;其中,每条数据包含一个以上的字段,不同的字段具有不同的类型,且每条数据的至少一个字段标识有关键码;每个存储单元,适于保存来自数据获取单元的数据;所述归并处理单元,适于在每个存储单元对应的定时周期结束时,将该存储单元所保存的数据中的标识有关键码的字段的值相同的数据归并为一条数据后发送给服务器端。可选地,所述归并处理单元,进一步适于在每种类别业务对应的定时周期结束时,将所保存的该类别业务的数据中的标识有关键码的字段的值相同的数据归并为一条数据时,对没有标识关键码的字段,按照不同的类型进行不同的归并处理。可选地,归并处理单元,进一步适于在按照不同的类型对没有标识关键码的字段进行不同的归并处理时,采用以下一种或多种的组合对于求和类型的字段,将标识有关键码的字段的值相同的各数据的该字段上的数值相加,其和作为归并后该字段的值;对于求平均类型的字段,将标识有关键码的字段的值相同的各数据的该字段上的数值求平均,其均值作为归并后该字段的值;对于最大值类型的字段,从标识有关键码的字段的值相同的各数据的该字段上的值中找出最大值,作为归并后该字段的值;对于常字符类型的字段,从标识有关键码的字段的值相同的各数据中取第一条数据的该字段上的值,作为归并后该字段的值;对于累加字符类型的字段,将标识有关键码的字段的值相同的各数据的该字段上的字符按指定顺序串接后,作为归并后该字段的值。可选地,所述服务器端,适于将所接收的数据转发给其它的服务器,或转发到数据库设备,或保存成本地文件。根据本发明的这种在不同的生产服务器上分别部署客户端,各客户端将收集的数据发给服务器端,其中客户端将所获取的数据按照对应的不同类别的业务分类存放,每条数据包含一个以上的不同类型的字段,在每种类别业务对应的定时周期结束时,将所保存的该类别业务的数据中的,标识有关键码的字段的值相同的数据归并为一条数据后发送给服务器端的技术方案,可以传送任意个字段的数据,且在客户端就进行了数据归并处理,由此解决了现有的scribe只允许每条数据只能有catagory和message两个字段,从而使得数据的传送有诸多限制的问题,以及解决了现有的scribe在前端只是忠实地记录数据,不进行归并处理,导致数据传输量大、传输频率高,容易造成网络堵塞和延迟的问题。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式
。
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中 图I是现有的Scribe收集日志的示意图;图2示出了根据本发明一个实施例的一种日志收集系统的框图;图3示出了根据本发明一个实施例的一种日志收集系统的客户端的结构图;图4示出了根据本发明一个实施例的一种收集数据的方法的流程图。
具体实施例方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。图2示出了根据本发明一个实施例的一种日志收集系统的框图。如图2所示,该系统包括服务器端202和多个客户端201。多个客户端201分别部署于不同的需要收集各种数据的生产服务器上。每个客户端201收集自身所在生产服务器所产生的数据并发送给服务器端202,服务器端202接收各个客户端201发回的数据,进行本地存储或者转发给其他的服务器。具体来说每个客户端201,适于获取生产服务器所产生的对应不同类别业务的数据,将所获取的数据按照对应的不同类别的业务分类存放。其中,每条数据包含一个以上的字段,不同的字段具有不同的类型,且每条数据的至少一个字段标识有关键码;每种类别业务都有一个对应的定时周期;每个客户端201,在每种类别业务对应的定时周期结束时,将所保存的该类别业务的数据中的,标识有关键码的字段的值相同的数据归并为一条数据后发送给所述服务器端202 ;服务器端202,适于从各客户端201接收数据,并进行存储或转发。这里,同一种类别业务的数据的数据格式相同,即数据所包含的字段个数和各字段的类型都相同。各类别的业务的可以根据实际需求定义数据的格式,即可以根据实际业务需求定义一条数据所包含的字段个数和各字段的类型。例如,可以定义如下类型的字段求和类型(SUM_INT)、求平均类型(AVG_INT)、最大值类型(MAX_INT)、常字符类型(CONST_STRING)和累加字符类型(CONST_STRING)等。设置这些字段的目的是为了针对各种不同类型业务的数据做各种优化处理,使得数据占用空间少,在分析处理数据时速度更快,占用内存更少,更容易识别每个字段的含义,并为后面的归并做好准备。每个客户端201根据配置维护多个“盒子”,每个盒子存放相同格式的数据。也就是说一种类别业务对应一个“盒子”,该类别业务的数据存放到该对应的盒子里。客户端201将收集到的数据,根据其数据格式决定存放在哪个盒子中。在某个盒子的一个周期结束时,客户端201将该盒子中的数据做一次归并处理,然后发送给服务器端202。在本发明中,作为归并的依据,在数据的某些字段上标识关键码(“Key”属性),在做数据归并时,会比较数据中的标识有关键码的字段,只有标识有关键码的字段的值相同 的数据才可以归并为一条数据。客户端201在每种类别业务对应的定时周期结束时,将所保存的该类别业务的数据中的,标识有关键码的字段的值相同的数据归并为一条数据时,对没有标识关键码的字段,按照不同的类型进行不同的归并处理。即字段类型不同,其归并方式也不同。客户端201,在按照不同的类型对没有标识关键码的字段进行不同的归并处理时,可以采用以下一种或多种的组合(I)对于求和类型的字段在归并时,将标识有关键码的字段的值相同的各数据的求和类型字段上的数值相加,其和作为归并后数据的求和类型字段的值;(2)对于求平均类型的字段在归并时,将标识有关键码的字段的值相同的各数据的求平均类型字段上的数值求平均,其均值作为归并后数据的求平均类型字段的值;(3)对于最大值类型的字段在归并时,从标识有关键码的字段的值相同的各数据的最大值类型字段上的值中找出最大值,作为归并后数据的最大值类型字段的值;(4)对于常字符类型的字段在归并时,从标识有关键码的字段的值相同的各数据中取第一条数据的常字符类型字段上的值,作为归并后数据的常字符类型字段的值;(5)对于累加字符类型的字段在归并时,将标识有关键码的字段的值相同的各数据的累加字符类型字段上的字符按指定顺序串接后,作为归并后数据的累加字符类型字段的值。以上举例了 5种字段类型以及其各自对应的归并方式。但本发明中的字段类型不限于以上的5种,可以根据实际业务需求定义更多类型的字段以及其归并方式。例如还可以定义浮点数求平均类型(AVG_FL0AT),最小值类型(MIN_INT)和浮点数求和类型(SUM_FLOAT)等,这里不再一一详述。下面给出一个对数据进行归并处理的具体例子。定义一个登陆业务的数据格式,该数据格式用于对登陆业务——“一个用户访问一个页面的次数”的数据进行记录,对应地在客户端上维护一个“盒子”,叫“Login”,周期是300 秒,则数据格式具体为Login (3OO) user_id KEY_STR, script KEY_STR, number SUM_INT, datetime TIME_FL00R ;该数据格式包括4个字段,前两个字段user_id和script上标识有关键码KEY_STR,后两个字段number和datetime的类型分别为求和类型(SUM_INT)和地板时间类型(TIME_FL00R)o定义完成之后,就可以在生产服务器上发送符合各个字段类型的数据,部署于该生产服务器上的客户端对发送的数据进行收集。比如在2012-09-2100:00:00到2012-09-2100:04:59之间客户端收集的数据如表I所示
权利要求
1.一种日志收集系统,包括服务器端和部署于不同生产服务器上的多个客户端, 所述客户端,适于获取生产服务器所产生的对应不同类别业务的数据,并将特定标识的数据归并为一条数据后发送给所述服务器端; 所述服务器端,适于从各客户端接收数据,并进行存储或转发。
2.如权利要求I所述的系统,其中,所述客户端包括数据获取单元、归并处理单元和多个存储单元,所述多个存储单元分别对应不同类别的业务,且每个存储单元都有一个对应的定时周期; 所述数据获取单元,适于从生产服务器获取对应不同类别业务的数据,将所获取的数据按照对应的不同类别的业务分发到对应的存储单元进行保存;其中,每条数据包含一个以上的字段,不同的字段具有不同的类型,且每条数据的至少一个字段标识有关键码;每个存储单元,适于保存来自数据获取单元的数据; 所述归并处理单元,适于在每个存储单元对应的定时周期结束时,将该存储单元所保存的数据中的标识有关键码的字段的值相同的数据归并为一条数据后发送给服务器端。
3.如权利要求2所述的系统,其中, 所述归并处理单元,进一步适于在每种类别业务对应的定时周期结束时,将所保存的该类别业务的数据中的标识有关键码的字段的值相同的数据归并为一条数据时,对没有标识关键码的字段,按照不同的类型进行不同的归并处理。
4.如权利要求3所述的系统,其中, 归并处理单元,进一步适于在按照不同的类型对没有标识关键码的字段进行不同的归并处理时,采用以下一种或多种的组合 对于求和类型的字段,将标识有关键码的字段的值相同的各数据的该字段上的数值相力口,其和作为归并后该字段的值; 对于求平均类型的字段,将标识有关键码的字段的值相同的各数据的该字段上的数值求平均,其均值作为归并后该字段的值; 对于最大值类型的字段,从标识有关键码的字段的值相同的各数据的该字段上的值中找出最大值,作为归并后该字段的值; 对于常字符类型的字段,从标识有关键码的字段的值相同的各数据中取第一条数据的该字段上的值,作为归并后该字段的值; 对于累加字符类型的字段,将标识有关键码的字段的值相同的各数据的该字段上的字符按指定顺序串接后,作为归并后该字段的值。
5.如权利要求I至4中任一项所述的系统,其中, 所述服务器端,适于将所接收的数据转发给其它的服务器,或转发到数据库设备,或保存成本地文件。
全文摘要
本发明公开了一种日志收集系统,属于互联网技术领域。本发明的方案包括服务器端和部署于不同生产服务器上的多个客户端,所述客户端,适于获取生产服务器所产生的对应不同类别业务的数据,并将特定标识的数据归并为一条数据后发送给所述服务器端;所述服务器端,适于从各客户端接收数据,并进行存储或转发。本发明的技术方案,可以传送包含任意个数字段的数据,使得数据的传送不再有诸多限制,并在客户端对数据进行了归并处理,因此避免了因传输大量的相同或类似的数据,造成网络堵塞和延迟的问题。
文档编号H04L12/24GK102902813SQ20121040469
公开日2013年1月30日 申请日期2012年10月22日 优先权日2012年10月22日
发明者张珂, 郝国梁 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司