应用程序监控方法和装置的制作方法

文档序号:6426560阅读:128来源:国知局
专利名称:应用程序监控方法和装置的制作方法
技术领域
本申请涉及互联网领域,具体而言,涉及一种应用程序监控方法和装置。
背景技术
如今互联网应用越来越复杂,对系统的可用性和稳定性的要求越来越高,我们不能完全保证系统没有问题,只能做到尽可能的减少问题。然而,当系统出现问题时,需要第一时间发现,并以最快的速度解决掉,把对客户的影响降到最低,而这就需要应用程序监控系统,以便实时的监控系统的运行状况,对运行时数据进行分析。为了实现对应用程序的监控,现有技术中提供了以下几种解决方案I)主动报告健康数据在业务逻辑中添加监控逻辑(程序),比如当发现程序中的某个值不合法,则主动将错误信息发送到监控中心; 2)采用Spring (Spring是一个开源框架,它是为了解决企业应用开发的复杂性而创建的。)等框架提供的AOP (Α0Ρ为Aspect Oriented Programming的缩写,意为面向方法编程,为程序动态统一添加功能的一种技术)功能,把系统监控的逻辑分离出来,如果被拦截的方法出现异常情况,则发送错误信息到监控中心;3)米用 JMX (Java Management Extensions)框架,将服务封装为 MBean (ManagedBean),由监控中心定时抓取数据,或者定时发送数据到监控中心。然而,上述解决方案具有以下问题I)应用监控的逻辑代码与正常的业务逻辑代码耦合在一起,当需要更新监控逻辑代码时,需要重新编写包括应用监控逻辑和业务逻辑代码,将更新后的监控逻辑代码与业务逻辑代码重新进行耦合,组成新的程序代码。这样,增加了代码的复杂度与维护成本,并且修改困难,需要从新发布;2)通过Spring的AOP实现,用于监控的拦截器也要配置到文件中,与应用的配置文件耦合在一起。这样,当需要更新监控逻辑代码时,需要重新配置拦截器,并将更新后的拦截器与配置文件重新进行耦合,组成新的文件。这样,增加了代码的复杂度与维护成本,并且修改困难,需要从新发布。

发明内容
本申请的主要目的在于提供一种应用程序监控方法和装置,以至少解决现有技术中代码复杂度和维护成本较高的问题。根据本申请的一个方面,提供了一种应用程序监控方法,其包括在类文件中加入监控钩子,其中,监控钩子与监控程序相关联;在执行类文件的监控钩子时,调用监控钩子关联的监控程序对应用程序进行监控,其中,所述监控程序和应用程序代码分别位于不同的类文件中,且该二类文件独立于包含了所述监控钩子的类文件。在类文件中加入监控钩子的步骤包括在系统启动时检查类文件是否存在匹配的监控项;若存在,则在类文件中加入监控钩子。
在类文件中加入监控钩子的步骤包括加载类文件的字节码;将监控钩子加入到字节码中。在系统启动时检查类文件是否存在匹配的监控项的步骤包括读取所有监控项的配置文件;在加载所述类文件的字节码时判断所述类文件中的应用程序信息是否与监控项匹配,其中,所述监控项包括包名、类名、方法名和参数列表的字符串;若匹配,则判断出所述类文件存在匹配的监控项。在调用监控钩子对应的监控程序关联用程序进行监控之后,应用程序监控方法还包括将类文件设置成不包括匹配的监控项;重新加载类文件。在调用监控钩子关联的监控程序对应用程序进行监控之后,应用程序监控方法还包括修改所述监控钩子关联的监控程序;重新加载所述类文件,并在执行所述类文件的监控钩子时,调用所述监控钩子关联的监控程序对所述应用程序进行监控。根据本申请的另一方面,提供了一种应用程序监控装置,其包括设置单元,用于 在类文件中加入监控钩子,其中,所述监控钩子与监控程序相关联;监控单元,用于在执行所述类文件的监控钩子时,调用所述监控钩子关联的监控程序对所述应用程序进行监控,其中,所述监控程序和应用程序代码分别位于不同的类文件中,且该二类文件独立于包含了所述监控钩子的类文件。设置单元包括检查模块,用于在系统启动时检查类文件是否存在匹配的监控项;添加模块,用于在类文件存在匹配的监控项时在类文件中加入监控钩子。添加模块包括加载子模块,用于加载类文件的字节码;添加子模块,用于将监控钩子加入到字节码中。检查模块包括读取子模块,用于读取所有监控项的配置文件;判断子模块,用于在加载所述类文件的字节码时判断所述类文件中的应用程序信息是否与监控项匹配,其中,所述监控项包括包名、类名、方法名和参数列表的字符串;若匹配,则判断出所述类文件存在匹配的监控项。监控单元包括修改模块,用于修改所述监控钩子关联的监控程序;监控模块,用于重新加载所述类文件,并在执行所述类文件的监控钩子时,调用所述监控钩子关联的监控程序对所述应用程序进行监控。通过本申请的技术方案,能够达到以下有益效果I)本申请通过使业务逻辑代码与监控程序分离,解决现有技术中代码复杂度和维护成本较高的问题,降低了代码维护的成本和复杂度;2)本申请通过运行时根据监控配置自动在类文件中加入监控钩子,从而在实现了业务逻辑代码与监控程序分离的同时,最小化了对现有代码的改动,进一步降低了代码维护的成本和复杂度;3)本申请只需要单独对监控程序进行更新,而不需要修改业务逻辑代码,从而实现了灵活地应用程序监控,提高了监控效率,节省了监控时间。当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。


