LogMinner:一种基于EMF和STAF的日志分析工具2011-08-14 IBM 赵晓红 陈云 张延钊简介: 大型软件在运行过程中会产生大量的各种各样的日志信息,测试人员常常要分析大量的冗长的 日志,而这些日志又往往分布在不同位置的不同平台的主机的不同目录中,使得测试中的日志分析工作繁 复、乏味,为了方便测试人员快速分析日志,本文的作者开发了一个基于EMF和STAF技术的日志分析工具 ――LogMinner。1. 概述分布式异构软件系统的测试人员常常要分析大量的日志,例如安装日志,数据库日志等等,这些日志 分布在不同位置的不同操作系统的主机上,测试人员为了分析这些日志需要奔波于实验室各台机器之间, 既便是有远程操作,测试人员也必须掌握多种操作系统,并登录到多台机器进行分析,而且很多日志文件 ,内容冗长,使得测试工作显得繁复、乏味. 对于测试人员来说,查看这些日志文件并进行分析将是一个 巨大的挑战。为了实现测试人员快速高效简便的进行日志分析工作,我们开发实现了一个小巧易用的日志分析工具 --LogMinner。使用LogMinner,只需编辑xml格式的配置文件,在配置文件中指定需要分析的日志所在的机器名、路 径、文件名的模式以及关键字的模式和属性,LogMinner即会到指定机器搜索指定目录及其子目录中符合 指定文件名模式的的文件,进行日志扫描,搜索符合关键字模式的关键字,并将分析结果信息输出到指定 或默认的html文件中。LogMinner工具包括了基于EMF的配置文件编辑器(Config File Editor)、基于java和STAF的 LogMinner控制台(LogMinner Console)和基于STAF的LogMinner Service三个组件。本文将对LogMinner的体系结构、设计实现和配置使用进行介绍,并提出进一步的开发展望。2. LogMinner2.1LogMinner的体系结构LogMinner是基于STAF(Software Testing Automation Framework) 的分布式P2P系统.系统中的所有主 机都是STAF Client。其中LogMinner Servvice是定制的Java STAF Service。而LogMinner Console是运 行在STAF环境下的Java应用程序, LogMinner Console和LogMinner Servvice之间的通讯是通过STAF实现 的request/response 模式的同步通讯。LogMinner Console根据XML格式的配置文件向指定的一组部署了 LogMinner Service的主机提出日志分析请求,LogMinner Service响应请求并将分析结果返回给LogMinner Console。系统的部署如下图所示.图2.1 LogMinner的部署图

STAF是基于Service这种可重用组件设计的开源、支持多平台、多语言的软件自动测试框架。基于STAF 实现的LogMinner系统依存与边缘化设备的主动协作,而非中央服务器,成员之间直接通讯,打破了传统 的C/S模式,成员具备客户端和服务器的双重特性。这种分散式的体系结构实现了日志分析的分布式计算 ,有效的利用了网络环境中的计算资源。同时无需中心服务器,不但节约了硬件资源,而且无需中转服务 的时间资源消耗使得系统具有通讯及时性好,数据传输速率高的优点。LogMinner基于STAF的实现除了端 到端的通讯模式外,面向service概念开发的可重用组件,使得此软件具有良好的可重用性和可扩展性。2.2LogMinner的各组件功能描述1)担任服务器角色的LogMinner Service实现了日志的分析工作。LogMinner Service接收到 LogMinner Console的服务请求,对于合法请求,搜索指定目录及其子目录中并对文件名进行指定正则表达 式模式匹配,对符合的文件进行符合指定正则表达式的关键字的搜索.生成结构化的结果消息集合,返回 LogMinner Console。2)担任客户端角色的LogMinner Console只需解析xml格式的配置文件,根据配置文件生成标准的 LogMinner Service请求,向各台服务器提交请求,并读取响应数据解析写入指定或默认的结果文件.3)作为可视化配置文件编辑器的Config File Editor利用了EMF(Eclipse Model Framework)技术, 通过可视化的操作生成符合machineset.xsd定义的配置文件的xml schema的xml文档.是生成LogMinner配 置文件的一个Eclipse插件工具,配置文件还可由其他任意xml文档编辑器生成和修改,Config File Editor并非LogMinner系统必须。