一种性能监控的方法及装置与流程

文档序号:11250762阅读:889来源:国知局
一种性能监控的方法及装置与流程

本发明涉及网络通信领域,尤其涉及一种性能监控的方法及装置。



背景技术:

随着企业信息系统的部署复杂化、云化,办理一笔业务往往需要经过数十台服务器,数百个服务接口的调用。面对如此复杂的系统和应用,业务中断、系统性能缓慢成为主要技术难题。通过采集业务应用系统各环节的性能信息,分析业务性能瓶颈,可以为系统性能提出优化策略。

目前的获取业务应用性能信息,进行监控、分析的方法主要以下几种:

1、主动探测技术:模拟移动客户、营业员等系统终端用户的实际业务操作,采用仿真方式直接对被探测系统特定业务发起探测,通过对被探测业务办理结果及办理时延等探测结果的分析,发现被探测系统中存在问题的业务功能模块。然而,主动探测技术基于仿真技术,需要周期执行,受探测终端、探测频率、网络等情况影响,很难准确反映实际的业务状况。

2、dpi(deeppacketinspect,深度包检测技术)分析:根据业务需求在合适的交换机上设置镜像端口,获取交换机网络数据报文并进行数据解析、后续分析,进而还原真实用户业务办理情况。dpi分析业务系统负荷小、采集实时性高,但软硬件设备成本较高,且需要对报文格式进行修改。此外,目前真实流量采集只能支持http(hypertexttransferprotocol,超文本传输协议),对于复杂业务系统的后台应用服务、数据库服务,均不能很好的进行解析并还原业务过程。

3、网页插码技术:通过在被采集的系统网页内嵌入java(计算机编程语言)脚本代码,收集并分析用户访问信息,进而还原真实用户业务办理情况。网页插码技术可做到对业务系统基本无负荷,采集实时性高,但只能在网页层发挥作用,不能做业务全过程分析。

4、业务系统日志改造技术:通过全面改造业务系统,在业务系统内埋点,通过标准api调用取得业务受理日志数据,并对其进行数据解析、后续分析,进而还原真实用户业务办理情况。业务系统日志改造技术难度不大,但对于大型的在线生产系统进行业务日志标准api(applicationprogramminginterface,应用程序编程接口)调用改造,会导致原始程序的全面修改。一方面工作量大,影响业务生产;另一方面,日志规范的参数随着需求的变化而修改,维护成本高。

综上所述,现有的对应用性能监控分析时需要修改业务系统框架层代码、工作量大和维护成本高。



技术实现要素:

本发明提供一种监控方法及装置,用以解决现有技术中对应用性能监控分析时存在需要修改业务系统框架层代码、工作量大和维护成本高的问题。

本发明实施例提供一种性能监控的方法,包括:

获取业务系统中所有类,确定所述所有类中需要监控性能信息的类;

在所述需要监控性能信息的类中添加日志处理信息;

加载所述添加日志处理信息的类,生成日志文件。

可选的,所述确定所述所有类中需要监控性能参数的类,包括:

确定需要监控性能信息的业务的业务标识,根据所述业务标识确定父调用对象;

根据所述所有类中的线程获取java堆栈信息,将所述java堆栈信息与所述父调用对象匹配;

将与所述父调用对象匹配的java堆栈信息对应的类作为所述需要监控性能参数的类。

可选的,所述在所述需要监控性能信息的类中添加日志处理信息,包括:

通过加载网络代理proxy组件,在所述需要监控性能信息的类的所述业务系统的框架层的头部和/或尾部添加日志处理信息。

可选的,所述日志处理信息包括以下中的任一种或组合:

日志公共头、日志参数、日志内容;

所述日志内容包括下中的任一种或组合:

头部日志、尾部日志、异常日志。

可选的,加载所述确定添加日志处理信息的类,生成日志文件之后,包括:

分析所述日志文件,得到所述需要监控性能信息的业务的性能信息;

所述性能信息包括:

业务开始时间、业务结束时间、业务持续时长、业务异常信息。

