一种页面监控方法及系统的制作方法

文档序号:6442350阅读:161来源:国知局
专利名称:一种页面监控方法及系统的制作方法
技术领域
本申请涉及网络技术领域,特别是涉及一种页面监控方法及系统。
背景技术
互联网的飞速发展,以及互联网使用的越来越普遍,使得网络和互联网不仅成为企业内部的沟通桥梁,也成为企业和外部进行各类业务往来的重要渠道。在使用互联网时需要访问网页来完成各种活动,页面性能的好坏对活动的进行有着重要的影响,因此需要对页面的性能进行监控。现有的方案中针对网络系统单个页面的监控方法的粒度控制需要侵入应用,要在应用中对要监控的方法配置相应的监控逻辑和业务逻辑,在该方法被调用时,监控逻辑可以监控到该事件,然后业务逻辑对该方法要执行相应的监控操作,整个监控过程都在应用中完成。上述这种方法需要在应用中手动添加大量的代码,手动配置针对该方法的监控逻辑,配置监控逻辑监控到方法被调用后要通知业务逻辑,并配置业务逻辑要执行的操作。在配置的同时还要考虑对应用结构的影响,要尽量避免造成应用结构的不稳定,配置方法非常的繁琐且耗费时间,同时配置大量的代码很容易出现错误,进而影响页面的性能。

发明内容
本申请提供一种页面监控方法及系统,以解决页面监控配置方法非常的繁琐且耗费时间。为了解决上述问题,本申请公开了一种页面监控方法,包括:监控服务端获取监控客户端传输的要监控的方法;监控服务端向应用植入所述要监控方法的监控逻辑,其中所述监控逻辑独立于应用;监控服务端通过监控逻辑获取所述要监控方法被调用的事件,并通知监控客户端调用所述方法的业务逻辑脚本以执行监控操作。优选的,所述通知客户端调用所述方法的业务逻辑脚本以执行监控操作之后,还包括:监控客户端调用要监控方法的业务逻辑脚本,根据业务逻辑脚本中该方法对应的业务逻辑对应用执行监控操作。优选的,以调用方法的线程标识和访问时间戳为入库字段,将一系列方法依次存入方法调用栈中,其中将第一个存入方法调用栈的方法作为首方法。优选的,根据入库字段获取方法调用栈中一系列方法的调用顺序,根据所述调用顺序,以首方法为监控触发点预先配置一系列方法的独立的监控逻辑。优选的,所述监控服务端获取监控客户端传输的要监控的方法,包括:针对要监控的方法调用栈中一系列方法,监控服务端获取监控客户端传输的要监控的首方法。
优选的,所述监控服务端向应用植入所述要监控方法的监控逻辑,其中所述监控逻辑独立于应用,包括:以所述要监控的首方法为监控触发点,监控服务端向应用植入所述要监控的方法调用栈中一系列方法的监控逻辑,其中所述一系列方法的监控逻辑独立于应用。优选的,监控服务端通过监控逻辑获取所述要监控方法被调用的事件,并通知监控客户端调用所述方法对应的业务逻辑脚本以执行监控操作,包括:当所述要监控的一系列方法中某个方法被调用时,监控服务端通过监控逻辑获取该事件;监控服务端通知监控客户端调用所述一系列方法的业务逻辑脚本,以针对被调用的方法执行监控操作。相应的,本申请还公开了一种页面监控系统,包括:获取模块,用于监控服务端获取监控客户端传输的要监控的方法;植入模块,用于监控服务端向应用植入所述要监控独立的监控逻辑,其中所述监控逻辑独立于应用;获取并通知模块,用于监控服务端通过监控逻辑获取所述要监控方法被调用的事件,并通知监控客户端调用所述方法的业务逻辑脚本以执行监控操作。优选的,所述的系统还包括:调用模块,用于监控客户端调用要监控方法的业务逻辑脚本,根据业务逻辑脚本中该方法对应的业务逻辑对应用执行监控操作。优选的,所述的系统还包括:存入模块,用于以调用方法的线程标识和访问时间戳为入库字段,将一系列方法依次存入方法调用栈中,其中将第一个存入方法调用栈的方法作为首方法。与现有技术相比,本申请包括以下优点:首先,本申请将监控逻辑和应用分离,监控服务端在获取监控客户端传输的要监控的方法后,再向应用动态的植入所述要监控方法独立的监控逻辑。监控服务端通过监控逻辑获取所述要监控方法被调用的事件,并通知监控客户端调用所述方法的业务逻辑脚本以执行监控操作,要监控方法的业务逻辑也是单独编写在业务逻辑脚本中的。本申请配置方法简单并且节省时间,不需要在应用中手动配置针对该方法的监控逻辑和业务逻辑,不会影响应用的结构,同时也不会影响页面的性能。其次,现有技术中将监控逻辑和业务逻辑配置到应用中,主要是针对一些特定的方法进行监控,若页面中方法调用顺序为A — B — C,就需要预先知道该顺序,并在应用中就要针对该顺序作相应的配置才能进行监控。若B方法由于重构被删除,调用顺序变为A —C,则还需要在应用中修改相应的配置。而本申请所述的方法只需根据页面的方法调用栈,不需要预先知道该调用顺序和修改后的调用顺序,即可自动获取该页面的方法调用顺序进而配置相应的监控逻辑,可以实现针对整个页面的监控。