此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中图I是根据本申请实施例的应用程序监控装置的一种优选的结构图;图2是根据本申请实施例的应用程序监控装置的另一种优选的结构图;图3是根据本申请实施例的应用程序监控方法的一种优选的流程图;图4是根据本申请实施例的启动监控程序的一种优选的流程图;图5是根据本申请实施例的添加监控钩子的一种优选的流程图。
具体实施例方式下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
在描述本申请的各实施例的进一步细节之前,将参考图I来描述可用于实现本申请的原理的一个合适的计算体系结构。在以下描述中,除非另外指明,否则将参考由一个或多个计算机执行的动作和操作的符号表示来描述本申请的各实施例。由此,可以理解,有时被称为计算机执行的这类动作和操作包括计算机的处理单元对以结构化形式表示数据的电信号的操纵。这一操纵转换了数据或在计算机的存储器系统中的位置上维护它,这以本领域的技术人员都理解的方式重配置或改变了计算机的操作。维护数据的数据结构是具有数据的格式所定义的特定属性的存储器的物理位置。然而,尽管在上述上下文中描述本申请,但它并不意味着限制性的,如本领域的技术人员所理解的,后文所描述的动作和操作的各方面也可用硬件来实现。转向附图,其中相同的参考标号指代相同的元素,本申请的原理被示为在一个合适的计算环境中实现。以下描述基于所述的本申请的实施例,并且不应认为是关于此处未明确描述的替换实施例而限制本申请。图I示出了可用于这些设备的一个示例计算机体系结构的示意图。出于描述的目的,所绘的体系结构仅为合适环境的一个示例,并非对本申请的使用范围或功能提出任何局限。也不应将该计算系统解释为对图I所示的任一组件或其组合具有任何依赖或需求。本申请的原理可以使用其它通用或专用计算或通信环境或配置来操作。适用于本申请的众所周知的计算系统、环境和配置的示例包括但不限于,个人计算机、服务器,多处理器系统、基于微处理的系统、小型机、大型计算机、以及包括任一上述系统或设备的分布式计算环境。在其最基本的配置中,图I中的系统100至少包括用作应用程序监控装置的服务器102以及一个或多个客户端104。服务器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置、用于存储数据的存储装置以及与客户端通信的传输装置;客户端104可以包括微处理器MCU、与服务器通信的传输装置、与用户交互的显示装置。在本说明书和权利要求书中,“应用程序监控装置”也可以被定义为能够执行软件、固件或微码来实现功能的任何硬件组件或硬件组件的组合。系统100甚至可以是分布式的,以实现分布式功能。如本申请所使用的,术语“模块”、“组件”或“单元”可以指在服务器102上执行的软件对象或例程。此处所描述的不同组件、模块、单元、引擎和服务可被实现为在服务器102上执行(例如,作为单独的线程)的对象或进程。尽管此处所描述的系统和方法较佳地以软件来实现,但是硬件或软件和硬件的组合的实现也是可能并被构想的。实施例I如图2所示,应用程序监控装置(优选的,可以位于图I的服务器102上)包括设置单元202,用于在类文件中加入监控钩子,其中,监控钩子与监控程序相关联;监控单元204,用于在执行所述类文件的监控钩子时,调用所述监控钩子关联的监控程序对所述应用程序进行监控,其中,所述监控程序和应用程序代码分别位于不同的类文件中,且该二类文件独立于包含了所述监控钩子的类文件。本实施例监控程序和业务逻辑代码二者并未进行耦合编写,其中监控程序和业务逻辑代码分别位于不同的类文件中,且该二类文件独立于包含了监控钩子的类文件。在业务逻辑代码运行过程中会加载监控钩子,并通过监控钩子调用监控程序,从而实现了业务逻辑代码与监控程序的分离,这样,不需要设计比较复杂的混合式代码来耦合业务逻辑代码与监控程序,当需要更新不同的监控程序时,只需要加载不同的监控钩子,而不需要重新编写上述混合式代码,从而解决现有技术中代码复杂度和维护成本较高的问题,降低了代码维护的成本和复杂度。 为了准确地加入监控钩子,本申请提供了一种优选的设置单元,其中,设置单元202包括检查模块2021,用于在系统启动时检查类文件是否存在匹配的监控项;添加模块2022,用于在类文件存在匹配的监控项时在类文件中加入监控钩子。在本实施例中,通过监控项的匹配,能够准确地确定当前是否需要进行应用程序的监控,提高了配置的灵活性。本申请还提供了一种加入监控钩子的优选实现方式,具体而言,添加模块2022包括加载子模块,用于加载类文件的字节码;添加子模块,用于将监控钩子加入到字节码中。在本实施例中,由于字节码的执行效率很高,因此,本优选实施例中通过修改类文件的字节码的方式可以提高监控钩子添加的执行效率。为了准确地检查类文件是否存在匹配的监控项,本申请提供了一种优选的检查模块2021,其包括读取子模块,用于读取所有监控项的配置文件;判断子模块,用于在加载所述类文件的字节码时判断所述类文件中的应用程序信息是否与监控项匹配,其中,所述监控项包括包名、类名、方法名和参数列表的字符串;若匹配,则判断出类文件存在匹配的监控项。通过上述对指针配置项的逐一匹配,可以准确地判断出类文件存在匹配的监控项。本申请还提供了一种对监控程序的修改方案,在该方案中,监控单元204包括修改模块2041,用于修改所述监控钩子关联的监控程序;监控模块2042,用于重新加载所述类文件,并在执行所述类文件的监控钩子时,调用所述监控钩子关联的监控程序对所述应用程序进行监控。在本实施例中,当需要更新不同的监控程序时,只需要单独更新监控钩子关联的监控程序,并重新加载具有监控钩子的类文件,而不需要像现有技术那样重新编写耦合了业务逻辑代码与监控程序的混合式代码,从而解决现有技术中代码复杂度和维护成本较高的问题,降低了代码维护的成本和复杂度,提高了监控效率,节省了监控时间。本申请还提供了一种对监控程序的删除方案,在该方案中,在调用监控钩子对应的监控程序对应用程序进行监控之后,应用程序监控装置将所述类文件设置成不包括匹配的监控项,这样,在重新加载类文件时,不进行监控钩子的调用,而直接执行其他程序。通过这种方式,可以在不需要对应用程序进行监控时,通过删除监控钩子来实现,而不需要像现有技术那样重新编写耦合了业务逻辑代码与监控程序的混合式代码,最小化了对现有代码的改动,从而进一步降低了代码维护的成本和复杂度,提高了监控效率,节省了监控时间。下面结合附图来详细描述启动监控程序和添加监控钩子的具体过程。首先,如图4所示,为了准确地加入监控钩子,启动监控程序包括如下步骤S402,启动 JVM;优选的,设置单元202在JVM的启动参数中加入”-」3¥3386111::1]10111101·· jar”S404,启动监控模块;I)检查模块2021读取监控配置文件,并加载所有监控项;
监控项的内容包括Point :是一个包名+类名+方法名+参数列表的字符串,用来指定需要监控的方法;Advice :是一个Monitor接口的实现类,当执行到指定的方法时,会调用该实现类,从而分析当前的运行时数据是否正常,不正常则发送异常到监控中心;监控项的配置实例可以参见以下代码
<aop>
〈po i nt>a·b.c. Serv i ce.update (Stri ng)</poi nt>
〈advice type=,,before|after |around,,>a. b. c. ServiceMonitor〈/advice>
</aop>2)监控模块初始化完成后,会向JVM注册一个ClassFileTransformer (类文件转换器),名字叫monitorTransformer,用于对class文件的字节码进行修改,以便加入相应监控钩子(Hook)。S406,启动应用系统。其次,如图5所示,通过修改类(Class)文件的字节码来实现监控钩子的添加,具体而言,本申请实施例的添加监控钩子的方法包括以下步骤S502,虚拟机(JVM)加载 Class 文件;S504,类文件转换器(monitorTransformer)对Class文件进行预处理,优选的,遍历所有监控项,找出匹配该Class文件的监控项;S506,判断是否含有匹配的Point配置项;若匹配,则转至S508 ;若不匹配,则转至S514优选的,遍历所有的监控配置项,检查该Class是否有匹配的监控项;检查的规则是循环遍历Class文件的所有需要监控的应用程序(或称为方法),是否与配置项的Point配置,即“包名+类名+方法名+参数列表”匹配;S508,列出所有需要监控的应用程序;S510,将监控钩子加入到需要监控的应用程序的字节码中;优选的,Hook分为before I after I around类型,即,Before类型指的是在该应用程序调用前调用Hook ;After类型指的是在该应用程序调用之后调用Hook ;Around类型指的是在该应用程序异常时调用 Hook ;S512,将修改后的字节码返回给虚拟机;S514,初始化 Class 文件。
这样,当代码执行到HOOK时,系统会调用该Hook,Hook就会调用已经定义好的监控逻辑,从而实现对系统运行时的系统监控。本实施例只需要在一个独立的类文件中通过监控配置项设置多个需要监控的应用程序,并在该类文件中加入监控钩子,这样在需要监控的应用程序运行时自动加载该类文件中的监控钩子,并通过该监控钩子调用相应的监控程序。因此,由于本实施例并不是在多个类文件中通过监控配置项设置相应的需要监控的应用程序,可以避免系统在不同的类文件中遍历监控配置项,提高了系统查找类文件的速度。实施例2图3是根据本申请实施例的应用程序监控方法的一种优选的流程图,其包括如下步骤S302,在类文件中加入监控钩子,其中,监控钩子与监控程序相关联;S304,在执行所述类文件的监控钩子时,调用所述监控钩子关联的监控程序对所 述应用程序进行监控,其中,所述监控程序和应用程序代码分别位于不同的类文件中,且该二类文件独立于包含了所述监控钩子的类文件。本实施例监控程序和业务逻辑代码二者并未进行耦合编写,其中监控程序和业务逻辑代码分别位于不同的类文件中,且该二类文件独立于包含了监控钩子的类文件。在业务逻辑代码运行过程中会加载监控钩子,并通过监控钩子调用监控程序,从而实现了业务逻辑代码与监控程序的分离,这样,不需要设计比较复杂的混合式代码来耦合业务逻辑代码与监控程序,当需要更新不同的监控程序时,只需要加载不同的监控钩子,而不需要重新编写上述混合式代码,从而解决现有技术中代码复杂度和维护成本较高的问题,降低了代码维护的成本和复杂度。为了准确地加入监控钩子,本申请提供了一种优选的在类文件中加入监控钩子的步骤,其包括在系统启动时检查类文件是否存在匹配的监控项;若存在,则在类文件中加入监控钩子。在本实施例中,通过监控项的匹配,能够准确地确定当前是否需要进行应用程序的监控,提高了配置的灵活性。本申请还提供了一种加入监控钩子的优选实现方式,具体而言,在类文件中加入监控钩子的步骤包括加载类文件的字节码;将监控钩子加入到字节码中。在本实施例中,由于字节码的执行效率很高,因此,本优选实施例中通过修改类文件的字节码的方式可以提闻监控钩子添加的执行效率。为了准确地检查类文件是否存在匹配的监控项,本申请提供了一种优选的在系统启动时检查类文件是否存在匹配的监控项的步骤,其包括读取所有监控项的配置文件;在加载所述类文件的字节码时判断所述类文件中的应用程序信息是否与监控项匹配,其中,所述监控项包括包名、类名、方法名和参数列表的字符串;若匹配,则判断出所述类文件存在匹配的监控项。通过上述对指针配置项的逐一匹配,可以准确地判断出类文件存在匹配的监控项。本申请还提供了一种对监控程序的删除方案,在该方案中,在调用监控钩子关联的监控程序对应用程序进行监控之后,应用程序监控方法还包括将类文件设置成不包括匹配的监控项;重新加载类文件。这样,在重新加载类文件时,不进行监控钩子的调用,而直接执行其他程序。通过这种方式,可以在不需要对应用程序进行监控时,通过删除监控钩子来实现,而不需要重新编写耦合了业务逻辑代码与监控程序的混合式代码,最小化了对现有代码的改动,从而进一步降低了代码维护的成本和复杂度,提高了监控效率,节省了监控时间。本申请还提供了一种对监控程序的修改方案,在该方案中,在调用监控钩子关联的监控程序对应用程序进行监控之后,应用程序监控方法还包括修改监控钩子关联的监控程序;重新加载所述类文件,并在执行所述类文件的监控钩子时,调用所述监控钩子关联的监控程序对所述应用程序进行监控。在本实施例中,当需要更新不同的监控程序时,只需要修改并加载不同的监控钩子,而不需要重新编写耦合了业务逻辑代码与监控程序的混合式代码,从而解决现有技术中代码复杂度和维护成本较高的问题,降低了代码维护的成本和复杂度,提高了监控效率,节省了监控时间。下面结合附图来详细描述启动监控程序和添加监控钩子的具体过程。首先,如图4所示,为了准确地加入监控钩子,启动监控程序包括如下步骤S402,启动 JVM; 优选的,设置单元202在JVM的启动参数中加入”-javaagent:monitor. jar”S404,启动监控模块;I)检查模块2021读取监控配置文件,并加载所有监控项;监控项的内容包括Point :是一个包名+类名+方法名+参数列表的字符串,用来指定需要监控的方法;Advice :是一个Monitor接口的实现类,当执行到指定的方法时,会调用该实现类,从而分析当前的运行时数据是否正常,不正常则发送异常到监控中心;监控项的配置实例可以参见以下代码
<aop>
〈po i nt>a·b.c. Serv i ce.update (Stri ng)</poi nt>
〈advice type=,,before|after |around,,>a. b. c. ServiceMonitor〈/advice>
</aop>2)监控模块初始化完成后,会向JVM注册一个ClassFileTransformer (类文件转换器),名字叫monitorTransformer,用于对class文件的字节码进行修改,以便加入相应监控钩子(Hook)。S406,启动应用系统。其次,如图5所示,通过修改类(Class)文件的字节码来实现监控钩子的添加,具体而言,本申请实施例的添加监控钩子的方法包括以下步骤S502,虚拟机(JVM)加载 Class 文件;S504,类文件转换器(monitorTransformer)对Class文件进行预处理,优选的,遍历所有监控项,找出匹配该Class文件的监控项;S506,判断是否含有匹配的Point配置项;若匹配,则转至S508 ;若不匹配,则转至S514优选的,遍历所有的监控配置项,检查该Class是否有匹配的监控项;检查的规则是循环遍历Class文件的所有需要监控的应用程序(或称为方法),是否与配置项的Point配置,即“包名+类名+方法名+参数列表”匹配;S508,列出所有需要监控的应用程序;S510,将监控钩子加入到需要监控的应用程序的字节码中;优选的,Hook分为before I after I around类型,即,Before类型指的是在该应用程序调用前调用Hook ;After类型指的是在该应用程序调用之后调用Hook ;Around类型指的是在该应用程序异常时调用 Hook ;S512,将修改后的字节码返回给虚拟机;S514,初始化 Class 文件。这样,当代码执行到HOOK时,系统会调用该Hook,Hook就会调用已经定义好的监 控逻辑,从而实现对系统运行时的系统监控。另外,本实施例只需要在一个独立的类文件中通过监控配置项设置多个需要监控的应用程序,并在该类文件中加入监控钩子,这样在需要监控的应用程序运行过程中自动加载该类文件中的监控钩子,并通过该监控钩子调用相应的监控程序。因此,由于本实施例并不是在多个类文件中通过监控配置项设置相应的需要监控的应用程序,可以避免系统在不同的类文件中遍历监控配置项,提高了系统查找类文件的速度。本申请将应用监控的逻辑与应用的业务代码完全分离,在系统启动时动态的修改class字节码,以便插入一个监控钩子(Hook),在钩子程序中调用应用监控的逻辑,从而对业务没有任何影响。通过本申请各个实施例所记载的技术方案,可以将应用监控的配置统一管理,并且与业务的配置文件完全分离,业务逻辑开发与监控逻辑的开发完全分离,使业务系统感觉不到监控系统的存在。显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
权利要求
1.一种应用程序监控方法,其特征在于,包括 在类文件中加入监控钩子,其中,所述监控钩子与监控程序相关联; 在执行所述类文件的监控钩子时,调用所述监控钩子关联的监控程序对所述应用程序进行监控,其中,所述监控程序和应用程序代码分别位于不同的类文件中,且该二类文件独立于包含了所述监控钩子的类文件。
2.根据权利要求I所述的方法,其特征在于,在类文件中加入监控钩子的步骤包括 在系统启动时检查所述类文件是否存在匹配的监控项; 若存在,则在所述类文件中加入所述监控钩子。
3.根据权利要求2所述的方法,其特征在于,在所述类文件中加入所述监控钩子的步骤包括 加载所述类文件的字节码; 将所述监控钩子加入到所述字节码中。
4.根据权利要求2所述的方法,其特征在于,在系统启动时检查所述类文件是否存在 匹配的监控项的步骤包括 读取所有监控项的配置文件; 在加载所述类文件的字节码时判断所述类文件中的应用程序信息是否与监控项匹配,其中,所述监控项包括包名、类名、方法名和参数列表的字符串; 若匹配,则判断出所述类文件存在匹配的监控项。
5.根据权利要求I所述的方法,其特征在于,在调用所述监控钩子关联的监控程序对所述应用程序进行监控之后,还包括 将所述类文件设置成不包括匹配的监控项; 重新加载所述类文件。
6.根据权利要求I所述的方法,其特征在于,在调用所述监控钩子关联的监控程序对所述应用程序进行监控之后,还包括 修改所述监控钩子关联的监控程序; 重新加载所述类文件,并在执行所述类文件的监控钩子时,调用所述监控钩子关联的监控程序对所述应用程序进行监控。
7.一种应用程序监控装置,其特征在于,包括 设置单元,用于在类文件中加入监控钩子,其中,所述监控钩子与监控程序相关联; 监控单元,用于在执行所述类文件的监控钩子时,调用所述监控钩子关联的监控程序对所述应用程序进行监控,其中,所述监控程序和应用程序代码分别位于不同的类文件中,且该二类文件独立于包含了所述监控钩子的类文件。
8.根据权利要求7所述的装置,其特征在于,所述设置单元包括 检查模块,用于在系统启动时检查所述类文件是否存在匹配的监控项; 添加模块,用于在所述类文件存在匹配的监控项时在所述类文件中加入所述监控钩子。
9.根据权利要求8所述的装置,其特征在于,所述添加模块包括 加载子模块,用于加载所述类文件的字节码; 添加子模块,用于将所述监控钩子加入到所述字节码中。
10.根据权利要求8所述的装置,其特征在于,所述检查模块包括 读取子模块,用于读取所有监控项的配置文件; 判断子模块,用于在加载所述类文件的字节码时判断所述类文件中的应用程序信息是否与监控项匹配,其中,所述监控项包括包名、类名、方法名和参数列表的字符串;若匹配,则判断出所述类文件存在匹配的监控项。
11.根据权利要求7所述的装置,其特征在于,所述监控单元包括 修改模块,用于修改所述监控钩子关联的监控程序; 监控模块,用于重新加载所述类文件,并在执行所述类文件的监控钩子时,调用所述监控钩子关联的监控程序对所述应用程序进行监控。
全文摘要
本申请公开了应用程序监控方法和装置,其中,该方法包括在类文件中加入监控钩子,其中,所述监控钩子与监控程序相关联;在执行所述类文件的监控钩子时,调用所述监控钩子关联的监控程序对所述应用程序进行监控,其中,所述监控程序和应用程序代码分别位于不同的类文件中,且该二类文件独立于包含了所述监控钩子的类文件。本申请通过使业务逻辑代码与监控程序分离,解决现有技术中代码复杂度和维护成本较高的问题,降低了代码维护的成本和复杂度。
文档编号G06F11/30GK102831043SQ20111016451
公开日2012年12月19日 申请日期2011年6月17日 优先权日2011年6月17日
发明者王兴勇 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1