本发明实施例还提供一种性能监控的装置,包括:

确定模块:用于获取业务系统中所有类,确定所述所有类中需要监控性能信息的类;

添加模块:用于在所述需要监控性能信息的类中添加日志处理信息;

生成模块:用于加载所述添加日志处理信息的类,生成日志文件。

可选的,所述确定模块,具体用于:

确定需要监控性能信息的业务的业务标识,根据所述业务标识确定父调用对象;

根据所述所有类中的线程获取java堆栈信息,将所述java堆栈信息与所述父调用对象匹配;

将与所述父调用对象匹配的java堆栈信息对应的类作为所述需要监控性能参数的类。

可选的,所述添加模块,具体用于:

通过加载网络代理proxy组件,在所述需要监控性能信息的类的所述业务系统的框架层的头部和/或尾部添加日志处理信息。

可选的,所述日志处理信息包括以下中的任一种或组合:

日志公共头、日志参数、日志内容;

所述日志内容包括下中的任一种或组合:

头部日志、尾部日志、异常日志。

可选的,所述生成模块,还用于:

分析所述日志文件,得到所述需要监控性能信息的业务的性能信息;

所述性能信息包括:

业务开始时间、业务结束时间、业务持续时长、业务异常信息。

本发明实施例提供了一种性能监控的方法及装置,通过获取业务系统中所有类,确定所述所有类中需要监控性能信息的类;在所述需要监控性能信息的类中添加日志处理信息;加载所述添加日志处理信息的类,生成日志文件。本发明实施例提供的性能监控的方法及装置,在对应用系统性能监控分析时不需要修改业务系统框架层代码,通过在需要监控性能信息的类中添加日志处理信息,从而获取系统的调用参数,时长等关键性能信息,实现应用系统的性能分析,减小了工作量,降低了维护成本。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种性能监控的方法流程示意图;

图2为本发明实施例提供的一种性能监控的方法流程图;

图3为本发明实施例提供的一种性能监控的装置结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明实施例提供一种性能监控的方法,如图1所示,为本发明实施例提供的一种性能监控的方法流程示意图,包括:

步骤101:获取业务系统中所有类,确定所有类中需要监控性能信息的类。

本发明实施例中,类(class)是对某种类型的对象定义变量和方法的原型,包含有关对象动作方式的信息,如对象的名称、方法、属性和事件等。业务系统的框架层包括多个类,在获取所有类之后,需要确定出待监控性能信息的类。

具体地,首先确定需要监控性能信息的业务,得到需要监控性能信息的业务标识,根据业务标识确定父调用对象;然后在所有类中的线程获取java堆栈信息,将java堆栈信息与父调用对象匹配;若任一java堆栈信息与父调用对象匹配,则将该java堆栈信息对应的类作为需要监控性能参数的类。

例如,将“开户”业务作为需要监控性能的业务,缴费业务对应的业务标识为“createuser”,确定“开户”业务的父调用对象“org.iplatform.framework.security.controller.usercontroller.createuser”;在获取到的所有类的系统框架层进行拦截,通过json(javascriptobjectnotation,java脚本对象表示法)配置识别所有java堆栈调用对象,得到调用对戏与“org.iplatform.framework.security.controller.usercontroller.createuser”匹配的所有java堆栈,并提取出匹配后的java堆栈对应的类,作为“开户”业务对应的类。

步骤102:在需要监控性能信息的类中添加日志处理信息。

本发明实施例中,通过java的反射机制在需要监控性能信息的类中添加日志处理信息。java的反射机制一种动态获取的信息以及动态调用对象的方法,具体指在系统运行状态中,对于任意一个类,都可以获取该类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。

具体地,在系统运行时,判断任意一个对象所属的类,构造任意所需监控性能的类的对象,确定所需监控性能的类所具有的成员变量和方法,并生成动态网络代理proxy组件,通过加载网络代理proxy组件,在需要监控性能信息的类的业务系统的框架层的头部和/或尾部添加日志处理信息。