图1是本申请实施例所述一种页面监控方法流程图;图2是本申请优选实施例所述一种页面监控方法流程图3是本申请实施例所述一种页面监控系统结构图。
具体实施例方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本申请作进一步详细的说明。现有的方案中针对网络系统单个页面的监控方法的粒度控制需要侵入应用,在应用中手动添加大量的代码,手动配置针对该方法的监控逻辑,配置监控逻辑监控到方法被调用后要通知业务逻辑,并配置业务逻辑要执行的操作。在该方法被调用时,监控逻辑可以监控到该事件,然后业务逻辑对该方法要执行相应的监控操作,整个监控过程都在应用中完成。上述这种方法在配置的同时还要考虑对应用结构的影响,要尽量避免造成应用结构的不稳定,配置方法非常的繁琐且耗费时间,同时配置大量的代码很容易出现错误,进而影响页面的性能。本申请提供一种配置方法简单并且节省时间,不需要在应用中手动配置针对该方法的监控逻辑和业务逻辑,不会影响应用的结构,同时也不会影响页面的性能。实施例一参照图1,给出了本申请实施例所述一种页面监控方法流程图。步骤11,监控服务端获取监控客户端传输的要监控的方法;若要执行页面监控,首先监控客户端会将要监控的方法传输给监控服务端,例如,将要监控方法的方法名传输给监控服务端,监控服务端接收所述方法名后,就可以获知要监控的方法。步骤12,监控服务端向应用植入所述要监控方法的监控逻辑,其中所述监控逻辑独立于应用;监控服务端在获知要监控的方法后,会向应用动态植入所述要监控方法的监控逻辑,所述监控逻辑是独立于应用的。具体实施中,针对监控客户端传输的要监控的方法,可以将应用中该方法的指令代码进行增强,例如,JAVA程序中可以采用字节码增强的技术在原有的class的基础上加入相应的监控指令。其中,class是JAVA语言中把源代码经过javac命令编译后产生的JAVA虚拟机可执行代码文件。步骤13,监控服务端通过监控逻辑获取所述要监控方法被调用的事件,并通知监控客户端调用所述方法的业务逻辑脚本以执行监控操作。当所述要监控的方法被调用时,监控服务端可以通过植入的监控逻辑获取该事件,例如,上例在JAVA程序中加入相应的监控指令后,若该方法被调用,监控服务端就可以通过JVMTI技术在JVM运行期间获取该方法运行的信息。然后监控服务端将所述要监控的方法被调用的事件通知给监控客户端,通知客户端可以调用所述方法的业务逻辑脚本以执行监控操作。综上所述,本申请将监控逻辑和应用分离,监控服务端在获取监控客户端传输的要监控的方法后,再向应用植入所述要监控方法的监控逻辑,其中所述监控逻辑独立于应用。监控服务端通过监控逻辑获取所述要监控方法被调用的事件,并通知监控客户端调用所述方法的业务逻辑脚本以执行监控操作,要监控方法的业务逻辑也是单独编写在业务逻辑脚本中的。本申请配置方法简单并且节省时间,不需要在应用中手动配置针对该方法的监控逻辑和业务逻辑,不会影响应用的结构,同时也不会影响页面的性能。优选的,所述通知客户端调用所述方法的业务逻辑脚本以执行监控操作之后,还包括:监控客户端调用要监控方法的业务逻辑脚本,根据业务逻辑脚本中该方法对应的业务逻辑对应用执行监控操作。监控客户端接收到监控服务端所述要监控的方法被调用的通知,监控客户端会调用要监控方法的业务逻辑脚本,所述业务逻辑脚本中包含业务逻辑,所述业务逻辑中配置了针对该方法的监控操作。监控客户端可以根据业务逻辑脚本中该方法对应的业务逻辑,对应用执行相应的监控操作。实施例二参照图2,给出了本申请优选实施例所述一种页面监控方法流程图。步骤21,以调用方法的线程标识和访问时间戳为入库字段,将一系列方法依次存入方法调用栈中,其中将第一个存入方法调用栈的方法作为首方法。本申请所述的方法建立了方法调用栈,因此同一请求每次调用一个方法的时候,可以将调用方法的线程标识(ID)和访问时间戳作为入库字段。一个页面中包含一系列的方法,所述一系列方法存在彼此调用的依赖关系,因此可以将所述一系列方法依次存入方法调用栈中,其中,将第一个存入方法调用栈的方法作为首方法。例如,若某页面的调用顺序为A — B — C,则该页面的方法调用栈中首方法为A,即A是第一个存入该方法调用栈的方法,执行A方法会调用B方法,执行B方法需要调用C方法,因此A方法、B方法和C方法会依次存入该方法调用栈中。假设调用A方法的线程标识为aa,访问时间戳为X ;调用B方法的访问时间戳为y ;调用C方法的访问时间戳为z。则A方法入库字段可以为aax ;B方法入库字段可以为aay ;C方法入库字段可以为aaz。步骤22,根据入库字段获取方法调用栈中一系列方法的调用顺序,根据所述调用顺序,以首方法为监控触发点预先配置一系列方法的独立的监控逻辑。程序配置人员可以根据入库字段获取方法调用栈中一系列方法的调用顺序,例如上例中方法调用栈的入库字段分别为aax、aay和aaz,那么相应的调用顺序为A — B — C。根据该调用顺序,以首方法为监控触发点,即以首方法A为监控触发点,针对执行A方法会调用B方法,执行B方法需要调用C方法这一系列方法,预先配置该一系列方法的独立的监控逻辑,所述监控逻辑是独立于应用的。步骤23,针对要监控的方法调用栈中一系列方法,监控服务端获取监控客户端传输的要监控的首方法。针对要监控的方法调用栈中一系列方法,例如上例中叙述了执行A方法会调用B方法,执行B方法需要调用C方法这一系列方法,此时要监控存入方法调用栈中的这一系列方法,监控客户端会传输要监控的一系列方法中的首方法A给监控服务端,相应的监控服务端会获取监控客户端传输的要监控的首方法A。步骤24,以所述要监控的首方法为监控触发点,监控服务端向应用植入所述要监控的方法调用栈中一系列方法的监控逻辑,其中所述一系列方法的监控逻辑独立于应用。本申请所述的方法会将页面中的一系列方法存入方法调用栈中,若要监控方法调用栈中的这一系列方法,监控客户端只需传输所述方法调用栈中的首方法的方法名给监控服务端,监控服务端就可以以所述要监控的首方法为监控触发点,向应用植入所述要监控的方法调用栈中一系列方法的监控逻辑,其中所述一系列方法的监控逻辑独立于应用。例如上例中要监控的一系列方法,监控客户端只需将该一系列方法的首方法A的方法名传输给监控服务端,监控服务端以所述要监控的首方法A为监控触发点,向应用植入所述要监控的方法调用栈中一系列方法的监控逻辑。步骤25,当所述要监控的一系列方法中某个方法被调用时,监控服务端通过监控逻辑获取该事件;监控服务端向应用植入所述要监控的方法调用栈中一系列方法独立的监控逻辑后,当所述要监控的一系列方法中某个方法被调用时,监控服务端可以通过监控逻辑获取该事件。若上例中的一系列方法是以JAVA程序配置的,可以采用字节码增强的技术在原有的class的基础上加入相应的监控指令,若这一系列方法中的B方法被调用,监控服务端就可以通过JVMTI技术在JVM运行期间获取B方法运行的信息。步骤26,监控服务端通知监控客户端调用所述一系列方法的业务逻辑脚本,以针对被调用的方法执行监控操作。例如上例中B方法被调用,监控服务端通知监控客户端调用所述一系列方法的业务逻辑脚本,以针对被调用的B方法执行监控操作。步骤27,监控客户端调用要监控的一系列方法的业务逻辑脚本,根据业务逻辑脚本中该方法对应的业务 逻辑,针对被调用的方法对应用相应的执行监控操作。针对要监控的一系列方法会配置一个业务逻辑脚本,因此上例中的一系列方法的业务逻辑脚本中,会分别配置针对A方法、B方法和C方法的业务逻辑。例如,监控客户端接收到B方法被调用的通知后,监控客户端会调用要监控的一系列方法的业务逻辑脚本,根据业务逻辑脚本中B方法对应的业务逻辑,针对被调用的B方法对应用相应的执行监控操作。其中,由于一个页面的入口是某个具体类的方法,一次在配置执行监控时,需要知道该方法,并给维护人员配置文件以做相应配置。例如:urll: class#method.
所述业务逻辑脚本的编写时,假如某方法类中有成员类,则将该成员类的所有方法加入监控范畴,假如成员类还含有成员类,以此类推递归加入,此时可以通过反射机制逐级动态获取成员类,递归的层次可以根据用户自定义的配置来获取。例如,JAVA程序中业务逻辑脚本的生成方法是通过反射机制获取配置类中要监控的方法,并适用类似velocity这样的模板渲染工具,渲染已经写好的模板。如:
权利要求
1.一种页面监控方法,其特征在于,包括: 监控服务端获取监控客户端传输的要监控的方法; 监控服务端向应用植入所述要监控方法的监控逻辑,其中所述监控逻辑独立于应用; 监控服务端通过监控逻辑获取所述要监控方法被调用的事件,并通知监控客户端调用所述方法的业务逻辑脚本以执行监控操作。
2.根据权利要求1所述的方法,其特征在于,所述通知客户端调用所述方法的业务逻辑脚本以执行监控操作之后,还包括: 监控客户端调用要监控方法的业务逻辑脚本,根据业务逻辑脚本中该方法对应的业务逻辑对应用执行监控操作。
3.根据权利要求1所述的方法,其特征在于,还包括: 以调用方法的线程标识和访问时间戳为入库字段,将一系列方法依次存入方法调用栈中,其中将第一个存入方 法调用栈的方法作为首方法。
4.根据权利要求3所述的方法,其特征在于,还包括: 根据入库字段获取方法调用栈中一系列方法的调用顺序,根据所述调用顺序,以首方法为监控触发点预先配置一系列方法的独立的监控逻辑。
5.根据权利要求4所述的方法,其特征在于,所述监控服务端获取监控客户端传输的要监控的方法,包括: 针对要监控的方法调用栈中一系列方法,监控服务端获取监控客户端传输的要监控的首方法。
6.根据权利要求5所述的方法,其特征在于,所述监控服务端向应用植入所述要监控方法的监控逻辑,其中所述监控逻辑独立于应用,包括: 以所述要监控的首方法为监控触发点,监控服务端向应用植入所述要监控的方法调用栈中一系列方法的监控逻辑,其中所述一系列方法的监控逻辑独立于应用。
7.根据权利要求6所述的方法,其特征在于,监控服务端通过监控逻辑获取所述要监控方法被调用的事件,并通知监控客户端调用所述方法对应的业务逻辑脚本以执行监控操作,包括: 当所述要监控的一系列方法中某个方法被调用时,监控服务端通过监控逻辑获取该事件; 监控服务端通知监控客户端调用所述一系列方法的业务逻辑脚本,以针对被调用的方法执行监控操作。
8.一种页面监控系统,其特征在于,包括: 获取模块,用于监控服务端获取监控客户端传输的要监控的方法; 植入模块,用于监控服务端向应用植入所述要监控方法的监控逻辑,其中所述监控逻辑独立于应用; 获取并通知模块,用于监控服务端通过监控逻辑获取所述要监控方法被调用的事件,并通知监控客户端调用所述方法的业务逻辑脚本以执行监控操作。
9.根据权利要求8所述的系统,其特征在于,还包括: 调用模块,用于监控客户端调用要监控方法的业务逻辑脚本,根据业务逻辑脚本中该方法对应的业务逻辑对应用执行监控操作。
10.根据权利要求9所述的方法,其特征在于,还包括: 存入模块,用于以调用方法的线程标识和访问时间戳为入库字段,将一系列方法依次存入方法调用栈中,其中将 第一个存入方法调用栈的方法作为首方法。
全文摘要
本申请提供了一种页面监控方法及系统,以解决页面监控配置方法非常的繁琐且耗费时间。所述的方法包括监控服务端获取监控客户端传输的要监控的方法;监控服务端向应用植入所述要监控方法的监控逻辑,其中所述监控逻辑独立于应用;监控服务端通过监控逻辑获取所述要监控方法被调用的事件,并通知监控客户端调用所述方法的业务逻辑脚本以执行监控操作。本申请配置方法简单并且节省时间,不需要在应用中手动配置针对该方法的监控逻辑和业务逻辑,不会影响应用的结构,同时也不会影响页面的性能。
文档编号G06F11/36GK103176892SQ201110430779
公开日2013年6月26日 申请日期2011年12月20日 优先权日2011年12月20日
发明者陈科 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1