您的位置:首页 > 其它

一种为使用Log4j的分布式应用提供云端日志服务的方法

2016-05-14 13:21 543 查看
摘要

本发明公开了一种为使用Log4j的分布式应用提供云端日志服务的方法,其具体实现过程为:建立基于Log4j日志的日志服务管理模型;创建产生日志的应用所属项目和日志库,并将相应信息发送给日志收集监听端;日志收集监听端将信息转发给日志服务器;日志服务器提供索引服务,用户通过该日志服务器查看索引日志。该一种为使用Log4j的分布式应用提供云端日志服务的方法与现有技术相比,可解决分布式部署架构或集群部署架构中日志分散、不连续的问题,实现快速开发和部署,方便开发人员、运维人员查看、检索分布式应用的日志,减少开发、运维成本。

说明

一种为使用Log4_j的分布式应用提供云端日志服务的方法
技术领域

[0001] 本发明涉及计算机技术领域,具体地说是一种实用性强、为使用Log4j的分布式 应用提供云端日志服务的方法。

背景技术

[0002] 随着业务的扩大,单台服务器难以负载持续增长的用户群,逐步以细分服务、集群 的方式来解决该问题。细分服务、以集群方式部署应用后,若应用发生错误,定位问题难道 加大:开发、运维人员需要频繁切换集群中的服务器,查看各个应用的日志,来定位问题原 因。web应用常用Log4j作为日志采集工具,Log4j将日志记录到本地文件系统。

[0003] 基于此,现提供一种为使用Log4j的分布式应用提供云端日志服务的方法,该方 法用于解决以下问题: 1)分布式部署架构或集群部署架构中,开发、运维人员无法准确知道日志发生在集群 中的哪台服务器上,查找日志繁琐。

[0004] 2)分布式部署架构或集群部署架构中,同一应用的日志分散在不同的服务器上, 造成同一个应用的日志不连续,定位问题难度大。

[0005] 3)便捷地查看、检索日志。

[0006] 4)快速开发和部署。

发明内容

[0007] 本发明的技术任务是针对以上不足之处,提供一种实用性强、为使用Log4j的分 布式应用提供云端日志服务的方法。

[0008] 一种为使用Log4j的分布式应用提供云端日志服务的方法,其具体实现过程为: 建立基于Log4j日志的日志服务管理模型,该日志服务管理模型为每个项目创建独立 的日志库,隔离不同项目的日志数据;为项目下的各个应用日志定义唯一的日志分类,方便 查看、检索相同应用下同类别的日志; 创建产生日志的应用所属项目和日志库,并将相应信息发送给日志收集监听端; 日志收集监听端将信息转发给日志服务器; 日志服务器提供索引服务,用户通过该日志服务器查看索引日志。

[0009] 所述步骤二的详细过程为:日志服务管理模型收集日志时间、产生日志的机器、日 志级别、日志内容,同时配置应用所属项目和日志库、日志分类信息,将这些信息发送到日 志收集监听端。

[0010] 所述日志索引服务的提供过程为:日志收集监听端再将这些信息发送到日志服务 器,运用日志索引技术进行分词、索引处理,提供按日志分类、日志时间、日志级别、关键字 进行检索的界面模型,方便用户查看、检索日志。

[0011] 上述日志收集、日志索引采用的为Apache开源的日志收集、日志索引技术。

[0012] 所述日志服务管理模型建立过程为: 创建项目:项目用于资源隔离和控制,通过项目来管理该项目下所有的日志库,同时该 项目名称为唯一的; 创建日志库:根据项目下各应用的特性创建日志库,日志库用于资源隔离和控制;同 一项目下可创建多个日志库,不同日志库中的日志无法交叉访问; 指定日志收集系统的监听端口,指定日志索引服务的host和端口; 所述日志服务管理模型中生成相应步骤的包,并提供下载功能方便用户获取,这些包 分别为:日志收集服务的下载包、日志索引服务的下载包、收集Log4j日志的日志收集包。

[0013] 所述收集Log4j日志的日志收集包的内容包括: 用来配置应用所属项目和日志库,以及本应用的日志将写入的日志收集系统的监听端 口的配置文件一; 配置为Log4j日志收集包中的appender、由应用名称和包组成的日志分类的配置文件 --〇

[0014]收集Log4j日志的日志收集包的日志收集过程为:应用程序每打印一条Log4j 日志,配置文件二监听到Log4j日志事件,从日志事件中获取信息,并按照日志收集模型 进行组装;并将组装后的日志信息写入配置文件一中配置的日志收集系统的监听端口的 hostname 和端口 port 中。

[0015]日志收集服务的下载包中包含监听端口的安装包,安装包中包含配置文件三,该 配置文件三配置日志收集服务的监听端口。

[0016]日志索引服务的下载包中包含用户创建的日志库的安装包,该日志库包含内容: 项目名称及日志库名称:构成了唯一的一个索引库,项目名称和日志库名称为用户在 日志服务管理模型中创建的的项目和日志库; 配置文件四,包含了收集Log4j日志的日志收集包依赖的日志收集模型中各项的索引 配置,即日志分类、日志时间、日志来源机器ip、日志级别、日志发生时的类。