进一步地,日志处理信息根据预设格式生成,日志处理信息包括以下中的任一种或组合:日志公共头、日志参数、日志内容。日志内容包括下中的任一种或组合:头部日志、尾部日志、异常日志。

为了保证日志处理信息的易读性,需要规范化日志处理信息的格式,具体可以根据表1中的格式生成日志处理信息。

表1

具体地,“header”为日志公共头,日志共公头用空格与日志参数间隔;para为日志参数,根据日志类型的,日志参数不同,采用para@[paraname=xxx,]格式,并用逗号分隔不同参数;content为日志内容,为文本字符串。例如,日志处理信息可以为“host_app110.0.2.1crmcrmapp2014-12-1212:00:01222infoapinpara@[clientip=”10.0.1.1”,clienttype=”ie”]callmethodsucceed.”

例如,如表2所示,日志公共header,可以包括主机名称、主机ip、应用服务名称、时间戳、日志级别、日志类别、日志参数类型等信息。对时间戳,可以采用格式“yyyymmddhhmmsssss”。对于日志级别,可以设置“debug(调试),info(异常),warning(告警),error(错误),critical(重要)”五个日志级别。对于日志类别,可以设置为app(application,应用程序),即类别为服务调用。对于日志参数类型,可以包括调入参数in、调出参数out和异常参数info三个参数,其中in为调入时刻打印的日志,用于计算调用时长的starttime;out为调出时刻打印的日志,用于计算调用时长的endtime;info为调用内部的信息,不参与时长计算。

表2

具体地,在每一个需要监控性能信息的类都需要记录一个头部日志,一个尾部日志以及若干个异常日志。对于日志类别为app的日志公共头,日志内容中的头部日志in用来记录调入app的日志,可以包括如表3所示的内容:

表3

对于日志类别为app的日志公共头,日志内容中的尾部日志out用来记录退出app的日志,可以包括如表4所示的内容:

表4

对于日志类别为app的日志公共头,日志内容中的异常日志info用来记录除in,out以外的日志信息,例如异常信息,内部业务调试信息等,可以包括如表5所示的内容:

表5

步骤103:加载添加日志处理信息的类,生成日志文件。

业务程序运行时,在动态加载类时性能监控proxy组件代码已植入进应用系统的框架层的需要监控性能信息的类中,通过加载类生成日志文件,根据in,out日志可以分析出每个业务的调用时长,根据info日志可以分析出业务的方法明细、异常信息以及敏感词汇,即可以输出需要监控性能信息的业务的性能信息。

本发明实施例提供了一种性能监控的方法,通过获取业务系统中所有类,确定所述所有类中需要监控性能信息的类;在所述需要监控性能信息的类中添加日志处理信息;加载所述添加日志处理信息的类,生成日志文件。本发明实施例提供的性能监控的方法,在对应用系统性能监控分析时不需要修改业务系统框架层代码,通过在需要监控性能信息的类中添加日志处理信息,从而获取系统的调用参数,时长等关键性能信息,实现应用系统的性能分析,减小了工作量,降低了维护成本。

下面通过具体的方法流程对本发明实施提供的一种性能监控的方法进行详细说明,如图2所示,为本发明实施例提供的一种性能监控的方法流程图,包括:

步骤201:启动应用系统。

步骤202:获取jvm(javavirtualmachine,java虚拟机)中所有类。

具体地,jvm为java程序的运行环境,应用系统的框架层包括的所有类都在jvm中运行。在jvm中可以直接读取到运行环境中的所有类。

步骤203:判断每一个类是否为需要监控的类,若是,则执行步骤204,否则执行步骤205。

具体地,首先确定需要监控性能信息的业务,得到需要监控性能信息的业务标识,根据业务标识确定父调用对象;然后在所有类中的线程获取java堆栈信息,将java堆栈的调用对象与父调用对象匹配;若任一java堆栈信息与父调用对象匹配,则将该java堆栈信息对应的类作为需要监控性能参数的类。

