专利名称: | 一种分布式环境下的日志管理方法和装置 | ||
专利名称(英文): | Log management method and device in distributed environment | ||
专利号: | CN201310682470.6 | 申请时间: | 20131212 |
公开号: | CN103617287A | 公开时间: | 20140305 |
申请人: | 用友软件股份有限公司 | ||
申请地址: | 100094 北京市海淀区北清路68号用友软件园 | ||
发明人: | 孙凯 | ||
分类号: | G06F17/30; G06F11/34 | 主分类号: | G06F17/30 |
代理机构: | 北京中恒高博知识产权代理有限公司 11249 | 代理人: | 刘洪京 |
摘要: | 本发明提供了一种分布式环境下的日志管理方法和装置,其中的方法包括步骤:拦截收集日志数据并发送;接收日志数据,并对集中的日志数据进行分析整理;将整理后的日志数据存储在数据库中,提供给用户进行查询和统计。利用本发明可以将分散在各个物理存储位置的日志实时收集到一个集中的日志中心,并将各日志文件中的日志记录按照统一时间线顺序进行排序并结构化存储,提供了更强的日志查询、分析、统计功能。本发明解决了分布、集群部署时应用产生的日志在空间与时间上的不一致造成使用日志的各种问题,方便了用户的查询统计。 | ||
摘要(英文): | The invention provides a log management method and device in a distributed environment. The log management method in the distributed environment comprises the steps of intercepting and collecting log data, sending the log data, receiving the log data, carrying out analysis and handling on the centralized log data, storing the handled log data in a database, and providing the log data for a user so that the user can carry out query and statistics. When the log management method and device in the distributed environment are used, logs which are arranged at various physical storage positions in a scattered mode can be collected to a centralized log center in real time, log records in log files can be sequenced according to a unified time line sequence, and can be structurally stored, and the better functions of log query, log analysis and log statistics are provided. According to the log management method and device in the distributed environment, various problems, caused by inconformity of the time and the space of logs generated by applications when distribution, clustering and deployment are carried out, in the process of log utilization are solved, and query and statistics of the user are facilitated. |
1.一种分布式环境下的日志管理方法,包括以下步骤: 拦截收集日志数据并发送; 接收日志数据,并对集中的日志数据进行分析整理; 将整理后的日志数据存储在数据库中,提供给用户进行查询和统计。
2.根据权利要求1所述的分布式环境下的日志管理方法,其中,所述拦截收集日志数据并发送的步骤具体包括: 拦截日志数据并将日志放入日志待打包队列; 按时间或数据量条件将日志待打包队列中的日志进行压缩形成数据包,并放入数据包待发送队列; 连接日志中心,向日志中心发送日志数据包。
3.根据权利要求2所述的分布式环境下的日志管理方法,其中,由打包线程将日志进行压缩形成数据包,由发送线程向日志中心发送日志数据包。
4.根据权利要求2所述的分布式环境下的日志管理方法,其中,拦截日志时根据日志拦截参数来拦截日志,将符合条件的日志放入到待打包队列中。
5.根据权利要求2所述的分布式环境下的日志管理方法,其中,在检测到数据包待发送队列中的数据长度大于一定长度阈值时或以固定的时间间隔发送日志数据包。
6.根据权利要求2所述的分布式环境下的日志管理方法,其中,所述接收日志数据,并对集中的日志数据进行整理分析的步骤具体包括: 接收日志数据包,并将其放入数据包队列; 对数据包队列中的数据包进行解压并放入日志队列; 对日志队列中的日志进行分析并整理为固定的存储结构。
7.根据权利要求6所述的分布式环境下的日志管理方法,其中,由解包线程对数据包进行解压,并由分析线程对日志进行分析和整理。
8.根据权利要求1所述的分布式环境下的日志管理方法,其中,将整理后的日志数据存储在非关系型数据库中。
9.根据权利要求1所述的分布式环境下的日志管理方法,其中,使用HTTP协议发送和接收日志数据。
10.一种分布式环境下的日志管理装置,包括: 日志拦截器,用于拦截收集日志数据并发送; 日志中心,用于接收日志数据并对集中的日志数据进行分析整理; 存储数据库,用于存储整理后的日志数据,并提供给用户进行查询和统计。
11.根据权利要求10所述的分布式环境下的日志管理装置,其中,日志拦截器包括: 拦截器,用于拦截日志数据并将日志放入日志待打包队列; 打包线程,用于按时间或数据量条件将日志待打包队列中的日志进行压缩形成数据包,并放入数据包待发送队列; 发送线程,用于连接日志中心,向日志中心发送日志数据包。
12.根据权利要求11所述的分布式环境下的日志管理装置,其中,日志中心包括: 日志接收器,用于接收日志数据包,并将其放入数据包队列; 解包线程,用于对数据包队列中的数据包进行解压并放入日志队列; 分析线程,用于对日志队列中的日志进行分析并整理为固定的存储结构。
13.根据权利要求10所述的分布式环境下的日志管理装置,其中所述存储数据库是非关系型数据库。
1.一种分布式环境下的日志管理方法,包括以下步骤: 拦截收集日志数据并发送; 接收日志数据,并对集中的日志数据进行分析整理; 将整理后的日志数据存储在数据库中,提供给用户进行查询和统计。
2.根据权利要求1所述的分布式环境下的日志管理方法,其中,所述拦截收集日志数据并发送的步骤具体包括: 拦截日志数据并将日志放入日志待打包队列; 按时间或数据量条件将日志待打包队列中的日志进行压缩形成数据包,并放入数据包待发送队列; 连接日志中心,向日志中心发送日志数据包。
3.根据权利要求2所述的分布式环境下的日志管理方法,其中,由打包线程将日志进行压缩形成数据包,由发送线程向日志中心发送日志数据包。
4.根据权利要求2所述的分布式环境下的日志管理方法,其中,拦截日志时根据日志拦截参数来拦截日志,将符合条件的日志放入到待打包队列中。
5.根据权利要求2所述的分布式环境下的日志管理方法,其中,在检测到数据包待发送队列中的数据长度大于一定长度阈值时或以固定的时间间隔发送日志数据包。
6.根据权利要求2所述的分布式环境下的日志管理方法,其中,所述接收日志数据,并对集中的日志数据进行整理分析的步骤具体包括: 接收日志数据包,并将其放入数据包队列; 对数据包队列中的数据包进行解压并放入日志队列; 对日志队列中的日志进行分析并整理为固定的存储结构。
7.根据权利要求6所述的分布式环境下的日志管理方法,其中,由解包线程对数据包进行解压,并由分析线程对日志进行分析和整理。
8.根据权利要求1所述的分布式环境下的日志管理方法,其中,将整理后的日志数据存储在非关系型数据库中。
9.根据权利要求1所述的分布式环境下的日志管理方法,其中,使用HTTP协议发送和接收日志数据。
10.一种分布式环境下的日志管理装置,包括: 日志拦截器,用于拦截收集日志数据并发送; 日志中心,用于接收日志数据并对集中的日志数据进行分析整理; 存储数据库,用于存储整理后的日志数据,并提供给用户进行查询和统计。
11.根据权利要求10所述的分布式环境下的日志管理装置,其中,日志拦截器包括: 拦截器,用于拦截日志数据并将日志放入日志待打包队列; 打包线程,用于按时间或数据量条件将日志待打包队列中的日志进行压缩形成数据包,并放入数据包待发送队列; 发送线程,用于连接日志中心,向日志中心发送日志数据包。
12.根据权利要求11所述的分布式环境下的日志管理装置,其中,日志中心包括: 日志接收器,用于接收日志数据包,并将其放入数据包队列; 解包线程,用于对数据包队列中的数据包进行解压并放入日志队列; 分析线程,用于对日志队列中的日志进行分析并整理为固定的存储结构。
13.根据权利要求10所述的分布式环境下的日志管理装置,其中所述存储数据库是非关系型数据库。
翻译:技术领域
本发明涉及日志管理,尤其涉及分布式环境下的日志管理方法和装置。
背景技术
当前基于J2EE的应用得到了广泛的使用。为了获取应用的运行情况以及便于调试,基于J2EE的应用一般都会使用某种日志组件将应用实时产生的日志写入到文件系统中。日志组件的典型例子包括Log4j、common-log等。由于基于J2EE的应用通常会部署在集群环境或分布式环境中,此时的日志就会分散在多个物理机器上。当需要从日志中查找或者定位某些问题时,将会面临以下问题:1)空间不统一,日志的存储位置分散:由于应用被分布或集群部署,每个应用将被部署在多个物理机器上,每个部署的应用实例产生自己的日志文件,此时应用的日志将被分散于每个物理机器上。2)时间不统一,每个实例产生自己的日志时间线:在集群部署的每个应用实例都使用自己的服务器时间作为产生日志时间,每个应用实例只写自己的日志,多个应用实例就产生了多条基于各自时间的日志文件。
为了解决日志分散存储的问题,现有技术中存在一些实时日志收集方法,但由于收集过程中占用大量的资源,会造成应用系统本身性能显著下降。同时现有技术中没有提供对收集过程的管理和控制,针对已集中的日志记录也没有提供灵活、有效的日志查询、分析、统计功能。
发明内容
鉴于以上问题,本发明旨在提供一种分布式环境下的日志管理方法和装置,以解决分布、集群部署时应用产生的日志在空间与时间上的不一致造成使用日志的各种问题。
根据本发明的一个方面,提供了一种分布式环境下的日志管理方法,包括以下步骤:
拦截收集日志数据并发送;
接收日志数据,并对集中的日志数据进行分析整理;
将整理后的日志数据存储在数据库中,提供给用户进行查询和统计。
其中,优选的方案是,拦截收集日志数据并发送的步骤具体包括:
拦截日志数据并将日志放入日志待打包队列;
按时间或数据量条件将日志待打包队列中的日志进行压缩形成数据包,并放入数据包待发送队列;
连接日志中心,向日志中心发送日志数据包。
其中,优选的方案是,接收日志数据,并对集中的日志数据进行整理分析的步骤具体包括:
接收日志数据包,并将其放入数据包队列;
对数据包队列中的数据包进行解压并放入日志队列;
对日志队列中的日志进行分析并整理为固定的存储结构。
根据本发明的另一方面,提供了一种分布式环境下的日志管理装置,包括:
日志拦截器,用于拦截收集日志数据并发送;
日志中心,用于接收日志数据并对集中的日志数据进行分析整理;
存储数据库,用于存储整理后的日志数据,并提供给用户进行查询和统计。
其中,优选的方案是,日志拦截器包括:
拦截器,用于拦截日志数据并将日志放入日志待打包队列;
打包线程,用于按时间或数据量条件将日志待打包队列中的日志进行压缩形成数据包,并放入数据包待发送队列;
发送线程,用于连接日志中心,向日志中心发送日志数据包。
其中,优选的方案是,日志中心包括:
日志接收器,用于接收日志数据包,并将其放入数据包队列;
解包线程,用于对数据包队列中的数据包进行解压并放入日志队列;
分析线程,用于对日志队列中的日志进行分析并整理为固定的存储结构。
本发明的分布式环境下的日志管理方法和装置将分散在各个物理存储位置的日志实时收集到一个集中的日志中心,并将各日志文件中的日志记录按照统一时间线顺序进行排序并结构化存储,在一定程度上降低了对应用本身性能的影响。本发明的技术方案允许管理人员从日志中心实时管理与控制各个应用实例中的日志生成、收集的过程中的参数及行为,在日志中心也提供了更强的日志查询、分析、统计功能。本发明的方案能够解决在分布式应用开发及维护过程中查找日志时由于日志文件存放的物理位置不同及时间顺序不同所带来的问题。
附图说明
图1是根据本发明实施例的分布式环境下的日志管理装置的模块图;
图2是根据本发明实施例的分布式环境下的日志管理装置的日志拦截器的模块图;
图3是根据本发明实施例的分布式环境下的日志管理装置的日志中心的模块图;
图4-5是根据本发明实施例的分布式环境下的日志管理装置中在数据库中存储的日志数据所包括的属性;
图6是根据本发明实施例的分布式环境下的日志管理方法的流程图。
具体实施方式
下面结合附图和实施例对本发明的技术方案进行详细说明。
图1是根据本发明实施例的分布式环境下的日志管理装置的模块图。
如图1所示,本发明的分布式环境下的日志管理装置包括日志拦截器、日志中心和存储数据库。其中日志拦截器随应用启动并过滤其需要收集的日志信息;日志中心用于接收各个应用的日志数据,并对集中的日志数据进行分析整理,提供人机界面给用户进行管理、查询、统计等操作;存储数据库用于存储经过整理后的日志数据。
日志拦截器位于应用中,是一组辅助型工具类组合,其结构如图2所示。该日志拦截器包括拦截器来获取应用中的各个日志数据。更具体地,拦截器包括启动及过滤类以及JVM数据收集线程。启动及过滤器实现了Servlet 2.3规范中所定义的Filter接口,在Web应用启动时负责启动日志拦截器相关的线程及服务,同时负责拦截web应用所有请求生成访应用的访问记录以及应用产生的各个日志记录,并将这些记录存入日志待打包队列。JVM数据收集线程随Web应用启动,每隔N秒收集内存、线程、类等数据,生成JVM状态日志数据记录,存入日志待打包队列。上面的参数N可以由用户根据经验值设定。该拦截器根据相关日志拦截参数来拦截应用所产生的日志,将符合条件的日志放入到待打包队列中。
日志拦截器中运行的相关线程还包括:
1)日志打包线程:从日志待打包队列中取得多条原始日志数据,使用数据压缩算法将多条日志数据压缩成为一个数据包。当满足下面2个条件之一时结束打包,将数据包存入数据包待发送队列。条件1:K条日志数据的原始大小累计大于M byte。条件2:当前时间-开始打包时间大于S秒。上面的参数K、M、S可以由用户根据经验值设定。该日志打包线程可以是一组线程,其数量可以根据待打包日志数据的数量和大小来确定。
2)发送线程:从数据包待发送队列中取得压缩好的数据包,使用HTTP协议将数据包发送给日志中心。该发送操作可以以固定的时间间隔进行或是在数据包待发送队列的长度大于一定长度阈值时进行。上述的时间间隔和长度阈值均可由用户根据经验值设定。该发送线程同样可以是一组线程,其数量可以根据待发送的数据包的数量来确定。
3)时间校准线程:该每间隔N小时使用NTP协议访问国家授时服务器获取标准时间,计算本地时间与标准时间的差值,对日志生成时间进行校准。
该日志拦截器中包括2个数据缓存队列,分别是日志待打包队列和数据包待发送队列,它们分别用于存放原始日志数据和压缩后的数据包。
日志拦截器通过上述的后台守护线程的运行来定时收集、打包和发送日志,克服了现有技术中实时收集日志方法所带来的占用大量资源,造成应用性能显著下降的缺陷。
日志中心是一个Web应用程序,其接收各个应用的日志数据,并对集中的日志数据进行分析整理,同时提供GUI用户管理界面给用户进行管理、查询、统计等操作。其结构如图3所示。该日志中心包括:
1)日志接收器:基于HTTP协议接收日志拦截器发送来的日志数据包,并将其存入数据包队列中。
2)解包线程:负责从数据包队列中取得数据包,将其解压缩后存入日志队列中。该解包线程可以是一组线程,其数量可以根据待解压缩的数据包的数量来确定。
3)分析线程:负责从日志队列中将一条日志数据解析成为最终日志数据存储结构,并对日志数据按照多种条件进行分类,最终将日志数据存入数据库中。最终日志数据的存储结构详见下面的描述。该分析线程可以是一组线程,其数量可以根据待分析的日志数据的数量来确定。在日志的解析过程中将提取最关键的时间信息、日志等级、产生位置等信息,解析过后的日志记录将具备相同的数据结构,方便后续进行相关的数据分析。日志数据按照日志的级别等可以被分类为系统级,应用级,业务级日志,或可按照日志的来源,例如产生日志的服务器,线程,类等,进行分类。日志从原本无结构的文本数据流,经过分析线程的结构化处理之后,最终以相同的结构存储在非关系型数据库中。
该日志中心包括2个数据缓存队列,分别是数据包队列和日志队列,它们分别用于存放接收到的压缩数据包和解压缩后的日志数据。
最终日志数据的存储结构如图4-5所示,所有的日志数据条目都包括如图4-5所示的属性,日志中心的分析线程负责将所有的日志数据进行填充和完善,填写上图4-5中所示的各种属性,从而方便用户的查询和统计。最终得到的日志数据存储在存储数据库中。出于存取速度和性能的考虑,该数据库可以是非关系型数据库。
下面结合图6对根据本发明的实施例的分布式环境下的日志管理方法的步骤进行说明。该方法主要包括日志拦截器收集日志的步骤S1和日志中心分析整理与存储日志的步骤S2。
在步骤S1的日志的收集过程中,日志拦截器根据相关日志拦截参数对应用所产生的日志进行拦截,将符合条件的日志放入到待打包队列中,由打包线程根据时间或数据量条件将一批日志进行压缩成为数据包,并放入数据包待发送队列中,发送线程定时检测到待发送数据包之后将连接到日志中心并发送日志数据包。步骤S1包括的具体步骤如下:在步骤S11,拦截器随应用启动并初始化;在步骤S12,拦截器根据日志相关参数拦截日志,将符合条件的日志放入日志待打包队列;步骤S13中,打包线程按时间或数据量条件将日志待打包队列中的日志进行压缩形成数据包,并放入数据包待发送队列;在步骤S14,发送线程检测到数据包待发送队列中有数据时连接日志中心,并向日志中心发送日志数据包。
在步骤S2的日志中心对日志的分析整理与存储过程中,日志中心在收到数据包后将对日志进行分析整理,并将整理后的日志保存在非关系型数据库中。步骤S2包括的具体步骤如下:在步骤S21,日志接收器接收到日志数据包之后将其放入数据包队列;在步骤S22,解包线程检测到数据包之后对数据包进行解压并放入日志队列;在步骤S23,一组分析线程将对日志进行解析和分类,例如分为系统级,应用级,业务级日志等;在步骤S24,分析线程将解析后的数据保存在非关系型数据库中供其他用户查询使用。
本发明的分布式环境下的日志管理方法和装置对日志管理和使用带来如下的改进:
1.分散的应用日志可以被集中在一个存储空间内,不同的时间线将被重新编排为统一的时间线。将分散的日志重新以应用为单位聚集成一个连续整体。
2.对日志进行分析并存放在非关系型数据库中,可以按照时间、线程、类、日志等级等条件查询日志数据,方便用户的查询统计。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。