本发明实施例提供一种日志传输方法及装置,所述方法包括:监听并获取日志数据;将监听获取到的日志数据依次转存到数据转存队列中;从所述数据转存队列中读取日志数据,根据包含日志的存储类型和日志存储服务器的对应关系的日志类型配置对应表,确定所述日志数据需要存储的对应的日志存储服务器,将所述日志数据发送到对应的日志存储服务器上。上述技术方案具有如下有益效果:降低了日志产生业务方的接入门槛,解决了现有技术特定协议的接入不灵活的问题和日志消息实时性的问题,顺便解决了日志吞吐量的问题,最终使得业务方随便选择一个自己团队熟悉的接入方式即可,不再需要业务方考虑日志消息的实时性问题和日志存储服务对接方式的解决方案。
说明 一种日志传输方法及装置技术领域
[0001 ]本发明涉及网络日志技术领域,尤其涉及一种日志传输方法及装置。
背景技术
[0002] 现有技术在日志传输方面一般都是开源解决方案,如Scribe (Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到大量的应用)、Flume (Flume最早是Cloudera提供的日志收集系统,目前是Apache下的一个孵化项目,Flume支持在日志系统中定制各类数据发送方,用于收集数据)或者通过编写脚本将本地文件定期传输到处理节点上,对于有些属于事务类型的日志,这些方式传输无法达到实时传输,trace(追踪)类型的日志可以用以上方式传输,但是如果日志传输用两套解决方案势必会增加业务团队的工作量,维护成本也会随之增加。
发明内容
[0003]本发明实施例提供一种日志传输方法及装置,以降低日志产生业务方的接入门槛。
[0004] —方面,本发明实施例提供了一种日志传输方法,所述方法包括:
[0005]监听并获取日志数据;
[0006]将监听获取到的日志数据依次转存到数据转存队列中;
[0007]从所述数据转存队列中读取日志数据,根据包含日志的存储类型和日志存储服务器的对应关系的日志类型配置对应表,确定所述日志数据需要存储的对应的日志存储服务器,将所述日志数据发送到对应的日志存储服务器上。
[0008]另一方面,本发明实施例提供了一种日志传输装置,所述装置包括:
[0009]日志数据获取单元,用于监听并获取日志数据;
[0010]数据转存队列单元,用于将监听获取到的日志数据依次转存到数据转存队列中;[0011 ]日志存储适配单元,用于从所述数据转存队列中读取日志数据,根据包含日志的存储类型和日志存储服务器的对应关系的日志类型配置对应表,确定所述日志数据需要存储的对应的日志存储服务器,将所述日志数据发送到对应的日志存储服务器上。
[0012]上述技术方案具有如下有益效果:降低了日志产生业务方的接入门槛,解决了现有技术特定协议的接入不灵活的问题和日志消息实时性的问题,顺便解决了日志吞吐量的问题,最终使得业务方随便选择一个自己团队熟悉的接入方式即可,不再需要业务方考虑日志消息的实时性问题和日志存储服务对接方式的解决方案。
附图说明
[0013]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0014]图1为本发明实施例一种日志传输方法流程图;
[0015]图2为本发明实施例一种日志传输装置结构示意图;
[0016]图3为本发明实施例一种日志数据获取单元结构示意图;
[0017]图4为本发明实施例另一种日志传输装置结构示意图;
[0018]图5为本发明应用实例一种日志传输流程示意图;
[0019]图6为本发明应用实例日志数据的统一的数据封装数据格式示意图。
具体实施方式
[0020]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0021 ]如图1所示,为本发明实施例一种日志传输方法流程图,所述方法包括:
[0022] 101、监听并获取日志数据;
[0023] 102、将监听获取到的日志数据依次转存到数据转存队列中;
[0024] 103、从所述数据转存队列中读取日志数据,根据包含日志的存储类型和日志存储服务器的对应关系的日志类型配置对应表,确定所述日志数据需要存储的对应的日志存储服务器,将所述日志数据发送到对应的日志存储服务器上。
[0025]优选地,所述日志数据包括:不同的网络协议数据、发生变更的目录或文件数据。
[0026]优选地,监听并获取所述不同的网络协议数据具体包括:监听并获取超文本传输协议Http数据;监听并获取分布式的高速缓存系统使用的应用层协议Memcache数据;监听并获取公司内部应用层通讯协议Adhead数据。
[0027]优选地,监听并获取所述不同的网络协议数据后,所述方法还包括:对不同的网络协议数据分别进行网络协议适配,然后进行网络协议解析,获得需要传输的日志数据;将解析出的不同的网络协议数据对应的需要传输的日志数据和所述发生变更的目录或文件数据,封装为一个统一的数据格式,然后再依次转存到所述数据转存队列中。
[0028]优选地,所述统一的数据格式包括:日志的存储类型,要转存的日志数据,用于保证时序一致的哈希身份标识号hashid。
[0029]如图2所示,为本发明实施例一种日志传输装置结构示意图,所述装置包括:
[0030]日志数据获取单元21,用于监听并获取日志数据;
[0031]数据转存队列单元22,用于将监听获取到的日志数据依次转存到数据转存队列中;
[0032]日志存储适配单元23,用于从所述数据转存队列中读取日志数据,根据包含日志的存储类型和日志存储服务器的对应关系的日志类型配置对应表,确定所述日志数据需要存储的对应的日志存储服务器,将所述日志数据发送到对应的日志存储服务器上。
[0033]优选地,如图3所示,为本发明实施例一种日志数据获取单元结构示意图,所述日志数据获取单元21包括:
[0034]网络数据获取模块211,用于监听并获取不同的网络协议数据;
[0035]目录文件数据获取模块212,用于监听并获取发生变更的目录或文件数据。
[0036]优选地,所述网络数据获取模块211,具体用于监听并获取超文本传输协议Http数据;还具体用于监听并获取分布式的高速缓存系统使用的应用层协议Memcache数据;还具体用于监听并获取公司内部应用层通讯协议Adhead数据。
[0037]优选地,如图4所示,为本发明实施例另一种日志传输装置结构示意图,所述装置不但包括日志数据获取单元21、数据转存队列单元22、日志存储适配单元23,还包括:
[0038]网络协议适配单元24,用于所述日志数据获取单元监听并获取不同的网络协议数据后,对不同的网络协议数据分别进行网络协议适配,然后进行网络协议解析,获得需要传输的日志数据;
[0039]统一数据格式封装单元25,用于将解析出的不同的网络协议数据对应的需要传输的日志数据和所述发生变更的目录或文件数据,封装为一个统一的数据格式,然后再依次转存到所述数据转存队列中。
[0040]优选地,所述统一的数据格式包括:日志的存储类型,要转存的日志数据,用于保证时序一致的hashid。
[0041]本发明实施例上述技术方案具有如下有益效果:降低了日志产生业务方的接入门槛,解决了现有技术特定协议的接入不灵活的问题和日志消息实时性的问题,顺便解决了日志吞吐量的问题,最终使得业务方随便选择一个自己团队熟悉的接入方式即可,不再需要业务方考虑日志消息的实时性问题和日志存储服务对接方式的解决方案。
[0042]以下结合应用实例对本发明实施例上述技术方案进行详细说明:
[0043]现有的技术方案的缺点是对于传输事务类型的日志在实时性方面没有办法保证,或者支持网络传输的传输中间件是特定的自定义协议,增加业务方接入的门槛,事务日志必须业务方自己出方案解决实时性的问题。
[0044]如图5所示,为本发明应用实例一种日志传输流程示意图。本发明应用实例技术方案的重点是解决上述特定协议的接入不灵活的问题和日志消息实时性的问题,顺便解决了日志吞吐量的问题,最终使得业务方随便选择一个自己团队熟悉的接入方式即可,不再需要业务方考虑日志消息的实时性问题和日志存储服务对接方式的解决方案。
[0045]由于本发明应用实例方案是支持多种协议传输日志的,在方案设计中就考虑了多种网络协议的适配,在实际生产系统中目前支持Http(HyperText Transfer Protocol,超文本传输协议)、Memcache协议(Memcached是分布式的高速缓存系统,而Memcache协议一般指Memcached这个服务中使用的应用层协议)、公司内部应用层通讯协议(Adhead)等通用协议,本方案的系统实际上不仅仅局限于上述三种网络协议,在生产环境下可以通过增加协议配置文件的方式来支持新的网络协议。为了不引起歧义,在下文的阐述中所有网络协议用协议A、协议B等来指代某种应用层网络传输协议。由于在现实生产环境中有实时传输文件日志的需求,所以本方案除了支持多种网络协议外,还支持文件数据实时传输(文件传输数据从广义的角度看也是一种协议),针对文件数据实时传输和网络协议传输二者在处理方式上的不同,本方案将分为两大类日志数据分别处理,最终通过一个数据转存队列(在内存中构建的一个数据结构统一的队列)将二者的数据进行汇总,供后续的日志存储适配单元处理。
[0046]本发明应用实例系统设计大致分为三大单元,包括日志数据获取单元、数据转存队列单元、日志存储适配单元,日志数据获取单元主要负责获取日志,并且将获取到的日志转化为一个统一的数据格式,由数据转存队列单元转存到中间数据转存队列中,日志存储适配单元从数据转存队列中读取日志数据根据配置发送到对应的日志存储服务器上。具体的数据流关系如下:
[0047] 1.日志数据获取
[0048]其一,主要负责将给定配置的文件或目录,甚至是递归目录中的数据读取转存到中间数据转存队列中,具体实时读取传输是通过操作系统内核的Inotify机制(一种内核用于通知用户空间程序文件系统变化的机制)监听文件或者目录的变更事件,当有文件系统事件变更时会将事件存放到事件处理队列中,事件解析线程异步的从事件处理队列中进行解析事件,如果是新增目录事件则将新增目录添加监听操作,继续监听该目录下的文件,如果是文件写操作事件,则证明该文件有内容写入,读取数据线程开始读取该文件,将读取到的数据存入数据转存队列中。监听动态配置管理是为了本方案在不重启服务的同时,动态添加删除传输的文件和目录,Inotify Watcher(本方案中利用操作系统内核Inotify机制封装的一个文件系统监听子流程)负责加载需要监听的目录和文件,Inotify Watcher将文件系统变化的事件交给Inotify paser(本方案中负责解析内核文件系统变化事件,做对应处理的子流程)来做对应的处理。最终将解析好的事件存放到文件系统变化事件队列中,供File Reader(—个负责读取变更文件内容到数据转存队列中的子流程)来读取变更的文件内容,存到数据转存队列中。需要说明的是本方案为了整体系统性能考虑,将InotifyWatch、Inotify Paser、File Reader三个子流程是在不同的线程中运算处理,这也是为什么会用到事件队列的原因。以上是本方案如何实现实时读取文件到数据转存队列的整个技术逻辑。
[0049]其二,主要对于本方案来说提供了一个可以方便接入任何应用层通讯网络协议的框架,以及实现了通用的网络协议,对于某个协议来说工作流程是创建一个协议的通信对象,通过不同的端口来区分不同的网络协议,通信对象中实现各自协议的解析处理接口和数据处理接口,对于每个协议都只需实现解析处理接口和数据处理接口这两个接口即可对接到本方案的日志数据获取单元中,因为接受连接处理线程的逻辑对于各种协议是通用的,所以协议接受连接处理线程是Tcp Server在注入对应协议的时候,创建对应的接受连接处理线程,当接受到连接后,TCP Server会将连接交给服务的处理线程池,为了合理的利用资源,不用频繁申请资源,释放资源,数据处理和协议解析部分采用线程池,所有协议利用一个线程池,提升系统资源利用率。通过协议解析出来的传输日志数据存到转存队列中供日志存储适配单元将日志传输到最终的日志存储服务器上。
[0050] 2.转存到数据转存队列
[0051]为了转存到数据转存队列,需要封装为一个统一的数据格式,对不同的网络协议数据分别进行网络协议适配,然后进行网络协议解析,获得需要传输的日志数据后,将解析出的不同的网络协议数据对应的需要传输的日志数据和所述发生变更的目录或文件数据,封装为一个统一的数据格式,然后再依次转存到所述数据转存队列中。
[0052]如图6所示,为本发明应用实例日志数据的统一的数据封装数据格式示意图,所述统一的数据格式包括:日志的存储类型type,要转存的日志数据message,用于保证时序一致的hashid。
[0053] 3.日志存储适配
[0054]日志存储适配单元最终将日志发送到日志中心节点、日志中心节点可以是Kafka(Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据)、Scribe节点等常用的日志存储中心。由于本方案是支持多协议转发数据的,Kafka、Scribe存储服务仅仅是目前公司常用的存储服务,不仅仅局限于上述两个类型的存储服务。如果有新的存储服务可以只需增加对应的存储服务API (Appli cat 1nProgramming Interface,应用程序编程接口)即可加入,故下面阐述中用存储服务A、存储服务B等来指代。通过上面的日志数据获取单元将日志导入到一个中间的数据转存队列中,封装为一个统一的数据格式,利用日志类型配置对应表,即每条数据中日志的存储类型type字段和对应的日志类型配置对应表可以得到该日志将要发送到的日志存储服务器,调用将要发送到的日志存储服务器的API将最终的日志发送到日志存储服务器中。
[0055]本发明应用实例可以解决日志实时性的问题;提供多种传输协议或传输方式降低了日志产生业务方的接入门槛;日志传输最终目的地可以灵活配置,可以是Kafka也可以是某个Scribe节点。日志数据获取单元支持分布式部署,通过Nginx(是一款轻量级的Web服务器/反向代理服务器及电子邮件(MAP/P0P3)代理服务器)等代理中间件做负载均衡,可以灵活的动态扩容。
[0056]应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。
[0057]在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要比清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。
[0058]为使本领域内的任何技术人员能够实现或者使用本发明,上面对所公开实施例进行了描述。对于本领域技术人员来说;这些实施例的各种修改方式都是显而易见的,并且本文定义的一般原理也可以在不脱离本公开的精神和保护范围的基础上适用于其它实施例。因此,本公开并不限于本文给出的实施例,而是与本申请公开的原理和新颖性特征的最广范围相一致。
[0059]上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。
[0060]本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(:^丨6代1^1^6313;[1;^7),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
[0061]本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
[0062]本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。
[0063]在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于RAM、R0M、EEPR0M、⑶-ROM或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、锡射盘、光盘、DVD、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。
[0064]以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。