例如,将“开户”业务作为需要监控性能的业务,缴费业务对应的业务标识为“createuser”,确定“开户”业务的父调用对象“org.iplatform.framework.security.controller.usercontroller.createuser”;在获取到的所有类的系统框架层进行拦截,通过json(javascriptobjectnotation,java脚本对象表示法)配置识别所有java堆栈调用对象,得到调用对戏与“org.iplatform.framework.security.controller.usercontroller.createuser”匹配的所有java堆栈,并提取出匹配后的java堆栈对应的类,作为“开户”业务对应的类。

步骤204:添加日志处理信息。

具体地,在系统运行时,判断任意一个对象所属的类,构造任意所需监控性能的类的对象,确定所需监控性能的类所具有的成员变量和方法,并生成动态网络代理proxy组件,通过加载网络代理proxy组件,在需要监控性能信息的类的业务系统的框架层的头部和/或尾部添加日志处理信息。

进一步地,日志处理信息根据预设格式生成,日志处理信息包括以下中的任一种或组合:日志公共头、日志参数、日志内容。日志内容包括下中的任一种或组合:头部日志、尾部日志、异常日志。在每一个需要监控性能信息的类都需要记录一个头部日志,一个尾部日志以及若干个异常日志。

未添加日志处理信息的类可以为:

publicvoidtest(string[]args)throwsexpection

{

dosomething();

}

添加日志处理信息之后的类可以为:

publicvoidtest(stringreqid,string[]args)throwsexpection

{

try

{

messagemsq=messagefactory.createmessage();

meq.setreqid(reqid);//设置日志参数其他属性

logtrack.info(msq);

}

catch(expectione)

{thrownewlogtrackexpection(“e001”,”参数1”,e)}

}

步骤205:加载jvm。

具体地,在加载加载jvm运行环境时,性能监控proxy组件代码已植入进应用系统的框架层的所有需要监控性能信息的类中,通过加载类生成日志文件。根据头部日志及尾部日志可以分析出每个业务的调用时长,根据异常日志可以分析出业务的方法明细、异常信息以及敏感词汇,即可以输出需要监控性能信息的业务的性能信息。

基于相同的发明构思,本发明实施例还提供一种性能监控的装置,如图3所示,包括:

确定模块301:用于获取业务系统中所有类,确定所述所有类中需要监控性能信息的类;

添加模块302:用于在所述需要监控性能信息的类中添加日志处理信息;

生成模块303:用于加载所述添加日志处理信息的类,生成日志文件。

可选的,所述确定模块301,具体用于:

确定需要监控性能信息的业务的业务标识,根据所述业务标识确定父调用对象;

根据所述所有类中的线程获取java堆栈信息,将所述java堆栈信息与所述父调用对象匹配;

将与所述父调用对象匹配的java堆栈信息对应的类作为所述需要监控性能参数的类。

可选的,所述添加模块302,具体用于:

通过加载网络代理proxy组件,在所述需要监控性能信息的类的所述业务系统的框架层的头部和/或尾部添加日志处理信息。

可选的,所述日志处理信息包括以下中的任一种或组合:

日志公共头、日志参数、日志内容;

所述日志内容包括下中的任一种或组合:

头部日志、尾部日志、异常日志。

可选的,所述生成模块303,还用于:

分析所述日志文件,得到所述需要监控性能信息的业务的性能信息;

所述性能信息包括:

业务开始时间、业务结束时间、业务持续时长、业务异常信息。

本发明实施例提供了一种性能监控的装置,通过获取业务系统中所有类,确定所述所有类中需要监控性能信息的类;在所述需要监控性能信息的类中添加日志处理信息;加载所述添加日志处理信息的类,生成日志文件。本发明实施例提供的性能监控的装置,在对应用系统性能监控分析时不需要修改业务系统框架层代码,通过在需要监控性能信息的类中添加日志处理信息,从而获取系统的调用参数,时长等关键性能信息,实现应用系统的性能分析,减小了工作量,降低了维护成本。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1