一种存储日志数据的方法及日志数据存储系统技术方案

技术编号:8242724 阅读:247 留言:0更新日期:2013-01-24 23:43
本发明专利技术公开了一种存储日志数据的方法及日志数据存储系统。获取为待存储业务日志分配的日志ID及日志数据结构;启动日志上报代理,在业务程序中链接预先获得的API;在业务程序中调用API,传入参数为日志ID及该日志ID对应日志数据结构的各个字段;API将日志数据封装后输出至共享内存进行缓存;日志上报代理首先读取共享内存中的日志数据,解析出日志数据中包含的日志ID等信息,根据这些信息将读到的日志数据写入缓存文件中;再通过与日志服务器间的网络连接将缓存文件中数据上报至日志服务器存储。应用本发明专利技术,建立跨业务的集中式日志服务系统,可以提高资源利用效率、提升日志数据存储的可靠性。

【技术实现步骤摘要】
一种存储日志数据的方法及日志数据存储系统
本专利技术涉及计算机信息处理技术,特别涉及一种存储日志数据的方法及日志数据存储系统。
技术介绍
随着计算机互联网技术的快速发展,互联网上的业务以及业务中的应用数量也迎来了爆发性的增长,用户每天在使用运营商提供的这些业务及应用产品时,会产生大量的业务使用记录数据,而如何可靠地存储并收集用户使用这些应用产生的业务使用记录数据,以利于后续能够对存储的业务使用记录数据进行提取,进而运用数据分析、数据挖掘等技术,统计并分析业务使用记录数据中包含的用户习惯以及用户特征行为,从中找出对运营商有价值的信息,从而指导应用产品改进、拓展以及推出新的应用产品,帮助应用产品推广,显得极为重要。现有技术中,业务及应用产品运营过程中产生的各种用户业务使用记录数据,通常以日志数据的形式进行存储,存储方法大概分为两种,下面进行简要说明。其一,各客户端通过内嵌在业务程序内部的日志模块进行日志输出,并在本地存储各业务产生的日志数据,然后通过预先编制的调用程序,将存储在本地的各业务日志数据集中起来以备后续分析。由于运营商在进行日志数据分析时,需要提取多个客户端、多个用户使用业务程序产生的日志数据,因而,该方案中,需要日志数据分析人员分别从不同客户端采集日志数据,使得人力成本较高、操作不方便,基于此,提出了下面第二种日志数据存储方法。其二,采用客户端/服务器(C/S,Client/Server)架构的日志数据存储系统存储方式,日志数据存储系统包括客户端以及日志服务器,客户端通过自定义协议与日志服务器进行通信,并协同工作,即各客户端将用户在应用产品运营过程中产生的日志数据,根据与日志服务器协商确定的自定义协议进行封装后,通过网络传输到日志服务器,日志服务器将接收的日志数据保存下来以备后续分析、统计。其中,客户端可以为一个或多个,日志服务器也可以为一个或多个。这样,各客户端通过网络传输与日志服务器相连,无需日志数据分析人员进行人工采集,操作较为方便,降低了人力成本。但是,由于各客户端根据与日志服务器协商的自定义协议来封装、保存日志数据,没有规范、统一的日志数据结构,导致不同业务上报到服务器的日志,其日志数据结构不一致,使得日志服务器需要对不同业务产生的日志数据进行日志数据结构的统一再进行存储,以利后续分析,需要耗费一定的计算资源,使得日志数据存储系统资源利用效率较低。进一步地,如果日志服务端出错,或者由于日志服务器升级维护等原因暂时不能提供服务,则会导致传输的日志数据的丢失,降低了日志数据存储的可靠性。
技术实现思路
有鉴于此,本专利技术的主要目的在于提出一种存储日志数据的方法,提高资源利用效率、提升日志数据存储的可靠性。本专利技术的另一目的在于提出一种日志数据存储系统,提高资源利用效率、提升日志数据存储的可靠性。为达到上述目的,本专利技术提供了一种存储日志数据的方法,该方法包括:当需要接入新的业务到日志服务器时,在日志服务器的web管理页面上为待接入的业务申请日志ID,并定义日志ID对应的日志数据结构;在客户端中设置并启动日志上报代理;获取API库模块中存储的API,业务程序将通过调用API库模块中的API来上报业务程序产生的日志数据;根据申请的业务日志ID对应的日志数据结构,封装业务程序产生的日志数据,调用已获取的API,API将日志数据组织后输出至客户端本地的共享内存进行存储;客户端本地的共享内存中维护了一个循环队列,队列中存储的是业务日志数据;日志上报代理读取共享内存中的日志数据,根据日志数据包含的日志ID,将读取的日志数据写入客户端本地的缓存文件夹中相应的缓存文件中,日志上报代理再通过与日志服务器之间的网络连接,将缓存文件中的日志数据上报至日志服务器存储。所述在日志服务器的web管理页面上为待接入的业务日志申请日志ID,并定义日志ID对应的日志数据结构包括:当有新的业务需要接入该日志服务器,业务开发人员到该日志服务器的web管理页面上为该业务申请日志ID,申请时定义该日志ID对应的日志数据结构,日志数据结构是字段式的,在定义的时候指定每个字段的名称,数据类型,代表的含义。在为待接入的业务申请日志ID后,进一步包括:设置该日志ID对应的日志数据在日志服务器中的存储方式:所述存储方式包括mysql数据库存储以及日志文件存储,所述mysql数据库存储方式为日志服务器将业务日志数据实时的写入mysql数据库中,所述日志文件存储方式为将数据写入文本文件中。进一步包括:日志服务器成功接收日志数据并保存之后,反馈信息给日志上报代理,日志上报代理删除客户端对应的缓存文件。所述将缓存文件中的日志数据上报至日志服务器存储包括:日志服务器接收客户端上报的日志数据,根据日志数据包含的日志ID,最终将同一日志ID对应的日志数据保存在一起,根据申请时指定的存储方式不同,或者写入mysql数据库中,或者写入文本文件中。进一步包括:基于日志服务器存储的日志数据进行数据分析。一种日志数据存储系统,该系统包括:客户端以及日志服务器,其中,客户端为需要上报日志数据的业务程序所在机器;业务程序开发人员申请得到业务对应的日志ID;在客户端启动日志上报代理,在业务程序中链接预先获得的API;在业务程序中调用预先获得的API,传入参数为日志ID及该日志ID对应日志数据结构的各个字段;API将日志数据封装后输出至客户端本地的共享内存进行缓存;日志上报代理首先读取共享内存中的日志数据,解析出日志数据中包含的日志ID,根据解析的信息将读到的日志数据写入客户端本地的缓存文件夹中的缓存文件中;日志上报代理再通过与日志服务器间的网络连接将缓存文件中数据上报至日志服务器存储;日志服务器保存成功后返回确认信息给上报代理,上报代理删除对应的缓存文件;日志服务器,提供web管理页面,供待接入的业务开发人员申请日志ID,并查看日志ID对应的日志数据;通过网络连接接收日志上报代理上报的日志数据进行存储,并且在连接建立的时候根据IP地址对日志上报代理进行权限检查,没有权限的日志上报代理上报的日志数据被直接丢弃。所述客户端包括:API库模块、日志上报代理程序、共享内存模块、缓存文件模块以及网络通信模块,其中,API库模块,存储有包括各API的API库,业务程序将其链接到程序中,通过调用API库中的API来上报业务日志数据;日志上报代理程序,该程序是一个常驻客户端的程序,周期性的检查共享内存模块中是否有新的日志数据;有数据则读取共享内存模块存储的日志数据,将日志数据写入缓存文件模块中的缓存文件中,再通过与日志服务器间的网络连接,将缓存文件中包含的日志数据上报至日志服务器;共享内存模块,用于缓存API库模块封装的日志数据,并在共享内存模块中维护一个循环队列数据结构,提供同步机制以便并发读写;缓存文件模块,用于按照日志ID分类存储日志上报代理模块从共享内存模块读取的日志数据,用缓存文件的方式进行存储;网络通信模块,用于跟日志服务器建立网络通信,连接成功后将日志数据上报到日志服务器,并在日志服务器回复确认之后删除本地对应的缓存文件。所述日志服务器包括:网络通信模块、日志管理模块以及缓存文件模块,其中,网络通信模块,用于接收客户端日志上报代理发来的连接请求,成功建立连接后,接收其发本文档来自技高网
...
一种存储日志数据的方法及日志数据存储系统

