专利名称:一种应用数据监控方法和装置的制作方法
技术领域:
本发明涉及计算机技术,特别是涉及一种应用数据监控方法和装置。
背景技术:
在财务系统、报表系统等大型的生产系统中,包含大量的数据传递或数据计算,因此需要对该系统中的应用数据的完整性和有效性进行监控。现有的对于上述生产系统的数据监控方法包括以下两种。其中,方法一根据Java虚拟机自带的存储标签(Memory tab)中的信息进行监控;方法二 根据日志中的调试(debug)记录数据进行监控。采用现有的方法一,由于采用系统自带的监控工具进行监控,因此只能对系统的运行环境、运行速度、中央处理器(Central Processing Unit,简称CPU)使用率等系统运行相关的参数进行监控,无法监控到应用程序在数据处理过程中实际业务数据的处理的正确性以及处理进度,即,无法深入到业务层进行监控,只能监控到系统状态,而无法监控到业务层的应用数据。采用现有的方法二,由于日志的记录不全面,只能对日志中有的内容进行监控,而无法实现监控内容的自定义,因此数据监控结果的完整性、灵活准确性较低。并且,采用上述两种方法,都必须在待监控的应用程序开始运行之前进行监控配置。如果在待监测的应用程序开始运行之前没有进行监控配置,则在该应用程序运行的过程中,如果需要进行监控,就必须停止当前应用程序的运行,在Java虚拟机自带的存储标签中进行监控项设置,或在调试(debug)工具中进行监控配置,并在配置后进行监控配置之后,再次启动该应用程序的运行,实现监控,可见即该现有的监控方法无法实现热插拔。总之,采用现有的应用数据监控方法,无法采用热插拔方式对应用数据进行准确监控。
发明内容
本发明提供了一种应用数据监控方法,该方法能够采用热插拔方式对应用数据进行准确灵活的数据监控。本发明还提供了一种应用数据监控装置,该装置能够采用热插拔方式对应用数据进行准确灵活的数据监控。为达到上述目的,本发明的技术方案是这样实现的本发明公开了一种应用数据监控方法,包括客户端向监控服务器发送监控请求,所述监控请求中包括需要监控的应用和/或参数;所述客户端运行有需重复对数据进行计算的数据处理系统;监控服务器向客户端加载监控服务,所述监控服务对客户端运行的数据处理系统的运行状态进行分析和监控;当监控到所述数据处理系统运行到每次重复的起始状态时,将所述需要监控的应用和/或参数的初始值写入日志文件;当监控到所述数据处理系统运行到每次重复的结束状态时,将所述需要监控的服务和/或参数的结果值写入日志文件;将日志文件返回监控服务器,所述监控服务器根据每次重复执行相对应的初始值和结果值进行分析比对,实现监控。本发明还公开了一种应用数据监控装置,包括客户端,运行有需重复对数据进行计算的数据处理系统,用于向监控服务器发送监控请求,所述监控请求中包括需要监控的应用和/或参数;加载在客户端的监控服务对客户端运行的数据处理系统的运行状态进行分析和监控,当监控到所述数据处理系统运行到每次重复的起始状态时,将所述需要监控的应用和/或参数的初始值写入日志文件,当监控到所述数据处理系统运行到每次重复的结束状态时,将所述需要监控的服务和/或参数的结果值写入日志文件;将日志文件返回监控服务器;监控服务器,用于接收所述监控请求,向客户端加载监控服务;接收日志文件,并根据每次重复执行相对应的初始值和结果值进行分析比对,实现监控。由上述发明内容可见,监控服务器向客户端加载监控服务,当监控到数据处理系统运行到每次重复的起始状态时,将需要监控的应用和/或参数的初始值写入日志文件,当监控到数据处理系统运行到每次重复的结束状态时,将需要监控的服务和/或参数的结果值写入日志文件,根据初始值和结果值进行分析比对实现监控。本发明实施例能够在增加监控代码时不必中断目标应用程序的执行,能够实现热插拔方式的数据监控。并且,通过监控代码获取目标应用程序的日志,通过分析该日志获取应用数据监控结果,该监控针对于应用层的业务数据,能够实现对应用数据进行准确监控。
图1是本发明实施例一的应用数据监控方法的流程图;图2是本发明实施例二的应用数据监控方法的流程图;图3是本发明实施例三的应用数据监控装置的结构示意图。
具体实施例方式为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。本发明的基本思想是采用面向方法编程(Aspect Oriented Programming,简称A0P)的思想,通过操纵字节码的方式在目标应用程序中增加监控代码,通过该监控代码获取目标应用程序的日志,通过分析该日志获取应用数据监控结果。图1是本发明实施例一的应用数据监控方法的流程图。如图1所示,该方法包括以下过程。步骤101 :客户端向监控服务器发送监控请求。在本步骤中,上述客户端运行有需重复对数据进行计算的数据处理系统,并且,上述监控请求中包括需要监控的应用和/或参数。该监控服务器可以采用Java服务器,该Java服务器采用AOP思想设计。步骤102 :监控服务器向客户端加载监控服务,监控服务对客户端运行的数据处理系统的运行状态进行分析和监控。
在本步骤中,监控服务器根据步骤101中客户端发送的监控请求,向客户端加载监控服务,该监控服务用于对客户端运行的数据处理系统进行监控。在步骤102中,具体地,该监控服务分析并监控该客户端运行的数据处理系统的运行状态。在本步骤中,监控服务器向客户端加载监控服务的具体方法是监控服务器通过预编译方式和运行期动态代理方式,在不修改源代码的情况下为客户端运行的数据处理系统动态添加监控服务。具体地,监控服务器可以通过操纵字节码在目标应用程序中增加监控代码。监控服务器根据上述监控请求中包括的需要监控的应用和/或参数,获知目标应用程序和监控参数,然后根据该目标应用程序和监控参数,通过操纵字节码在目标应用程序中增加监控代码,即在目标应用程序中加载用于监控的插件。在目标应用程序中增加监控代码的操作与目标应用程序的运行不受执行顺序的限制,即,可以在目标应用程序运行前以及运行过程中的任意时刻执行本步骤,从而在待监控的程序运行过程中,可以随时加载或卸载该监控服务,无需终止正在运行的程序。具体地,监控代码由两部分组成,即第一监控代码和第二监控代码。监控服务器通过操纵字节码,在目标应用程序的数据处理程序模块之前增加第一监控代码,并且,在目标应用程序的数据处理程序模块之后增加第二监控代码。在执行该监控服务时,执行上述监控代码。步骤103 :当监控到数据处理系统运行到每次重复的起始状态时,将需要监控的应用和/或参数的初始值写入日志文件。在本步骤中,监控服务监控该客户端运行的数据处理系统的运行状态,由于该数据处理系统需要进行重复的计算,因此,当监控服务监控到数据处理系统运行到每次重复的起始状态时,将需要监控的应用和/或参数的初始值写入日志文件。上述监控代码用于向日志服务器中记录目标应用程序的日志并回调监控服务器。具体地,在执行监控代码时,第一监控代码向日志中记录目标应用程序的数据处理程序模块运行前的需要监控的应用和/或参数的初始值。步骤104 :当监控到数据处理系统运行到每次重复的结束状态时,将需要监控的服务和/或参数的结果值写入日志文件。在本步骤中,监控服务监控该客户端运行的数据处理系统的运行状态,由于该数据处理系统需要进行重复的计算,因此,当监控服务监控到数据处理系统运行到每次重复的结束状态时,将需要监控的应用和/或参数的结果值写入日志文件。具体地,在执行监控代码时,第二监控代码向日志中记录目标应用程序的数据处理程序模块运行后的需要监控的应用和/或参数的结果值。步骤105 :将日志文件返回监控服务器,监控服务器根据每次重复执行相对应的初始值和结果值进行分析比对,实现监控。在本步骤中,监控服务向监控服务器返回日志文件,监控服务器根据日志文件中的记录,针对每次重复执行,获取其相对应的初始值和结果值,根据初始值与结果值进行分析比对,从而实现监控。具体地,在写入预设次数的重复执行相对应的初始值和结果值之后,将日志文件返回监控服务器。例如,在监控财务系统的过程中,该财务系统对某一公司全体职工的工资进行计算,针对每个职工的计算方法是相同的,即,进行多次重复计算。可以将预设次数设置为I次,则每对一位职工的工资进行计算之后,都会返回一个日志文件。或者,可以将预设次数设置为全体职工的总数,则对全体职工的工资进行计算之后,统一返回一个日志文件。图2是本发明实施例二的应用数据监控方法的流程图。如图2所示,该方法包括如下过程。步骤201 :客户端向监控服务器发送监控请求。步骤202 :监控服务器向客户端加载监控服务,监控服务对客户端运行的数据处理系统的运行状态进行分析和监控。步骤203 :当监控到数据处理系统运行到每次重复的起始状态时,将需要监控的应用和/或参数的初始值写入日志文件。步骤204:当监控到数据处理系统运行到每次重复的结束状态时,将需要监控的服务和/或参数的结果值写入日志文件。具体地,上述步骤202至步骤204的具体过程如下首先,监控服务器向客户端加载监控服务。然后,监控服务对客户端运行的数据处理系统的当前运行状态进行分析。若当前运行状态为未启动状态,则监控服务监控数据处理系统的启动,并在启动后将需要监控的应用和/或参数的初始值返回监控服务器并写入日志文件,并继续监控数据处理系统每次重复执行的起始状态和结束状态。若当前运行状态为正在数据处理过程中,则监控服务监控下一次数据计算的起始状态,将需要监控的应用和/或参数的初始值返回监控服务器并写入日志文件,并继续监控数据处理系统每次重复执行的起始状态和结束状态。上述监控服务器向客户端加载监控服务的动作的执行时刻不受限制。由于需要监控的数据处理系统对数据进行多次的重复计算,加载监控服务的动作可以在相邻两次计算之间执行,也可以在某一次计算执行过程中执行。如果监控服务器在相邻两次计算之间向客户端加载监控服务,则加载的监控服务从下一次计算开始进行监控。如果监控服务器在某次计算的执行过程中向客户端加载监控服务,则加载的监控服务无法监控到该次计算,从该次计算的下一次计算开始进行监控。从而实现了在被监控的程序运行过程中实时加载监控服务,实现热插拔。步骤205 :将日志文件返回监控服务器,监控服务器根据每次重复执行相对应的初始值和结果值进行分析比对,实现监控。在本步骤中,具体地,日志文件可以存储在日志服务器中,监控服务器可以通过日志分析接口与日志服务器连接。在日志已经准备完毕后,监控服务器可以调用该日志分析接口分析日志。对于json格式的日志,日志分析接口采用java解析json数据最快的组件“jackson”组件进行解析。该日志分析接口获取应用数据监控结果,并将该应用数据监控结果返回给监控服务器。上述步骤201至步骤205的具体过程可以参见本发明实施例一中的步骤101至步骤105的相应记载,在此不再赘述。在步骤205之后,进一步地,还可以包括以下步骤中的任意一项或几项的组合。步骤206 :将日志文件返回监控服务器,监控服务器根据每次重复执行相对应的初始值和结果值进行分析比对,实现监控。步骤207 :客户端将监控服务器的分析结果利用图形进行展现。在本步骤中,监控服务器向客户端返回分析结果;客户端通过图形展现该分析结果O
步骤208 :监控服务器根据日志文件和异常条件对需要监控的服务和/或参数的运行状况进行判断,当需要监控的服务和/或参数的运行状态满足异常条件时,发出提示信息。在步骤205之后,优选地,在步骤207或步骤208之后,客户端可以根据需要选择是否继续监控操作。根据实际情况,如果需要对系统中的应用数据进行周期性长期监控,则此时可以持续监控,不必再改变上述增加了监控代码的目标应用程序。如果需要对系统中的应用数据进行抽查,则此时可以关闭监控,具体地,进入下述步骤209。步骤209 :客户端向监控服务器发送监控结束指令。在本步骤中,该监控结束指令中可以包括需要关闭监控的应用和/或参数。或者,通过预先配置,监控服务器默认监控结束指令指示关闭获取到监控结果的应用程序。步骤210 :监控服务器接收客户端发送的监控结束指令,卸载监控服务。在本步骤中,监控服务器卸载监控服务的具体方法为通过操纵字节码在目标应用程序中去除监控代码。监控代码包括第一监控代码和第二监控代码。监控服务器通过操纵字节码,在目标应用程序的数据处理程序模块之前去除第一监控代码,在目标应用程序的数据处理程序模块之后去除第二监控代码。执行卸载监控服务的时刻不受限制。由于需要监控的数据处理系统对数据进行多次的重复计算,卸载监控服务的动作可以在相邻两次计算之间执行,也可以在某一次计算执行过程中执行。如果监控服务器在相邻两次计算之间向客户端卸载监控服务,则从下一次计算开始不再进行监控。如果监控服务器在某次计算的执行过程中卸载监控服务,则从该次计算开始不再进行监控。从而实现了在被监控的程序运行过程中实时卸载监控服务,实现热插拔。在上述本发明实施例一和本发明实施例二中,日志可以采用多种格式。在一种具体实施方式
中,较佳地,该日志可以采用文本(简称txt)文件格式和,Java语言对象标记(Java Script Object Notation,简称json)数据格式。json的数据格式的日志存放在日志服务器上,采用json数据格式进行存储能够节约存储空间,并且提升数据的序列化和反序列化。在另一种具体实施方式
中,日志还可以采用其它的数据格式,例如谷歌协议缓冲(Google Protocol Buffer)格式。在上述本发明实施例一和本发明实施例二中,上述监控服务器对应至少一个客户端。客户端和监控服务器之间通过远程接口进行通信,上述实施例中的各个涉及接口调用的步骤均可以采用多种通信协议实现调用,例如,通过在线应用服务(简称webservice)、超文本传输协议(Hyper Text Transfer Protocol,简称http)、套接字(简称socket)或Java消息服务(Java Message Service,简称jms)通讯协议进行信息交互。在实际应用中具体采用的通信协议可以根据实际情况确定。因为一个监控服务器对应至少一个客户端,因此该监控服务器可以对多个客户端进行远程的数据监控。并且,客户端采用的数据处理系统的类别不受限制,采用本发明提出的方法可以支持同时对多个数据处理系统进行数据监控。可见,监控服务器可实现对多台远程客户端进行数据监控,且可支持同时对多个数据处理系统进行数据监控。应该更加灵活。本发明实施例中,监控服务器向客户端加载监控服务,当监控到数据处理系统运行到每次重复的起始状态时,将需要监控的应用和/或参数的初始值写入日志文件,当监控到数据处理系统运行到每次重复的结束状态时,将需要监控的服务和/或参数的结果值写入日志文件,根据初始值和结果值进行分析比对实现监控。本发明实施例能够在增加监控代码时不必中断目标应用程序的执行,能够实现热插拔方式的数据监控。并且,通过监控代码获取目标应用程序的日志,通过分析该日志获取应用数据监控结果,该监控针对于应用层的业务数据,能够实现对应用数据进行准确监控。图3是本发明实施例三的应用数据监控装置的结构示意图。如图3所示,该装置至少包括客户端31和监控服务器32。其中,客户端31运行有需重复对数据进行计算的数据处理系统,用于向监控服务器32发送监控请求,该监控请求中包括需要监控的应用和/或参数。加载在客户端31的监控服务对客户端31运行的数据处理系统的运行状态进行分析和监控,当监控到数据处理系统运行到每次重复的起始状态时,将需要监控的应用和/或参数的初始值写入日志文件,当监控到数据处理系统运行到每次重复的结束状态时,将需要监控的服务和/或参数的结果值写入日志文件。加载在客户端31的监控服务将日志文件返回监控服务器32。监控服务器32接收监控请求,向客户端31加载监控服务。监控服务器32接收日志文件,并根据每次重复执行相对应的初始值和结果值进行分析比对,实现监控。在上述技术方案的基础上,具体地,监控服务器32向客户端31加载监控服务。监控服务对客户端运行的数据处理系统的当前运行状态进行分析。若当前运行状态为未启动状态,则监控服务监控数据处理系统的启动,并在启动后将需要监控的应用和/或参数的初始值返回监控服务器32并写入日志文件,并继续监控数据处理系统每次重复执行的起始状态和结束状态。若当前运行状态为正在数据处理过程中,则监控服务监控下一次数据计算的起始状态,将需要监控的应用和/或参数的初始值返回监控服务器并写入日志文件,并继续监控数据处理系统每次重复执行的起始状态和结束状态。在上述技术方案的基础上,进一步地,客户端31还向监控服务器32发送监控结束指令。监控服务器32接收客户端31发送的监控结束指令,卸载监控服务。在上述技术方案的基础上,具体地,监控服务器32通过预编译方式和运行期动态代理方式,在不修改源代码的情况下为客户端31运行的数据处理系统动态添加监控服务。在上述技术方案的基础上,具体地,加载在客户端31的监控服务在写入预设次数的重复执行相对应的初始值和结果值之后,将日志文件返回监控服务器32。在上述技术方案的基础上,进一步地,监控服务器32还可以根据日志文件根据预置策略对监控结果进行分析。客户端31还可以将分析结果利用图形进行展现。在上述技术方案的基础上,进一步地,监控服务器32还可以根据日志文件和异常条件对需要监控的服务和/或参数的运行状况进行判断,当需要监控的服务和/或参数的运行状态满足异常条件时,发出提示信息。在上述技术方案的基础上,具体地,监控服务器32对应至少一个客户端31。客户端31和监控服务器32之间通过远程接口,通过webservice、http、socket或jms通讯协议进行信息交互。需要说明的是,本装置实施例中的各功能模块或各功能单元可以参见上述图1和图2所示方法实施例中各步骤工作原理和处理过程的相关描述,此处不再赘述。根据上述本发明具体实施方式
可见,监控服务器向客户端加载监控服务,当监控到数据处理系统运行到每次重复的起始状态时,将需要监控的应用和/或参数的初始值写入日志文件,当监控到数据处理系统运行到每次重复的结束状态时,将需要监控的服务和/或参数的结果值写入日志文件,根据初始值和结果值进行分析比对实现监控。本发明实施例能够在目标应用程序执行之前以及执行过程中的任意时刻进行上述增加监控代码的操作,而不必中断目标应用程序的执行,实现了热插拔方式的数据监控。并且,通过该监控代码获取目标应用程序的日志,通过分析该日志获取应用数据监控结果,从而对目标应用程序数据处理过程前后的数据进行监控,该监控针对于应用层的业务数据,因此实现了对应用数据进行准确监控。本发明的应用数据监控方法和装置的一个典型应用场景为财务系统。在财务系统中,存在大量的对一部分数据进行的反复多次的数据处理过程,例如,同样的数据处理过程,可能每个月或每个季度都需要重复进行。采用本发明的应用数据监控方法和装置,针对需要反复多次执行的数据处理程序模块,可以在任意时间在该应用程序中加入监控代码,在加入监控代码之后的数据处理过程的执行过程中,就可以得到多次的监控结果。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种应用数据监控方法,其特征在于,包括 客户端向监控服务器发送监控请求,所述监控请求中包括需要监控的应用和/或参数;所述客户端运行有需重复对数据进行计算的数据处理系统; 监控服务器向客户端加载监控服务,所述监控服务对客户端运行的数据处理系统的运行状态进行分析和监控; 当监控到所述数据处理系统运行到每次重复的起始状态时,将所述需要监控的应用和/或参数的初始值写入日志文件; 当监控到所述数据处理系统运行到每次重复的结束状态时,将所述需要监控的服务和/或参数的结果值写入日志文件; 将日志文件返回监控服务器,所述监控服务器根据每次重复执行相对应的初始值和结果值进行分析比对,实现监控。
2.根据权利要求1所述的方法,其特征在于,所述监控服务器向客户端加载监控服务,所述监控服务对客户端运行的数据处理系统的运行状态进行分析和监控包括 所述监控服务器向客户端加载监控服务; 监控服务对客户端运行的数据处理系统的当前运行状态进行分析; 若当前运行状态为未启动状态,则监控所述数据处理系统的启动,并在启动后执行所述将所述需要监控的应用和/或参数的初始值返回监控服务器并写入日志文件;并继续监控所述数据处理系统每次重复执行的起始状态和结束状态; 若当前运行状态为正在数据处理过程中,则监控下一次数据计算的起始状态,执行所述将所述需要监控的应用和/或参数的初始值返回监控服务器并写入日志文件;并继续监控所述数据处理系统每次重复执行的起始状态和结束状态。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括所述监控服务器接收所述客户端发送的监控结束指令,卸载所述监控服务。
4.根据权利要求1或2所述的方法,其特征在于,所述监控服务器向客户端加载监控服务包括 所述监控服务器通过预编译方式和运行期动态代理方式,在不修改源代码的情况下为所述客户端运行的数据处理系统动态添加监控服务。
5.根据权利要求1或2所述的方法,其特征在于,所述将日志文件返回监控服务器包括 在写入预设次数的重复执行相对应的初始值和结果值之后,将日志文件返回监控服务器。
6.根据权利要求1或2所述的方法,其特征在于,所述方法还包括 所述监控服务器根据日志文件根据预置策略对监控结果进行分析; 所述方法还包括将分析结果利用图形进行展现。
7.根据权利要求1或2所述的方法,其特征在于,所述方法还包括 所述监控服务器根据日志文件和异常条件对所述需要监控的服务和/或参数的运行状况进行判断,当所述需要监控的服务和/或参数的运行状态满足异常条件时,发出提示信息。
8.根据权利要求1或2所述的方法,其特征在于,所述监控服务器对应至少一个客户端,所述客户端和监控服务器之间通过远程接口,通过在线应用服务webservice、超文本传输协议http、套接字socket或Java消息服务jms通讯协议进行信息交互。
9.一种应用数据监控装置,其特征在于,包括 客户端,运行有需重复对数据进行计算的数据处理系统,用于向监控服务器发送监控请求,所述监控请求中包括需要监控的应用和/或参数;加载在客户端的监控服务对客户端运行的数据处理系统的运行状态进行分析和监控,当监控到所述数据处理系统运行到每次重复的起始状态时,将所述需要监控的应用和/或参数的初始值写入日志文件,当监控到所述数据处理系统运行到每次重复的结束状态时,将所述需要监控的服务和/或参数的结果值写入日志文件;将日志文件返回监控服务器; 监控服务器,用于接收所述监控请求,向客户端加载监控服务;接收日志文件,并根据每次重复执行相对应的初始值和结果值进行分析比对,实现监控。
10.根据权利要求9所述的装置,其特征在于, 所述客户端还用于向所述监控服务器发送监控结束指令;所述监控服务器还用于接收所述客户端发送的监控结束指令,卸载所述监控服务; 和/或,所述监控服务器具体用于通过预编译方式和运行期动态代理方式,在不修改源代码的情况下为所述客户端运行的数据处理系统动态添加监控服务; 和/或,所述监控服务器对应至少一个所述客户端,所述客户端和监控服务器之间通过远程接口,通过在线应用服务webservice、超文本传输协议http、套接字socket或Java消息服务jms通讯协议进行信息交互。
全文摘要
本发明公开了一种应用数据监控方法,客户端向监控服务器发送监控请求,监控服务器向客户端加载监控服务,对客户端运行的数据处理系统的运行状态进行分析和监控,当监控到数据处理系统运行到每次重复的起始状态时,将需要监控的应用和/或参数的初始值写入日志文件,当监控到数据处理系统运行到每次重复的结束状态时,将需要监控的服务和/或参数的结果值写入日志文件,将日志文件返回监控服务器,监控服务器根据每次重复执行相对应的初始值和结果值进行分析比对,实现监控。本发明还公开了一种应用数据监控装置。采用本发明公开的应用数据监控方法和装置,能够实现采用热插拔方式对应用数据进行准确灵活的数据监控。
文档编号G06F11/34GK103034578SQ20111030112
公开日2013年4月10日 申请日期2011年9月29日 优先权日2011年9月29日
发明者张岩 申请人:北京新媒传信科技有限公司