[0017] 所述日志索引服务通过查看检索界面完成,该检索查看界面输入检索指令后,根 据日志类别、日志时间、产生日志的机器、日志级别、日志内容检索日志,并将同一类别的日 志按照日志时间进行排序并在该检索界面上展现。

[0018] 本发明的一种为使用Log4j的分布式应用提供云端日志服务的方法,具有以下优 占. 该发明的一种为使用Log4j的分布式应用提供云端日志服务的方法从开发、运维人员 的角度,提供了从日志的收集、按模型组装、日志索引、日志展现全过程的解决方案,通过统 一的日志服务的管理模型,Log4j日志的日志收集模型,运用开源的Apache flume日志收 集技术和Apache solr日志索引技术即可开发云端日志服务。整个过程,开发、实施简单。 本发明可解决分布式部署架构或集群部署架构中开发、运维人员频繁切换应用服务器查找
日志的窘境,由于收集了产生日志的机器,也方便了开发、运维人员定位到具体的应用服务 器查看、解决问题。实用性强,适用范围广泛,易于推广。

附图说明

[0019] 附图1为本发明的逻辑部署结构图。

[0020] 附图2为本发明的技术结构图。

[0021] 附图3为本发明中日志收集包的技术结构图。







具体实施方式

[0022] 下面结合附图和具体实施例对本发明作进一步说明。

[0023]本发明提供一种为使用Log4j的分布式应用提供云端日志服务的方法,提供日 志服务管理模型,包括两大块:1)创建项目和日志库;2)查看、检索日志。提供基于Log4j日 志的日志收集模型,收集日志时间、产生日志的机器、日志级别、日志内容,同时配置应用所 属项目和日志库、日志分类信息,将这些信息发送到日志收集技术监听端,日志收集技术再 将这些信息发送到日志服务器,运用日志索引技术进行分词、索引处理,提供按日志分类、 日志时间、日志级别、关键字进行检索的界面模型,方便用户查看、检索日志。

[0024] 基于此设计思路,如附图1、图2、图3所示,该方法的实现过程为:通过统一的日志 服务管理模型,为每个项目创建独立的日志库,隔离不同项目的日志数据;为项目下的各个 应用日志定义唯一的日志分类,方便查看、检索相同应用下同类别的日志。通过运用Apache 开源的日志收集技术、日志索引技术,日志收集模型收集产生日志的应用所属项目和日志 库、日志类别、日志时间、产生日志的机器、日志级别、日志内容,将经由日志收集模型处理 的日志数据发送到Apache开源的日志收集技术对应的监听端,日志收集技术经由通道将
信息发送到日志服务器,运用Apache开源的日志索引技术进行分词、索引处理,同时提供 界面模型,针对日志类别、日志时间、产生日志的机器、日志级别、日志内容进行查看、检索。

[0025] 其具体实现过程为: 创建日志服务管理模型。

[0026] 1)创建项目:项目主要用于资源隔离和控制。通过项目来管理该项目下所有的日 志库。项目名称全局唯一。

[0027] 2)创建日志库:可根据项目下各应用的特性创建日志库,日志库主要用于资源隔 离和控制。同一项目下可创建多个日志库,不同日志库中的日志不能交叉访问。

[0028] 3)指定Apacheflume日志收集系统的监听端口,指定Apache solr日志索引服务 的host和端口。若不想前期设定,本步骤可以跳过,后期实施过程中可以再配置相关信息。

[0029] Apacheflume是一个分布式、可靠、和高可用的海量日志米集、聚合和传输的系 统。

[0030] Apache Solr是一个开源的基于Lucene的全文搜索服务器,主要特性包括:高 效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性。

[0031] 根据上述1)、2)、3)步骤定义的信息,生成相应的包,并提供下载功能方 便用户获取。这些包包括:基于日志收集模型,收集Log4j日志的日志收集包: sls-client_log4jAppender.zip ;Apache flume 日志收集服务的下载包;Apache solr 日 志索引服务的下载包。

[0032]针对上述三种包,现做以下详细描述: 一、收集Log4 j日志的日志收集包: 收集Log4j日志的日志收集包sls-client-log4jAppender. zip,包括内容: A) sis. properties配置文件:主要是用来配置应用所属项目和日志库,以及本应用的 日志将写入的Apache flume日志收集服务监听端口。

[0033] 配置示例: Mpache flume日志收集服务的hostname : hostname=127. 0• 0• 1〇

[0034] Mpache flume日志收集服务的监听端口: port=4141〇

[0035] #项目名称(日志服务中创建的项目名称): sis-project=myproject〇

[0036] #日志库名称(日志服务中创建的日志库名称): sis-block=myblock〇

[0037] B) log4j. properties 配置文件:主要配置 appender 和 slsTopic,其中, appender 配置为 Log4j 日志收集包中的 appender :org. apache, flume, clients. log4j. SlsLog4jAppender〇

