具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
第一实施例
图2是本发明第一实施例提供的日志处理的配置方法的流程图。本实施例的技术方案适用于进行日志处理的情况,该日志可以为网络访问日志、设备运行日志、终端运行日志等各种类型的日志,本实施例对此并不进行限制。本实施例的方法适用在由配置服务器和至少一个服务端设备沟通的日志处理系统中。图1为本发明第一实施例所适用的日志处理系统的架构示意图,如图1所示,日志处理系统包括日志收集模块111、实时日志处理模块112、实时通信模块121和用户交互模块122,还可进一步包括监控模块123,各模块中还可进一步划分为单元,具体内容将在后续实施例中详细介绍。其中,实时通信模块121、用户交互模块122以及监控模块123通常集成于配置服务器120中,该配置服务器120是获取用户日志处理需求、输出日志结果以及对日志处理系统进行控制的服务器。日志收集模块111和实时日志处理模块112则可以集成于服务端设备110中。服务端设备110的数量为至少一个,但实际应用中通常为多个服务端设备110构成服务端设备集群,每个服务端设备110都是有独立功能,提供某种服务的服务器或终端,其产生自身运行的日志,以进行日志处理和结果输出。
本实施例提供的日志处理的配置方法,由配置服务器来执行,具体包括:
S210,配置服务器获取日志规则配置信息。
所述配置服务器可通过网络与用户交互,优选形式是通过用户交互模块提供一用户交互界面,供用户输入配置信息,以及向用户显示日志处理结果。当然,也可采用服务器和客户端的交互形式。
日志规则配置信息是对服务端设备进行日志处理的处理过程进行定义的配置信息。日志规则配置信息可由用户预先设置也可实时进行更新,可以是由配置服务器接收用户输入的独立配置参数,组合成为日志规则配置信息,也可以是由用户提交设定格式的文件,记录日志规则配置信息。
本实施例中,日志规则配置信息的典型内容设置可至少包括业务名称、设备标识、关键字和关键字参数值。业务名称和设备标识用于区别待配置的服务端设备,关键字和关键字参数值为实际的配置内容。所述日志规则配置信息还可以包括至少一种日志解析例程,以指示所述服务端设备根据日志标识选择对应的日志解析例程进行日志数据解析。即日志规则配置信息不仅可以变更服务端设备中处理日志所采用的参数,还可以配置所采用的处理例程等程序。
优选的,所述日志规则配置信息可以是按照protobuf规范生成的,也可以是按照JSON规范生成的,还可以是按照XML规范生成的。
S220,所述配置服务器根据日志规则配置信息中的设备标识,向对应的服务端设备发送所述日志规则配置信息中的配置规则。
由于每个服务端设备都作为一个单独的计算设备参与日志处理,所以所述配置服务器需要根据接收的日志规则配置信息对各服务端设备进行配置。
所述日志规则配置信息由不同的配置规则条目组成,并且每一个配置规则条目都包括设备标识字段。通过所述设备标识字段,所述配置服务器可以识别该配置规则条目应当是适用于哪一个服务端设备的日志规则配置信息。所述配置服务器在通过设备标识字段识别配置规则的目的服务端设备后,向对应的服务端设备发送配置规则,该操作可以由实时通信模块来实现。
S230,所述配置服务器接收服务端设备基于所述配置规则进行处理后输出的日志结果。
配置服务器将配置规则发送至服务端设备后,服务端设备根据所述配置服务器发送的配置规则对日志进行处理。服务端设备对日志进行处理的结果就是日志结果。
服务端设备对日志处理完成后,将所述日志结果发送到所述配置服务器,以便配置服务器将日志结果反馈给用户。
本实施例通过获取日志规则配置信息,并发送给对应的服务端设备,使得配置服务器能够依据用户需求对服务端设备的日志处理过程进行灵活配置,提高了代码的重用率,有助于日志处理系统与不同处理需求的匹配,降低了开发成本。
第二实施例
图3是本发明第二实施例提供的日志处理的配置方法的流程图。所述日志处理的配置方法以本发明第二实施例为基础,进一步的,所述日志处理的配置方法还包括所述配置服务器监控获取本机和至少一个服务端设备中的状态信息,并根据所述状态信息进行预警或展示,该操作可以由配置服务器中设置的监控模块来执行。参见图3,所述日志处理的配置方法包括:
S310,配置服务器获取日志规则配置信息。
S320,所述配置服务器根据日志规则配置信息中的设备标识,向对应的服务端设备发送日志规则配置信息中的配置规则。
S330,所述配置服务器接收服务端设备基于所述配置规则进行处理后输出的日志结果。
S340,所述配置服务器监控获取本机和至少一个服务端设备中的状态信息,并根据所述状态信息进行预警或展示。
在配置服务器及至少一个服务端设备运行时,所述配置服务器还对它自身以及与它相连接的至少一个服务端设备进行监控,以获取各种状态信息。在获取所述状态信息之后,所述配置服务器根据所述状态信息进行预警或展示。
所述配置服务器可以在本机上根据所述状态信息进行预警或展示,例如可以将所述状态信息发送给用户。
需要说明的是,对本机以及至少一个服务端设备的监控可以是与配置服务器的日志规则配置信息的接收和发送,以及服务端设备的日志处理计算同步运行的过程。也就是说,所述配置服务器在其本机以及服务端设备运行的同时,对本机及至少一个服务端设备的运行进行监控。也可以定期主动或被动的获取状态信息。
所监控的状态信息典型是包括了配置服务器进行配置信息获取和日志结果展示的情况,具体可以由监控模块中的服务监控单元来执行。还可以监控实时通信模块的通信情况,则由监控模块中的通信监控单元来执行。还可以监控每个服务端设备的日志处理情况,则由监控模块中的集群任务监控单元来执行。
本实施例通过利用配置服务器监控获取本机及服务端设备的状态信息,并根据所述状态信息进行预警或者展示,使得用户能够实时获取日志处理系统的运行状态,方便了用户对日志处理系统的管控。
第三实施例
图4是本发明第三实施例提供的日志处理方法的流程图。本实施例由日志处理系统中的服务端设备来执行,本发明实施例中,服务端设备优选采用了模块架构的形式,将日志处理的各个环节进行模块化,以提供其通用性,并能便于进行不同环节的配置。下面首先介绍服务端设备的模块架构及其功能。
图5是本实施例提供的日志处理方法所适用的服务端设备的结构图。参见图5,所述服务端设备包括日志收集模块501、日志订阅模块502、日志分发模块503、日志切分模块504、日志计算模块506以及日志输出模块505。
所述日志收集模块501用于为服务端设备产生的日志提供实时收集和订阅服务,将服务端设备日志实时提供给订阅的下游,即日志订阅模块502。日志收集模块501利用Scribe搭建日志收集集群,进行实时日志的收集和发布订阅, Scribe集群作为日志收集和发布的中间桥梁,确保日志服务的不丢失和实时性、稳定性。
日志订阅模块502、日志分发模块503、日志切分模块504、日志计算模块 506以及日志输出模块505可通常为实时日志处理模块,参见图1所示架构。实时日志处理模块负责接收用户的配置规则,并根据配置规则变更日志处理功能后对日志进行过滤、计算和输出。优选是对实时日志流的计算处理在Storm集群以及在此框架之上开发的各模块中完成,其中Storm集群用来控制日志流在各处理单元间的传输,具体的日志订阅、日志分发、日志切分、计算处理和输出分别由日志订阅模块502、日志分发模块503、日志切分模块504、通用或定制的日志计算模块506和日出输出模块505来完成。
具体的,所述日志订阅模块502用于根据Scribe集群日志发布时所设定的参数,订阅对应所需的日志集。并可以根据用户配置动态调整或增加日志订阅模块502的参数,达到能动态调整日志输入源的目的。
所述日志分发模块503用于根据用户所配置的日志规则,对不满足业务需求的日志进行过滤,通过对各日志所满足的配置条件加上标签(tag)和关键字 (key)标识来控制日志在各处理模块之间的分发。
所述日志切分模块504用于采用Protobuf对日志格式进行约定,通过日志序列化和反序列化即可方便的获取Protobuf中所定义各字段的信息,即日志切分模块504可调用不同的日志解析例程,解析获取不同格式的日志内容。
日志计算模块506可具体包括通用计算模块5061和特制计算模块5062。
通用计算模块5061用于对日志的基本运算(如加减乘除等)进行抽象和开发,使得用户可以根据业务的需求,通过简单的字段和计算方式定义,来调整计算规则,达到日志字段计算的可配置化效果。
通用计算模块5061只能满足大部分规整的统计需求,对于运算特别复杂,甚至需要外界信息辅助计算的业务(比如推荐系统等),则需要根据业务本身的特点进行开发,为了兼容这部分需求,定制计算模块5062提供用户自定义计算方式的程序接口。
日志输出模块505,又可称为汇总输出模块,用于对日志计算模块506的计算结果进行进一步的计算和汇总,并根据用户的输出配置进行输出,比如文件形式、DB形式等。
上述各个模块在进行日志处理的过程中都会使用不同的日志处理参数。比如,所述日志订阅模块502在进行日志订阅时需要使用关于日志产生的日期的特征日期参数,日志切分模块504在进行日志切分的时候需要使用决定日志解析例程的解析例程确定参数。在本实施例中,这些日志处理参数并不是固定不变的,而是可以根据配置规则实时变更的。所述服务端设备在接收到配置规则后,根据接收到的配置规则对上述模块中的日志处理参数进行更改。
参见图4,所述日志处理方法包括:
S410,服务端设备获取配置服务器提供的配置规则。
所述服务端设备可以与所述配置服务器通过有线或无线网络连接,所述服务端设备能够通过网络获取到所述配置服务器提供的配置规则。
S420,所述服务端设备根据所述配置规则变更本机中的日志处理参数。
S430,所述服务端设备基于变更后的日志处理参数对采集到的日志进行处理,以获取日志结果。
在根据配置规则对日志处理参数进行更改后,所述服务端设备依据变更后的日志处理参数对日志进行处理,获得对日志进行处理的处理结果。
S440,所述服务端设备将所述日志结果输出。
所述服务端设备可以以文件的形式对所述日志结果进行输出,也可以以数据库的形式对所述日志结果进行输出。具体是将日志结果通过实时通信模块反馈给配置服务器,通过用户交互模块的实时运算结果展示模块进行显示。
本实施例通过从配置服务器获取配置规则,根据配置规则更改日志处理参数,再根据更改后的日志处理参数对日志进行处理,最后将处理结果输出,使得服务端设备对日志的处理能够依据配置规则实时更改,提高了代码的重用率,有助于日志处理系统与不同处理需求的匹配,降低了开发成本。
第四实施例
图6是本发明第四实施例提供的日志处理方法中规则获取的流程图。所述日志处理方法以本发明第三实施例为基础,进一步的,服务端设备获取配置服务器提供的配置规则包括:
S411,所述服务端设备向配置服务器注册本机的业务名称、设备标识和待配置的日志处理参数关键字选项。
由于所述配置服务器与多个服务端设备相连接,因此所述配置服务器在获取到日志规则配置信息时,需要确定所述日志规则配置信息中的每条配置规则是针对于所述服务端设备集群中的哪一个服务端设备。所述配置服务器通过服务端设备向自身注册的业务名称、设备标识来对服务端设备进行识别。
因此,在所述配置服务器向服务端设备发送配置规则之前,所述服务端设备需要向配置服务器注册本机的业务名称、设备标识和待处理的日志处理参数关键字选项。日志处理参数关键字选项则是用于通过配置服务器告知用户,哪个日志处理参数可以配置,以及配置的参数范围。
S412,所述服务端设备监听所述配置服务器发送的包含本机业务名称和设备标识的配置规则。
配置服务器可通过实时通信模块向服务端设备进行配置规则的发送,具体是实时通信模块将用户交互模块所产生的日志规则配置信息应用到服务端设备集群。为了使得在服务端设备集群中运行的程序能接受用户的配置并立即作出策略的变更,每个服务端设备启动时即开启相应的配置变更请求监听端口,并在数据库中注册自己所在设备的IP、端口以及设备本身的标识,实时通信模块根据标识来区分配置所需同步到的服务端设备,并通过RPC调用方式告知服务端设备。此处的RPC调用可采用Thrift技术框架,在可以进一步支持跨语言环境通信。
本实施例通过向配置服务器注册信息,再对配置服务器发送的配置规则进行监听,使得服务端设备能够实时获取包含本机业务名称和设备标识的配置规则,为所述服务端设备根据配置规则实时更改日志处理过程提供了基础。
第五实施例
图7是本发明第五实施例提供的日志处理方法中参数变更的流程图。所述日志处理方法以本发明第三实施例为基础,进一步的,所述服务端设备根据所述配置规则变更本机中的日志处理参数包括:
S421,所述服务端设备从所述配置规则中获取关键字和关键字参数,并根据所述关键字和关键字参数变更本机日志订阅模块、日志分发模块、日志切分模块和日志输出模块中各自的日志处理参数。
所述配置规则包括关键字和关键字参数。所述关键字和关键字参数是所述服务端设备中日志订阅模块、日志分发模块、日志切分模块和日志输出模块中需要用到的日志处理参数。
所述服务端设备在接收到配置规则后,从所述配置规则中获取关键字和关键字参数,并根据所述关键字和关键字参数变更本机上日志订阅模块、日志分发模块、日志切分模块和日志输出模块中的日志处理参数。
S422,所述服务端设备从所述配置规则中获取至少一个日志解析例程,添加到本机的日志解析例程集中。
上述对关键字及其参数的配置,以及对日志解析例程的添加,可以独立执行,也可以两种配置均实施,其先后顺序不限,下面将分别对两种配置进行说明。
当服务端设备采用图5所示的架构时,可分别对各个环节模块采用的处理策略进行配置,及关键字及其参数的配置可以应用于各个模块中。以下以对日志计算模块506的配置为例进行说明。
图8A是本发明第五实施例提供的日志处理方法中计算单元选择的流程图。参见图8A,优选的,所述服务端设备从所述配置规则中获取关键字和关键字参数,并根据所述关键字和关键字参数变更本机日志切分模块的日志处理参数包括:
S801,如果所述服务端设备从所述配置规则中获取通用计算选择关键字和通用计算组合参数,则根据所述计算选择关键字选择本机日志切分模块中的通用计算单元,且根据所述通用计算组合参数组合所述通用计算单元中的计算公式。
对日志的处理可以分为通用的计算处理以及定制的计算处理。通用计算模块一般能实现各种通用计算,例如,求和、求平均值、求差等,各种通用计算公式可进行任意组合,则组合方式可由用户进行配置。
在所述配置规则中设置有通用计算选择关键字,当一种日志处理属于通用处理时,所述配置规则中的通用计算选择关键字被设置。服务端设备从所述配置规则中读取到所述通用计算选择关键字后,则选择本机的通用计算模块中各计算公式单元来完成日志数据的通用计算。
S802,如果所述服务端设备从所述配置规则中获取定制计算选择关键字和定制计算单元标识,则根据所述定制计算单元标识选择对应的定制计算单元。
如果对日志的处理属于定制的处理,则所述配置规则中定制计算选择关键字被设置。服务端设备接收到所述配置规则时,从所述配置规则中获取定制计算选择关键字和定制计算单元标识,并根据所述定制计算单元标识选择对应的定制计算单元。定制计算单元完成特定功能的某一项计算,能够满足用户的复杂需求。
对于日志解析例程的配置,所述日志解析例程用于指示所述服务端设备根据日志标识选择对应的日志解析例程进行日志数据解析。所述服务端设备在接收到所述配置规则后,从所述配置规则中获取至少一个日志解析例程,并将获取到的至少一个日志解析例程添加到本机的日志解析例程集中。
在将日志解析例程添加到本机的日志解析例程集之后,所述服务端设备可以根据配置规则从所述日志解析例程集中选择合适的日志解析例程对日志进行解析,从而获得日志结果数据。
本实施例通过从配置规则中获取关键字和关键字参数,根据获取的关键字和关键字参数更改本机各模块的参数,并从配置规则中获取日志解析例程,使得服务端设备能够依据配置规则更改日志处理参数,从而使得服务端设备能够根据配置规则实时改变日志处理过程。
在本实施例中,用户进行关键字配置的格式优选如图8B所示。日志规则配置信息包括业务标识(Tag)、设备标识(Id)、关键字(Key)和关键字参数(Func、 Value)。其中,业务标识表示某项业务,例如及时通信业务。设备标识则表示实现该业务的服务端设备。关键字(Key)和关键字参数(Func、Value)表示可配置的参数及参数取值范围。
例如,功能关键字参数(func)可包括大于、大于等于、小于、小于等于、等于、包含、前缀(Prefix)、非前缀(UnPrefix)、后缀(Suffix)、非后缀 (UnSuffix)、空、非空等。过滤策略的日志清洗可包括唯一、最大值(MaxCount)、最小值(MinCount),结合其他功能等。统计策略中统计的符合条件的日志可配置为唯一、最大值(MaxCount)、最小值(MinCount),结合其他功能等。计算策略可包括加、减、乘、除、计数等。输出策略可包括输出周期、是否累计、DB、文件、累计、清理等。
对于每个服务端设备均可通过关键字的形式配置其过滤策略、统计策略、计算策略和输出策略。
第六实施例
本实施例提供的日志处理方法以本发明第五实施例为基础,进一步的,所述服务端设备根据所述配置规则变更本机中的日志处理参数包括:所述服务端设备从所述配置规则中获取结果优化策略,并配置在通用计算单元和定制计算单元中。
所述配置规则中还可以包含结果优化策略。所述结果优化策略定义了对所述日志结果进行优化处理的规则。所述服务端设备可以根据所述结果优化策略对日志结果进行优化,从而进一步获取日志推荐信息。
相应的,所述服务端设备基于变更后的日志处理参数对采集到的日志进行处理,以获取日志结果包括:所述服务端设备基于所述结果优化策略,对所述日志结果进行优化处理,获取日志推荐信息。
本实施例通过从配置规则中获取结果优化策略,并根据结果优化策略对日志结果进行优化,使得服务端设备不仅能够对日志进行统计分析,还能根据日志分析的结果向用户推荐日志推荐信息。
第七实施例
图9是本发明第七实施例提供的配置服务器的结构图。参见图9,所述配置服务器包括:任务配置模块910、实时通信模块920以及实时运算结果展示模块 930。
所述任务配置模块910用于获取日志规则配置信息。
所述实时通信模块920用于根据日志规则配置信息中的设备标识,向对应的服务端设备发送所述日志规则配置信息中的配置规则。
所述实时运算结果展示模块930用于接收服务端设备基于所述配置规则进行处理后输出的日志结果。
优选的,所述日志规则配置信息包括:业务名称、设备标识、关键字和关键字参数值;
所述日志规则配置信息还包括至少一种日志解析例程,以指示所述服务端设备根据日志标识选择对应的日志解析例程进行日志数据解析。
优选的,所述配置服务器还包括:监控模块940。
所述监控模块940用于监控获取本机和至少一个服务端设备中的状态信息,并根据所述状态信息进行预警或展示。
第八实施例
图10是本发明第八实施例提供的服务端设备的结构图。参见图10,所述服务端设备包括:规则获取模块1010、参数变更模块1020、日志处理模块1030 以及结果输出模块1040。
所述规则获取模块1010用于获取配置服务器提供的配置规则。
所述参数变更模块1020用于根据所述配置规则变更本机中的日志处理参数。
所述日志处理模块1030用于基于变更后的日志处理参数对采集到的日志进行处理,以获取日志结果。
所述结果输出模块1040用于将所述日志结果输出。
优选的,所述规则获取模块1010包括:注册单元1011以及规则监听单元 1012。
所述注册单元1011用于向配置服务器注册本机的业务名称、设备标识和待配置的日志处理参数关键字选项。
所述规则监听单元1012用于监听所述配置服务器发送的包含本机业务名称和设备标识的配置规则。
优选的,所述参数变更模块1020包括:关键字变更单元1021以及例程添加单元1022。
所述关键字变更单元1021用于从所述配置规则中获取关键字和关键字参数,并根据所述关键字和关键字参数变更本机日志订阅模块、日志分发模块、日志切分模块和日志输出模块中各自的日志处理参数。
所述例程添加单元1022用于从所述配置规则中获取至少一个日志解析例程,添加到本机的日志解析例程集中。
优选的,所述关键字变更单元1021具体用于:如果所述服务端设备从所述配置规则中获取通用计算选择关键字和通用计算组合参数,则根据所述计算选择关键字选择本机日志切分模块中的通用计算单元,且根据所述通用计算组合参数组合所述通用计算单元中的计算公式;
如果所述服务端设备从所述配置规则中获取定制计算选择关键字和定制计算单元标识,则根据所述定制计算单元标识选择对应的定制计算单元。
优选的,所述关键字变更单元1021根据所述配置规则变更本机中的日志处理参数还包括:从所述配置规则中获取结果优化策略,并配置在通用计算单元和定制计算单元中。
相应的,日志处理模块1030还具体用于:基于所述结果优化策略,对所述日志结果进行优化处理,获取日志推荐信息。
第九实施例
本实施例提供一种日志处理系统。所述日志处理系统包括如本发明第七实施例所提供的配置服务器,以及至少一个如本发明第八实施例所提供的服务端设备,其中,所述至少一个服务端设备与所述配置服务器连接。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间的相同或相似的部分互相参见即可。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。