【技术保护点】
一种存储日志数据的方法,其特征在于,该方法包括:当需要接入新的业务到日志服务器时,在日志服务器的web管理页面上为待接入的业务申请日志ID,并定义日志ID对应的日志数据结构;在客户端中设置并启动日志上报代理;获取API库模块中存储的API,业务程序将通过调用API库模块中的API来上报业务程序产生的日志数据;根据申请的业务日志ID对应的日志数据结构,封装业务程序产生的日志数据,调用已获取的API,API将日志数据组织后输出至共享内存进行存储;共享内存中维护了一个循环队列,队列中存储的是业务日志数据;日志上报代理读取共享内存中的日志数据,根据日志数据包含的日志ID,将读取的日志数据写入缓存文件夹中相应的缓存文件中,日志上报代理再通过与日志服务器之间的网络连接,将缓存文件中的日志数据上报至日志服务器存储。

【技术特征摘要】
1.一种存储日志数据的方法,其特征在于,该方法包括:当需要接入新的业务到日志服务器时,在日志服务器的web管理页面上为待接入的业务申请日志ID,并定义日志ID对应的日志数据结构;在客户端中设置并启动日志上报代理;获取API库模块中存储的API,业务程序将通过调用API库模块中的API来上报业务程序产生的日志数据;根据申请的业务日志ID对应的日志数据结构,封装业务程序产生的日志数据,调用已获取的API,API将日志数据组织后输出至客户端本地的共享内存进行存储;客户端本地的共享内存中维护了一个循环队列,队列中存储的是业务日志数据;日志上报代理读取共享内存中的日志数据,根据日志数据包含的日志ID,将读取的日志数据写入客户端本地的缓存文件夹中相应的缓存文件中,日志上报代理再通过与日志服务器之间的网络连接,将缓存文件中的日志数据上报至日志服务器存储。2.如权利要求1所述的方法,其特征在于,所述在日志服务器的web管理页面上为待接入的业务日志申请日志ID,并定义日志ID对应的日志数据结构包括:当有新的业务需要接入该日志服务器,业务开发人员到该日志服务器的web管理页面上为该业务申请日志ID,申请时定义该日志ID对应的日志数据结构,日志数据结构是字段式的,在定义的时候指定每个字段的名称,数据类型,代表的含义。3.如权利要求2所述的方法,其特征在于,在为待接入的业务申请日志ID后,进一步包括:设置该日志ID对应的日志数据在日志服务器中的存储方式:所述存储方式包括mysql数据库存储以及日志文件存储,所述mysql数据库存储方式为日志服务器将业务日志数据实时的写入mysql数据库中,所述日志文件存储方式为将数据写入文本文件中。4.如权利要求1至3任一项所述的方法,其特征在于,进一步包括:日志服务器成功接收日志数据并保存之后,反馈信息给日志上报代理,日志上报代理删除客户端对应的缓存文件。5.如权利要求1所述的方法,其特征在于,所述将缓存文件中的日志数据上报至日志服务器存储包括:日志服务器接收客户端上报的日志数据,根据日志数据包含的日志ID,最终将同一日志ID对应的日志数据保存在一起,根据申请时指定的存储方式不同,或者写入mysql数据库中,或者写入文本文件中。6.如权利要求5所述的方法,其特征在于,进一步包括:基于日志服务器存储的日志数据进行数据分析。7.一种日志数据存储系统,其特征在于,该系统包括:客户端以及日志服务器,其中,客户端为需要上报日志数据的业务程序所在机器;业务程序开发人员申请得到业务对应的日志ID;在客户端启动日志上报代理,在业务程序中链接预先获得的API;在业务程序中调用预先获得的API,传入参数为日志ID及该日志ID对应日志数据结构的各个字段;API将日志数据封装后输出至客户端本地的共享内存进行缓存;日志上报代理首先读取共享内存中的日志数据,解析出日志数据中包含的日志ID,根据解析的信息将读到的日志数据写入客户端本地的缓存文件夹中的缓存文件中;日志上报代理再通过与日志服务器间的网络连接...

【专利技术属性】
技术研发人员:丁锐蒋悦刘明亮
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1