[0038] slsTopic为日志分类,由应用名称和包组成,配置示例:bpm_trace,其中bpm为应 用名称,trace为Al包的逻辑名称。

[0039] 配置示例: log4j. category, com. inspur=DEBUG, Al ; log4j. additivity, com. inspur=false ; #配置appender为收集Log4j日志的日志收集包中的appender ; log4j. appender. Al=org. apache, flume, clients. log4j. SlsLog4jAppender ; #配置slsTopic为日志分类,配置亦例:bpm_trace,其中bpm为应用名称,trace为Al
包的逻辑名称; log4j. appender. AL slsTopic=bpm_trace ; log4j. appender. AL layout=org. apache. log4j. PatternLayout ; log4j. appender. AL layout. ConversionPattern=[%d{IS08601}] %-5p %-x %X{user} %n %m°/〇n 〇

[0040]工作原理说明:应用程序每打印一条Log4j日志,org. apache, flume, clients. log4j. SlsLog4jAppender监听到Log4j日志事件,从日志事件中获取信息,并按照日志收 集模型进行组装。并将组装后的日志信息写入配置文件sis. properties中配置的Apache flume日志收集服务的hostname和端口 port中。

[0041]日志事件和本专利的日志收集模型的对应关系如下表:



二、Apache flume日志收集服务: Apache flume日志收集服务下载包中包含Apache flume的安装包,安装包中包含配置 文件flume-conf-sls-avro. properties,该文件配置日志收集服务的监听端口,配置内容 如下: agent_slsavro. sources = si;agent_slsavro. channels = cl; agent_slsavro. sinks = kl〇

[0042] agent_slsavro. sources, si. type = avro; agent_slsavro. sources, si. bind = 0. 0. 0. 0; #Apache flume日志收集服务的监听端口;agent_slsavro. sources, si. port = 4141; agent_slsavro. sources, si. channels = cl〇

[0043] agent_slsavro. sinks, kl. type = org. apache, flume, sink. solr. SlsSolrSink; Mpache solr日志索引服务的url ; agent_slsavro. sinks, kl. solrUrl=http://host:port/solr;agent_slsavro. sinks, kl. channel = cl; agent_slsavro. sinks, kl. batchSize = 100〇

[0044] agent_slsavro. channels, cl. type = file; agent-slsavro. channels. cL checkpointDir = • /agent-slsavro/checkpoint ; agent-slsavro. channels. cL dataDirs = •/agent-slsavro/data ; agent_slsavro. channels, cl. transactionCapacity = 10000; agent_slsavro.
channels, cl. capacity = 1000000〇

[0045] 上述配置文件中的port=4141是指Apacheflume日志收集服务的监听端口,默 认为4141,若该端口已被占用,则修改为其他端口。收集Log4j日志的日志收集包sis. properties配置文件中的配置项port的值必须和该端口保持一致D

[0046] http://host:port/solr 是指Apachesolr 日志索引服务的 Url0

[0047] org. apache, flume, sink. solr. SlsSolrSink的实现原理说明: 第一、构建Apache solr日志索引服务地址:根据配置文件flume-conf-sls-avro. properties中的项solrUrl及日志收集模型中的项sls_project和sls_block,构建日志 索引服务地址:solrUrl的值+ '/' + sls_project的值+ +sls_block的值。

[0048] 第二、构建Apache solr日志索引库中各个数据项:将日志收集模型中项添加到 日志索引库的各个数据项中。

[0049]第三、根据flume-conf-sls-avro. properties中的项batchSize的值,批量更新 到Apache solr日志索引库abatchSize的默认值为100〇

[0050] 三、Apache solr日志索引服务 Apache solr日志索引服务下载包中包含Apache solr的安装包,安装包中包含用户创 建的日志库,该库部署在solr安装目录/server/solr目录下。

[0051] 日志库包含内容: 项目名称_日志库名称:构成了 soli*唯一的一个索引库,项目名称和日志库名称为用 户在日志服务管理模型中创建的的项目和日志库。

[0052] 配置文件core, properties,该配置文件中配置项name的值必须和1)一致。core. properties 的内容: name=项目名称_日志库名称; config=solrconfig. xml ; schema=schema. xml ; dataDir=data〇

[0053] 配置文件conf/schema. xml,该配置包含了收集Log4j日志的日志收集包依赖的 日志收集模型中各项的索引配置,配置项的类型、索引说明如下:



日志服务的查看、检索界面模型:日志服务的查看、检索界面,根据日志类别、日志时 间、日志级别、关键字等检索日志,默认将同一类别的日志按照日志时间slsjimestamp进 行排序并展现。





[0054] 本发明可使得开发人员、运维人员便捷地使用日志服务解决分布式部署架构或集 群部署架构中日志分散、不连续的问题,实现快速开发和部署,方便开发人员、运维人员查 看、检索分布式应用的日志,减少开发、运维成本。

[0055] 上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于 上述具体实施方式,任何符合本发明的一种为使用Log4j的分布式应用提供云端日志服务 的方法的权利要求书的且任何所属技术领域的普通技术人员对其所做的适当变化或替换, 皆应落入本发明的专利保护范围。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: