更全的杂志信息网

应用软件运行日志的收集与服务处理框架

更新时间:2009-03-28

在信息系统应用中,每次操作都会留下痕迹,这就是日志,每个日志文件由日志记录组成,每条日志记录描述了一次单独发生的事件[1]。在一个完整的信息系统里面,日志系统是一个非常重要的功能组成部分。它可以记录下系统所产生的所有行为,并按照某种规范表达出来。日志为服务器、工作站、防火墙和应用软件等IT资源相关活动记录必要的、有价值的信息,这些信息的记录对系统监控、查询、安全审计和诊断故障都是十分重要的[2]

现有的大规模软件大都是多人开发,或者采用多种来源的软件,集成了大量开源社区的代码,软件内部的代码风格存在许多不一致,这种应用程序运行日志由于组织庞大,架构复杂,日志数据量巨大且比较分散,存在日志数据格式多样,数据存储和检索困难、日志数据读取效率低等问题。导致大量日志数据信息无法被充分地挖掘利用,用户很难快速从日志中得到有效的信息,难以达到提高故障诊断效率的目的[3]

究竟什么是新媒体呢?其与传统媒体有何不同?又具有怎样的特点?新媒体 (New Media)是指当下万物皆媒的环境,简单说:新媒体是一种环境。新传媒产业联盟秘书长王斌: “新媒体是以数字信息技术为基础,以互动传播为特点、具有创新形态的媒体[2]。”

The inpatients at risk of malnutrition were affected by acute disease in 61.5% and by gastrointestinal cancer in 38.5% of the cases.

目前一些开发团体在他们的日志管理系统加入了一些日志处理方法,但都存在很多问题,如:日志数据的存储混乱;面向用户的服务涉及得很少,用户很难根据需求定制日志数据。目前大多数日志数据处理工具面对海量化的日志数据处理往往达不到用户的需求,因此,如何快速有效地对日志进行处理,并将有用的日志信息进行返回是目前日志服务研究必须考虑的一个问题[4-5]

实验从收敛性、平均传输速率及归一化网络满意度来衡量算法的性能.对比算法主要为几种常见的分配算法.(1)本文所提随机学习博弈算法(Stochastic Learning Game, SLG).(2)完全信息动态博弈(Complete Information of Dynamic Game,CIDG),利用公式(2)为目标函数的一种最佳响应博弈模型.(3)本地博弈(Local Game),利用式(2)为目标函数的随机学习算法.(4)随机选择算法(Random Selection).

本文针对以上问题,提出了一种基于Spark的应用软件运行日志的收集与服务处理框架,该框架利用分布式收集策略对日志数据收集,定义了一种多层次数据存储结构对日志数据进行存储,并向用户提供日志数据查询服务。其特色主要体现在多层次的日志数据收集和存储两方面。通过分布式收集策略解决了日志数据收集缓慢的问题,并通过本文提出的多层次的日志数据存储解决了由于日志数据多样化导致在日志数据存储上消耗大量资源的问题。

1 相关工作

(3)日志数据应用层:提供数据接口供用户使用。

目前许多研究学者也对日志收集和服务处理这块有很多研究,廖湘科等人[3]从日志特征分析、基于日志的故障诊断、日志的增强三方面综述了日志研究的现状。通过对软件缺陷特征的分析,对几种常用的大规模开源软件的日志进行调研,发现了一些日志相关的特征和规律,以及现有工具难以解决的问题。周江[7]设计并实现了一个面向大数据分析、专为大规模集群应用的分布式文件系统Clover。实现了对海量数据的存储,解决了传统的分布式文件系统在扩展性、可靠性和数据访问性能等方面难以满足新形势下的需求。李玉荣[6]在分析大型分布式系统对日志服务需求的基础上,设计并实现了一种分布式环境下的日志服务,采用这种分布式日志服务有效地简化了分布式应用系统的开发、调试和维护,但是文中没有考虑到日志数据实际上是一种大数据,并没有使用适合大数据存储的数据结构。付博[1]首先介绍了Web查询日志的常用信息和公开的数据集;进而阐述了查询日志在Web搜索、信息抽取等方面的相关研究,并对它们进行了细致的介绍和分析,但是只适合对于Web端的查询日志,对应用软件运行日志的分析研究存在不足。申利民[8]通过对面向SAAS模式的日志架构进行相应的配置和扩展,能够满足SaaS软件分别针对不同用户记录日志的要求,从总体上描述架构的框架设计,但是该框架只适合针对SAAS模式下的日志研究,并不适用于普通应用软件的运行日志研究。

2 日志数据服务层次框架

为了能够在该框架的每个部位找到对应的日志服务,本文针对该框架设计了三层结构,其中层次与其对应的服务如图1所示,该框架针对图1左边日志数据服务的三个层次,在右边分别提供对应的服务,包括资源层的日志收集服务、服务层的日志数据存储服务、应用层的用户获取日志数据服务。下面对不同层次的不同服务进行叙述。

  

图1 日志数据服务框架

(1)日志数据资源层:实现日志收集工作。

非关系型数据库存储:在HBase中,通过划分region的方式,来管理大规模的分布式数据库。预处理后的数据会按照记录为单位存入,本文使用定制的MapReduce Job方式来将预处理后的数据导入Hbase。由于HBase底层的文件存储系统是HDFS。因此仍然具备HDFS高容错的优点,同时HBase提供索引机制,也方便了其他应用访问日志数据[12]

随着应用软件的运行日志不断增多,越来越多的研究人员开始关注日志收集和服务处理这方面的研究工作,同时也出现了大量针对这方面研究的软件与系统,Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到大量的应用。它能够从各种日志源上收集日志。logstash是一个应用程序日志、事件的传输、处理、管理和搜索的平台,可以用它来统一对应用程序日志进行收集管理,提供 Web接口用于查询和统计。Flume[6]是Cloudera提供的一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据。但是这些软件大多数只倾向于收集日志,收集后的日志并没有后续的处理,难以达到用户对日志数据精确化的需求。

关系型数据库存储:如表1所示,可以看到的是关系型数据库MySQL的数据库表设计。

落汤鸡似地回到宿舍,大雨停电,但三位室友还有隔壁宿舍的一位同窗点着蜡烛正在热火朝天地玩着“拖拉机”(扑克游戏)。

该框架具有以下几个特性:

(l)高可扩展性。由于框架分为三个层级,每个层次直接相互独立,因此能够满足在日志数据不断增长的同时,通过添加服务器,扩展存储空间等简单手段提升该框架的处理日志数据的能力,满足用户需求。

(2)高并发。该框架采用了分布式收集策略实现对数据的收集,能够最大限度减少收集数据的等待时间。

本技术的目的是在高寒沙区通过植被恢复综合技术,解决以裸根苗方式单纯造林或沙障固沙来治理流动沙丘(地)的难题。因此,采用机械固沙和生物固沙相结合,无灌溉条件下扦插、直播造林相结合的植被恢复综合技术,优点在于缩短育苗周期、降低购苗成本、造林方法简单、成活率高。

如表3所示,可以看到的是Hbase的存储处理后的日志数据的逻辑物理设计模型。这里本文选用了日志等级INFO表作为例子。INFO日志记录信息的字段包括服务ID(ID)、时间戳(Time)、日志等级(Level)、服务时间内发生的事件(Event),通过这种日志存储模型用户可以通过日志类型以及服务ID的组合直接获取到所需要的日志数据。

2.1 日志数据资源层

资源层是整个日志数据服务框架的基础,负责提供原始日志数据收集服务,原始日志数据是一切研究的基础,有了原始数据下一步的研究才能继续下去,因此如何快速获得原始数据非常重要。原始日志数据在各类应用软件中分布较多,日志数据存放位置也不集中,如果要直接通过日志服务将日志收集,就会导致日志传输过慢,系统负载过重,单个节点失效而导致整个日志收集系统的崩溃等危险,为了提高收集日志的效率,本文采用了分布式日志收集策略,作用于应用层上运行的应用软件上,当运行应用程序时,便会记录该应用程序的运行日志,分布式日志收集策略有以下几点优点:

(1)可以将分布在各处的日志数据集中起来综合利用,这种利用对用户而言是透明的。

(2)可以将负载由单个节点转移到多个,从而提高效率,这对于大数据量的日志文件收集效率的提高是很明显的。

(3)分布式技术可以避免由于单个节点失效而使整个系统崩溃的危险。

2.2 日志数据服务层

服务层是整个日志服务框架的核心部分,服务层通过对资源层提供的原始日志数据进行预处理后,向用户提供精确化的日志数据。在服务层主要包含两种服务:日志数据预处理服务与日志数据存储服务。

第四,政治权力的更替必须经过“民”的许可,不得私下授受。既然“民”是政治权力的让渡者,是委托人,那么受托人就不能将权力私自授予他人。权力的变更或者分解必须得到委托人的同意。

2.2.1 日志数据预处理服务

日志数据预处理服务:日志数据预处理服务是整个应用层服务的核心服务,负责将原始日志数据根据需求将不必要的信息剔除,留下用户需要的消息。本文中数据预处理,包括对原始数据做出以下三方面预处理工作:数据过滤、数据去重与日志记录分段。首先一个原始日志数据集中会包含大量不必要的记录,如系统控制台记录,这些对于普通用户来说,并不是必须的,因此需要对原始日志数据进行过滤;其次是日志去重,一个原始日志数据集中会包含大量重复的记录,需要将重复的日志记录去除;最后是日志记录分段,一般日志数据格式:时间-日志等级-服务名称-发生的事件。这样一条原始日志数据用户无法进行阅读,因此需要对日志记录进行分段,不同的词段代表不同的含义。

2.2.2 多层次的日志数据存储服务

日志数据存储服务:日志数据存储服务是服务层的一个重要构成部分,负责对原始数据以及预处理后的数据进行存储。应用软件的运行日志具有以下特点[9]

(1)数据容量巨大。应用软件运行时会产生海量的上下文日志信息,这些数据隐含了海量有价值的支持故障诊断的数据信息,是后续工作得以进行的前提,因此需要一个海量数据存储系统支持原始日志数据的存储。

(2)数据产生速度快。随着应用服务的不断增多,处理用户请求也越来越多,每秒产生的应用软件运行日志记录数也越大,使得对日志数据量的精确预计变得困难,这对存储系统的水平扩展能力提出了更高的要求。

(3)异构的日志记录结构。原始日志记录的格式根据运行时场景提供日志记录信息,通常Debug日志会包含服务方法的参数信息,Error日志会包含异常堆栈信息,Info日志则含有相对简略的信息。

以上阐述存储的日志数据的特点,恰好符合大数据规模大、速度快、多样性特点,表明了应用软件运行日志数据实质上是一种大数据。

目前的常见的数据库类型包括关系型数据库和非关系型数据库,关系型数据库优点包括:

(1)数据的结构化。数据库中的数据并不是杂乱无章、毫不相干的,它们具有一定的组织结构,属于同一集合的数据具有相似的特征。关系型数据库的模型一般用二维表来表示,二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解。

当考察不同语速是否给较高听力水平班级HP-B在不同听力测试题型中带来成绩明显提高时,表6结果表明,较慢语速版本下,受试在长对话和短文中的平均得分有了明显提高,成绩提高甚至在0.01水平上都具有明显性。具体来说,短文中的成绩提高最为明显(t=-11.311,p=.000),其次是受试在长对话中的表现(t= -3.246,p=.002)。相反,受试在短对话中的表现正如独立样本T检验中的表现,并没有任何显著性的成绩提高(t=-.785,p= .435)。

(2)数据的安全性。关系型数据库对每次数据的访问都有中介,这种狭窄的接口有助于数据安全。

巷道帮部喷浆层壁后0.3 m范围内围岩非常破碎,成块状分布;帮部在0.3~1.2 m范围内围岩以裂隙带向节理带转换形式分布,裂隙密度逐步减小;顶板1.5 m以上区域围岩完整性相对较好,未见明显裂隙、离层,但孔壁存在泥块剥离现象。

(3)数据的完整性。数据的完整性是指保证数据库中数据的正确性。可能造成数据不正确的原因很多,关系型数据库通过对数据性质进行检查而管理它们。丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率。

(4)数据的灵活性。关系型数据库不是把数据简单堆积,它在记录数据信息的基础上具有很多的管理功能,如输入、输出、查询、编辑修改等,同时它的操作基于集合运算与谓词演算,非常灵活。

非关系型数据库优点包括:

(1)不需要预定义模式:不需要事先定义数据模式,预定义表结构。数据中的每条记录都可能有不同的属性和格式。当插入数据时,并不需要预先定义它们的模式,因此在大数据量的情况下,非关系型数据库表现出非常高的读写性能。

(2)基于键值对,数据没有耦合性,容易扩展;并且非关系型数据库在不太影响性能的情况下就可以方便地实现高可用的架构。

(3)存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,而关系型数据库则只支持基础类型。

以上介绍了两种数据库的优点,但事实上这还存在不少缺点:

(1)关系型数据库为了维护一致性所付出的巨大代价就是其读写性能比较差;固定的表结构;高并发读写需求;海量数据的高效率读写难以支持。

(2)非关系型数据缺点是不提供sql支持,学习和使用成本较高,例如用户查询这样的工作成本会很高;无事务处理,附加功能和报表等支持也不好。

由以上可以看出关系型数据库和非关系型数据库各有优缺点,但是某种程度上两种数据库又可以互补。本文中如果采用传统的关系型数据库对原始日志数据进行存储管理,将会出现难以支持海量数据存储的问题,所以需要设计一种适合大数据量日志存储的数据存储结构。因此利用基于海量数据的分布式非关系数据库来对大数据日志进行存储,但一般的基于海量数据的分布式非关系数据库对服务层的日志数据插入删除修改的支持比较薄弱,而传统的关系型数据库对插入删除的支持比较好,但是对大数据存储这块比较薄弱,为了解决两者的矛盾,并将两种数据库的优点体现出来,本文将二者相结合,将日志数据分为两种:一种是原始日志数据,当前数据会存放到关系型数据库集群中;另一种是预处理后的日志数据,预处理后的日志数据存放到基于海量数据的分布式非关系数据库中,这样对原始日志数据进行插入删除修改可以在关系型数据库集群中进行,对预处理后的日志数据进行查询的工作放在基于海量数据的分布式非关系数据库中执行,通过这种多层次的数据库存储结构,既保障了对原始日志数据的增添修改,又解决了对大数据量日志数据的存储问题。

2.3 日志数据应用层

应用层是面向用户的,目的是为用户提供预处理后的日志数据,预处理后的数据会存放在服务层的数据库中,本文通过提供多条件查询服务接口,向用户提供查询服务,用户可以根据不同的需求来查询日志数据[10]

2.4 框架中的数据流

整个日志数据框架的数据流如图2所示。

日志框架的数据通过分布式收集策略从各个节点上收集而来,这也是数据的来源。数据收集之后通过消息队列发送到日志数据服务层进行数据预处理,经过处理后的数据发送到数据库进行存储,并建立索引,为用户提供处理后的日志数据以及原始日志数据的查询。

3 系统实现

由于日志数据服务框架所具有的层次性,本文采用了多种不同的技术来满足不同层次上的服务,如图3所示。

经过多次调试和优化,测试结果显示,频率源输出中心频率为24.125 GHz时,其相位噪声可达-87.1 dBc/Hz@1 kHz,如图6所示。

3.1 日志数据资源层

日志数据收集服务:资源层负责对原始日志数据进行收集,能够将新产生的日志数据实时发送到收集端,如图4是资源层日志数据收集的一个具体流程,从图中可以看出日志收集工作通过分布式收集策略来完成,整个分布式收集结构由子节点和父节点以及数据库构成,其中每个子节点由三部分构成,包括source、channel、sink,source是数据来源,channel是数据进行传输的通道,sink用于将数据传输到指定地方,当每个子节点上的原始日志数据产生后,会通过当前子节点上的Agent传递给对应的日志收集器Collector。日志数据收集器Collector具有实时管道传输能力,可以处理各式各样的数据,并可以将这些数据集中起来以统一的格式发送到目的地。这三者之间通过event来触发和协调,当Collector收到数据后会对数据进行聚合,产生一个更大的数据流,最后传输到数据库中。

3.2 日志数据服务层

本文的日志数据一般分为两类,第一类就是从各个应用软件上采集的原始日志数据。这类日志数据信息量很大但杂乱不堪。本文将这类原始日志数据进行归档,由于此类数据不会被高频访问,对实时性要求也不高,因此在规范化后会存储到MySQL集群当中。第二类就是通过预处理的日志数据,此类数据对于故障诊断等日志分析工作有很重要的意义,因此这些数据将会被频繁地访问。因此这类数据本文中考虑存储到性能较高的分布式数据库Hbase中。如何将关系型数据库和非关系型数据库结合,并设计出适合日志数据存储的规范化数据结构是日志数据存储服务的核心部分[11]

W1#=0.6(0.6415,0.1279,0.7428,0.1056,0.0961)+0.4(0,0.5089,0.4449,0.5179,0)T=(0.3849,0.2803,0.6236,0.2705,0.0577)T

  

图2 框架数据流

  

图3 日志数据服务框架技术实现

  

图4 数据收集流程图

 

注:分布式收集策略流程图,每个子节点由三部分构成,包括source、channel、sink,source是数据来源,channel是数据进行传输的通道,sink用于将数据传输到指定地方。子节点收集完数据后将所有数据传递给日志收集器Collector,最后收集器将数据集合发送到数据库中。

其中,日志数据资源层是为了实现日志数据集的收集工作,日志数据服务层相当于一个日志处理平台,能够根据不同的需求对日志数据进行处理;日志数据应用层主要是向用户提供日志服务。

 

表1 MySQL数据库表

  

ID Start Time Stop Time Level classname Event int(15)datatime datatime char(10)char(15)char(1 024)Yes Yes Yes Yes Yes Yes服务ID服务启动时间服务终止时间日志等级类名服务时间内发生的事件

设计完MySQL数据库表后,资源层上的日志数据收集服务会将原始日志数据导入服务层,先将原始数据存入关系型数据库集群中,在服务层本文调用日志数据存储服务将数据存储到Mysql集群中,如图3所示,这里本文中采用了MySQL Cluster来搭建数据库集群。

规范化日志数据:通过日志数据收集服务收集原始日志数据后,为了方便对原始日志数据进行查询修改,本文将原始日志数据发送到MySQL数据库集群中,原始日志数据的格式一般包括如时间-日志等级-发生的事件,这样的日志数据很不规范,如果直接将这样的原始日志数据直接存入Hbase数据库,数据库将会浪费大量的时间在解析原始数据上,造成整个多层次日志数据存储效率低下,因此必须对日志数据格式规范化,在原始日志数据中,每条日志记录都包含一些主要的信息和次要信息,如一条应用程序的运行日志记录可能包含:服务ID、服务开始时间、发生的事件、请求类型等。但对于一般用户来说,有些信息不是非常重要的,比如服务ID等,有些信息可以通过预处理转化为用户所需要的信息,因此对于不用的日志数据需求,需要进行日志记录的规范化处理。

日志查询服务可以实现根据关键字和日志产生的时间进行查询。根据关键字查询是指基于特定的语法进行查询,一句条件筛选符合条件的字段类型或者字段内容的日志信息;根据时间查询包括相对时间查询(相对定义的时间点之前时间点的记录)和绝对时间查询(自定义时间查询)。

  

图5 日志数据结构图

日志索引是整个日志数据存储格式的核心,为每个日志服务定义一个服务ID,作为主键索引便于快速检索定位日志记录,提高了预处理以及之后的查询服务的效率;日志记录体存放日志数据本身的信息,日志记录体对于日志系统来说是透明的,日志系统通过对这些信息的分析来进行故障诊断;为了更详细地控制日志数据输出的级别,本文将日志等级分为三个等级INFO、ERROR、DEBUG。如表2所示就是经过规范化后的日志数据格式。

 

表2 规范化后的日志数据格式

  

Time Skype Event ID时间日志数据类型事件服务ID NULL INFO,ERROR,DEBUG NULL NULL

在图3可以看出规范化后的日志数据进入MySQL集群后会分布到不同的ndbd节点上,然后通过NDB引擎来进行存储操作。管理节点(也可以称管理服务器)主要负责管理数据节点和SQL节点,还有群集配置文件和群集日志文件。它监控其他节点的工作状态,能够启动、关闭或重启某个节点。数据节点用于存储数据。SQL节点跟一般的MySQL服务器是一样的,可以通过它进行SQL操作。

不过,上世纪50年代前后,“史诗”这种传自西方的文学类型,被一些熟悉文学,从事文艺工作的学者、诗人、作家运用到了少数民族的民歌整理中,并随着50年代民族文化工作的深入,催生了大量的作品。

北京市自2007年开始建立路网交通指数评价机制,2011年分析细化到行政区,2015年开始逐步对重点功能区进行指数评价,多年的实际使用证明了该评价方法的成熟性、敏感性和准确性,实现了对日常交通运行状况的定量化评价. 在新的工作体制下,需要将交通拥堵分析的尺度进一步缩小到街道级,建立面向街道级的交通拥堵评价体系方法和评价标准,对街道进行交通运行特征研究,支持面向多部门联合治理交通拥堵的工作要求.

当原始数据存储到MySQL集群后,随即导入Spark,通过Spark Streaming对原始数据进行过滤、去重和日志记录分段的预处理工作,Spark Streaming是建立在Spark上的实时计算框架,它将流式计算分解成短小的批处理作业,交给Spark引擎处理,每一段日志数据都转换为Spark中的RDD,然后将Spark Streaming中对DStream的操作变为针对Spark中对RDD的Transformation的操作。这里用户可以根据自己的选择将自己所需要的日志数据记录通过预处理单独提取出来,随后将预处理后的结果导入Hbase进行存储。

(2)日志数据服务层:提供日志处理与存储服务。

在本文中根据日志等级将预处理后的日志数据分为3种:INFO、ERROR、DEBUG,分别对应3个表。INFO表通常用一个事物来表示上下文执行信息,ERROR表的每一行通常表示一个事物执行失败时产生的上下文执行信息,Debug表通常表示一个事物执行步骤时所产生的上下文信息。

(3)高容错性。通过多层次的数据存储结构来保证数据不会丢失,从而提高容错能力。

 

表3 Hbase逻辑物理设计模型

  

Column Family Time2015-12-21 20:32:38,592 Event 2015-12-21 20:32:38,592开始入库数据:34d8a352-1631-452d-9040-d2126e7ab490开始文件上传

3.3 日志数据应用层

日志数据查询服务:经过预处理的日志数据存储到Hbase数据库中后,用户需要对日志数据库进行查询以便获得所需要的日志数据。Hbase本身只支持基于rowkey的查询方式,用户并不知道需要查询数据的rowkey,只能通过关键字对日志数据进行查询,为了满足用户的这种多条件查询需求,本文采用基于Solr的HBase多条件查询为用户提供服务,通过Solr将HBase数据库中数据按照不同条件封装起来,用户可以按照不同的需求对经过预处理的日志数据进行条件查询,获得自己所需要的日志数据。

如图6所示,本文将Hbase表中涉及条件过滤的字段和rowkey在Solr中建立索引,通过Solr的多条件查询快速获得符合过滤条件的rowkey值,拿到这些rowkey之后在Hbase中通过指定rowkey进行查询,最后将结果返回数据集给用户。由于日志数据是一种大数据量的数据,因此传统的单键索引已经不适合用于日志数据的查询,因此本文将在Solr上建立一个键组合索引,针对规范化后的日志数据的特点,本文在Time、Skype和ID这3个键字段上建立索引,并按照Time进行降序排序。

  

图6 日志数据查询流程图

 

注:文中将Hbase表中涉及条件过滤的字段和rowkey在Solr中建立索引,通过Solr的多条件查询快速获得符合过滤条件的rowkey值,拿到这些rowkey之后在Hbase中通过指定rowkey进行查询,最后将结果返回给用户。

规范化格式处理是为了达到以下两个目的:可扩展性、简单化。可扩展性目的是为了容纳不同类型的应用程序日志使日志在类型上没有约束,简单化是为了规范化后的日志数据在被用户拿来做日志分析时能够提高效率,如图5所示本文将原始日志数据格式划分为三部分:日志索引、日志记录体以及日志等级。

4 案例研究

为了对本文提出的日志数据收集与处理方法进行验证可行性以及同传统的日志收集与分析系统进行对比,在一个真实的环境中进行了案例的部署和研究,测试环境是由3台物理机构成,这3台物理机构成了一个Spark集群,其中两台作为从节点,一台作为主节点,主机的操作系统都为Ubuntu,主节点作为调度分配任务存在的,从节点才是真正计算的部分。主节点是DELL PowerEdge M630,它有2个6核E5-2609 v3处理器,1.9 GHz,15 MB缓存,64 GB DDR4内存,2块300 GB 10K 2.5′SAS硬盘。从节点是DELL PowerEdge M630,2个8核Xeon E5-2640 v3处理器,2.6 GHz,20 MB缓存,128 GB DDR4内存,2块300 GB 10K 2.5′SAS硬盘。这些硬件设备之间通过万兆网卡相连;同时这3台物理机也搭建了MySQL集群,负责提供关系型数据库服务。

本文所用的数据来源采用了某综合减灾空间信息服务应用系统的日志数据,该应用系统的目标是从空间和时间的维度可视化自然灾害的风险和损失,为各项灾害管理工作各阶段提供直观的信息,并提供产品、技术、决策等服务,保障了防灾减灾工作的有效进行。该应用系统采用面向服务的体系架构(SOA),包含一系列具有独立功能的Web组件。本文从该系统得到的数据分为三种,分别为样本数据(100 MB)、一个月的数据(700 MB)、一年的完整数据(4.96 GB)。日志数据收集与服务处理框架应用案例如图7所示。

4.1 日志数据处理流程

由图7可以看出在本案例中日志数据资源层负责收集某综合减灾空间信息服务应用系统产生的日志数据,收集到的原始日志数据如图8所示。

经过规范化后Spark分布式处理系统会调用MySQL中的原始数据,通过RDD模块进行日志数据预处理,再将处理过的数据存储到Hbase数据库中。预处理后的日志数据如表4所示。

  

图7 日志数据收集与服务处理框架应用案例

 

表4 预处理后的日志数据

  

?

  

图8 原始日志数据

如表4可以看到Hbase的数据库表和字段,最后用户通过应用层提供的日志数据查询服务得到精确化的日志数据。如图9所示,用户查询了在时间点之间的Error日志,结果会返回在这个时间点之间发生错误的时间以及发生错误的服务ID。由以上可知,本文提出的日志收集与服务处理框架能够有效地完成对日志数据收集与处理的任务,并向用户提供所需要的查询结果。从而验证了本文提出的日志数据收集与服务处理框架的实用性。

本文选用通过JSON数据格式给出,因为JSON是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,易于阅读和编写,同时也易于数据解析,传输JSON格式的日志数据带来的传输负载很小,非常符合日志数据传输的要求。如图10所示,截取了一段用户查询的处理后的日志数据。

  

图9 日志数据查询结果

  

图10 预处理后日志数据查询结果

4.2 实用性测试

为了测试查询服务的效率,这里对不同数据量下的日志数据进行数据查询,比较响应时间和响应数。本文以日志记录的条数为基准比较不同数据量下,每个请求的时长。

从图11中可以看出,日志数据量的增大,导致查询的响应时间呈现出先减后升的趋势,这是因为日志查询服务会对查询结果进行缓存,可以看到当用户查询日志数量达到50 000条时,响应时间仍然保持在80 ms水平,说明了整个查询服务能够保证良好的用户体验。

  

图11 日志数据查询测试结果

4.3 对比分析

为了评价本文日志框架的价值,同常用的ELK分布式日志系统以及Chukwa进行对比,ELK是一种日志收集分析平台,由ElasticSearch、Logstash和Kiabana 3个开源工具组成,所以被称为ELK。chukwa是一个开源的用于监控大型分布式系统的数据收集系统。这是构建在hadoop的hdfs和map/reduce框架之上的,继承了hadoop的可伸缩性和鲁棒性。Chukwa还包含了一个强大和灵活的工具集,可用于展示、监控和分析已收集的数据。这里对日志数据处理日志数据所占用的时间与CPU利用率进行比较,实验使用系统监控工具Nagios对两者分别监控。如图12所示,随着日志数据集的不断增大,整个CPU的利用率会缓慢提高。日志数量达到50 000条时,Chukwa的CPU使用率达到了25.3%,ELK的CPU使用率达到了22.6%,而本文的日志框架的CPU使用率达到了22.3%,可以看出三者之间没有太大的区别,但随着日志数量的不断增多,本文的日志框架CPU使用率相比其他两者略有降低,因此从CPU使用率来看本文中的日志框架在处理大数据量日志数据时相对这些已经成熟使用的日志收集分析系统来说有一定优势。

  

图12 CPU使用率对比图

图13是对以上三种不同日志收集分析系统,从处理日志数据到查询日志数据结束所占用的时间进行了比较。这里本文对1到100个日志文件进行测试,每个文件单位时间内所产生的日志数据量为30 kb,同时在不同时间段内进行采样,最终取平均值,实验结果如下:随着日志文件的增多每条记录从产生到进行日志处理与查询所耗费的时间也随之增大,当达到50个日志文件时,本文的日志框架所消耗的时间同ElK与Chukwa所消耗的时间相比略长,但到100个日志文件时,所消耗的时间相比ELK与Chukwa已经有所减少,因此可以说明在处理大数据量日志数据时本文提出的框架相比传统的ELK以及Chukwa有一定优势。

牛皮糖站在小卖部柜台前,指手划脚要一包简装红菊烟,忽听到后面的餐馆里吵吵闹闹。蹑手蹑脚过去,看到了村长,他陪着一帮人在那里喝酒。村长看到了牛皮糖,目光没有停留就闪过去,脸红脖子粗的和旁边的人划拳。好像他牛皮糖是个讨饭的。

  

图13 处理时间对比图

5 结束语

应用程序运行过程中会产生大量的操作痕迹,如何快速地收集这些日志操作痕迹去生成日志数据,存储日志数据,并根据这些日志数据向用户提供下一步的服务,具有很大的意义。本文提出了一种面向应用层程序运行日志的收集与服务处理框架,该方法利用分布式收集策略实现了针对应用程序的运行日志的收集,利用Spark对日志数据进行预处理,并且利用了Hbase数据库以及MySQL数据库集群实现了对日志数据的存储,最后通过自定义的日志服务向用户提供日志数据查询。相比传统的日志收集处理方案,这种日志收集与服务处理框架有诸多优点:首先,日志数据采用实时采集并通过数据库保存,因此可以对某些数据进行实时分析。其次,该框架考虑到日志数据的特点,采用大数据平台对日志数据进行处理,并通过多层次的数据库存储来满足不同类型日志数据的存储需求。最后,该框架可以满足用户的个性化需求。在接下来的研究工作中,将进一步考虑如何进一步降低本文框架处理日志数据时CPU使用率的问题,并且提高整个框架的稳定性。

参考文献

[1]付博,赵世奇,刘挺.Web查询日志研究综述[J].电子学报,2013,41(9):1800-1808.

[2]Fu Q,Zhu J,Hu W,et al.Where do developers log?An empiricalstudy on logging practices in industry[C]//36th International Conference on Software Engineering(ICSE),2014:24-33.

[3]廖湘科,李姗姗,董威,等.大规模软件系统日志研究综述[J].软件学报,2016,27(8):1934-1947.

[4]韦勇,连一峰.基于日志审计与性能修正算法的网络安全态势评估模型[J].计算机学报,2009,32(4):763-772.

[5]刘虎球,马超,白家驹.面向驱动配置的自动日志插入方法研究[J].计算机学报,2013,36(10):1982-1992.

[6]李玉荣,杨树强,贾焰,等.分布式日志服务关键技术研究[J].计算机工程与应用,2006,42(7):116-118.

[7]周江,王伟平,孟丹,等.面向大数据分析的分布式文件系统关键技术[J].计算机研究与发展,2014,51(2):382-394.

[8]申利民,张旭晖.面向SAAS模式的日志架构设计与实现[J].计算机应用与软件,2011,28(12):57-59.

[9]崔杰,李陶深,兰红星.基于Hadoop的海量数据存储平台设计与开发[J].计算机研究与发展,2012,49(s1):12-18.

[10]钟武,胡守仁.一种分布式数据库查询优化算法[J].计算机学报,1997(11):1024-1033.

[11]薛永庆,徐维祥.一种适应大型数据库的多支持度关联规则算法[J].计算机工程与应用,2008,44(2):182-185.

[12]宛婉,周国祥.Hadoop平台的海量数据并行随机抽样[J].计算机工程与应用,2014,50(20):115-118.

[13]Zhu Jieming,He Pinjia,Fu Qiang,et al.Learning to log:helping developers make informed logging decisions[C]//IEEE/ACM 37th IEEE International Conference on Software Engineering,2015:415-425.

[14]Cinque M,Cotroneo D,Pecchia A.Event logs for the analysis of software failures:a rule-based approach[J].IEEE Transactions on Software Engineering,2013,39.

[15]Lan Z,Zheng Z,Li Y.Toward automated anomaly identification in large-scale systems[J].IEEE Transactions on Parallel&Distributed Systems,2010,21(2):174-187.

[16]Rabkin A,Xu W,Wildani A,et al.A graphical representation for identifier structure in logs[C]//The Workshop on Managing Systems Via Log Analysis&Machine Learning,2010.

[17]Salfner F,Tschirpke S,Malek M.Comprehensive logfiles for autonomic systems[C]//International Parallel and Distributed Processing Symposium,2004.

 
张骁,应时,张韬
《计算机工程与应用》2018年第10期文献

服务严谨可靠 7×14小时在线支持 支持宝特邀商家 不满意退款

本站非杂志社官网,上千家国家级期刊、省级期刊、北大核心、南大核心、专业的职称论文发表网站。
职称论文发表、杂志论文发表、期刊征稿、期刊投稿,论文发表指导正规机构。是您首选最可靠,最快速的期刊论文发表网站。
免责声明:本网站部分资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有
如有不愿意被转载的情况,请通知我们删除已转载的信息 粤ICP备2023046998号