CN102053839A - 监控探针生成方法和装置 - Google Patents
监控探针生成方法和装置 Download PDFInfo
- Publication number
- CN102053839A CN102053839A CN2010106175868A CN201010617586A CN102053839A CN 102053839 A CN102053839 A CN 102053839A CN 2010106175868 A CN2010106175868 A CN 2010106175868A CN 201010617586 A CN201010617586 A CN 201010617586A CN 102053839 A CN102053839 A CN 102053839A
- Authority
- CN
- China
- Prior art keywords
- monitoring
- demand
- monitoring probe
- probe
- template
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种监控探针生成方法和装置,所述方法包括:从预定义的监控需求文件中获取已生成的监控需求;匹配所述监控需求和预定义的监控探针模板,判断是否匹配成功,如果是则执行下一步;加工组装匹配成功的监控需求和监控探针模板,生成监控探针。该方案能够有效的减少监控探针中出现的错误,提高软件开发效率,便于软件开发人员操作使用,可以明显的减低开发和维护的成本。同时,如果软件开发人员需要修改注入的代码或扩展其它需求时,只需修改自定义的监控探针模板即可,无需对程序源代码进行手动的修改,因此可以增强程序的健壮性和可扩展性。
Description
技术领域:
本发明涉及面向方面编程技术的软件开发领域,尤其涉及一种监控探针生成方法和装置。
背景技术:
近年来,随着AOP(Aspect Oriented Programming,面向方面编程)技术的兴起,各种AOP的开发环境也迅速出现。传统的AOP技术存在以下问题:1、无法处理注释,2、编织过程中原有代码的层次结构常常被打乱,3、插入无关代码,影响代码品质。为了解决上述问题,目前通常采用Xweaver作为支持C++语言的主流开发环境。Xweaver因具有以下优点而被广泛的应用:1、编织代码时,不影响基代码的原有层次结构,2、插入的代码与手写代码完全一样,3、可以添加修改注释。Xweaver使用XSL作为编织器的实现语言,由于使用XSL直接编写方面转换对开发人员要求太高,为了能够方便地使用XML编写方面程序,定义了一种基于XML的语言来描述将要插入的方面AspectX。
AspectX语言用来为Xweaver方面编织器编写方面程序,该语言基于XML语法规则构建,每个AspectX程序被实现为一个单独的XML文件。AspectX语言的语法由XML Schema定义,Schema是用于描述和规范XML文档的逻辑结构的一种语言,其主要作用是验证XML文件逻辑结构的正确性。一个语法正确的AspectX程序也是一个遵照该XML Schema的合法XML文件。所以说,AspectX的语法是完全由XML Schema定义的。
目前AspectX程序一般都是在XML Schema约束下通过XML编程添加切入点、通知、要注入的代码形成监控探针(即AOP中所述的横切关注点)。如果监控探针文件比较大并且比较复杂时,这种编写方式实现的监控探针不但会出现各种各样的错误,而且效率比较底,操作也不方便,同时还会增加软件开发和维护的成本。
发明内容
为解决上述技术问题,本发明的目的在于提供一种监控探针生成方法和装置,用于解决现有的编写方式实现的监控探针会出现各种各样的错误,而且效率比较底,操作也不方便,还会增加开发和维护的成本的缺陷。
为此,本发明实施例提供了如下技术方案:
一种监控探针生成方法,包括:
从预定义的监控需求文件中获取已生成的监控需求;
匹配所述监控需求和预定义的监控探针模板,判断是否匹配成功,如果是则执行下一步;
加工组装匹配成功的监控需求和监控探针模板,生成监控探针。
本发明实施例还提供了一种监控探针生成装置,包括:
监控需求获取模块,用于从预定义的监控需求文件中获取已生成的监控需求;
探针模板匹配模块,用于匹配所述监控需求和预定义的监控探针模板,并判断是否匹配成功;
探针加工组装模块,用于加工组装匹配成功的监控需求和监控探针模板,生成监控探针。
与现有技术相比,上述技术方案具有以下优点:
本发明实施例所提供的技术方案,可以根据自定义的监控探针模板结合监控需求自动的组装成符合AspectX语法的监控探针,能够有效的减少监控探针中出现的错误,提高软件开发效率,便于软件开发人员操作使用,可以明显的减低开发和维护的成本。同时,如果软件开发人员需要修改注入的代码或扩展其它需求时,只需修改自定义的监控探针模板即可,无需对程序源代码进行手动的修改,因此可以增强程序的健壮性和可扩展性。
。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为实施例一提供的监控探针生成方法流程示意图;
图2为实施例二提供的监控探针生成装置原理框架示意图。
具体实施方式
随着对信息化软件的系统环境适应能力、交互性能及数据处理能力越来越高的要求,如何快速的发现并定位软件存在的问题,并以最快的速度解决问题,已经成为软件开发及使用人员最关心的问题。而AOP中所述的横切关注点,即本申请中所述的监控探针即是用于程序内部运行状态的实时监控,通过在程序的源代码中注入的具有监控能力的监控探针,形成了具有监控能力的程序,在程序运行过程中,监控探针能够实时获取被监控对象的运行信息,帮助软件开发和使用人员快速发现并准确定位程序代码中的缺陷之处。
正如背景技术部分所述,现有的监控探针生成方法中,如果监控探针文件比较大并且比较复杂时,其生成的监控探针不但会出现各种各样的错误,而且效率比较底,操作也不方便,还会增加开发和维护的成本。
为此,本发明实施例提供了一种监控探针生成方法和装置。
所述监控探针生成方法包括以下步骤:
从预定义的监控需求文件中获取已生成的监控需求;
匹配所述监控需求和预定义的监控探针模板,判断是否匹配成功,如果是则执行下一步;
加工组装匹配成功的监控需求和监控探针模板,生成监控探针。
所述监控探针生成装置,包括:
监控需求获取模块,用于从预定义的监控需求文件中获取已生成的监控需求;
探针模板匹配模块,用于匹配所述监控需求和预定义的监控探针模板,并判断是否匹配成功;
探针加工组装模块,用于加工组装匹配成功的监控需求和监控探针模板,生成监控探针。
本发明实施例所提供的技术方案,可以根据自定义的监控探针模板结合监控需求自动的组装成符合AspectX语法的监控探针,能够有效的减少监控探针中出现的错误,提高软件开发效率,便于软件开发人员操作使用,可以明显的减低开发和维护的成本。同时,如果软件开发人员需要修改注入的代码或扩展其它需求时,只需修改自定义的监控探针模板即可,无需对程序源代码进行手动的修改,因此可以增强程序的健壮性和可扩展性。
以上是本申请的核心思想,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
实施例一:
本实施例提供了一种监控探针生成方法,参见图1所示,为该方法的一种流程示意图,其具体包括以下步骤:
步骤S101,从预定义的监控需求文件中获取已生成的监控需求。
本实施例中,可以预先设定监控需求文件,首先指定监控对象(通常为被监控程序的源代码),并设置监控对象的展示优先级、监控属性及监控模式等监控控制信息。其中,监控属性包括:运行所述程序的计算机的地址和端口号等信息,监控模式包括:本地监控和异地远程监控等信息。通过结合监控对象和监控控制信息得到监控需求。
上述监控需求可以根据监控对象分为四部分,包括全局变量监控需求、进程监控需求、线程监控需求和函数监控需求。
其中:进程监控需求,用以描述监控进程的主函数,进程描述,进程下的所有线程以及线程的构造函数,析构函数。
线程监控需求,用以描述监控线程的类名,run方法,run方法下的关注方法,线程描述及线程的构造函数,析构函数。
函数监控需求,函数分为两种类型。一种为普通函数,只需要描述函数的名称,函数描述,函数所在线程,函数所在的类名。另一种为服务入口函数,它描述普通函数的几个方面又关注函数中的关注方法。
全局变量监控需求,用以描述变量的类型,变量名,变量所在的类名。
上述监控需求可以保存为XML类型的数据文档,即预定义的监控需求文件,通过XML解析,可以从预定义的监控需求文件中获取其中定义的监控需求。
步骤S102,匹配所述监控需求和预定义的监控探针模板,判断是否匹配成功,如果是则执行下一步;
对应于步骤S101中的四种监控需求,所述预定义的监控探针模板也可以分为四种,包括:全局变量监控探针模板、进程监控探针模板、线程监控探针模板和函数监控探针模板。
上述监控探针模板为自定义的模板,其中包括要注入被监控程序源代码的通用代码和变量参数,其结构为符合AspectX的通用结构,一般以XML文件形式存储,通过XML解析,可以从监控探针模板文件中获取其自定义的监控探针模板。
所述监控探针模板为通用的,以普通函数为例,函数监控探针模板中只有一个普通函数的结构及其要注入的代码模板,用户在做监控需求时可以做任意多个普通函数的需求,所以其生成的监控探针是动态的。
如果监控需求和预定义的监控探针模板不能够匹配,则可以提示用户匹配失败,并提示用户核实监控需求文件,当用户核实后,可以再次执行步骤S101,重新获取监控需求。
步骤S103,加工组装匹配成功的监控需求和监控探针模板,生成监控探针。
本步骤中,将匹配成功的监控需求和监控探针模板组合生成符合AspectX语法的XML格式代码片段,即监控探针。
此外,在应用上述方法自动生成监控探针之后,可以通过Xweaver将所述监控探针注入到被监控程序的源代码中,形成目标代码,实现监控的目的。
本实施例提供监控探针生成方法可较佳的用于检测C++源代码的使用场景中,本领域技术人员在本实施例的基础上,可以将该方案扩展到JAVA等其语言的场景中,实现对程序的实时监控,都属于本发明保护的范围。
应用本实施例提供的监控探针生成方法,可以根据自定义的监控探针模板结合监控需求自动的组装成符合AspectX语法的监控探针,能够有效的减少监控探针中出现的错误,提高软件开发效率,便于软件开发人员操作使用,可以明显的减低开发和维护的成本。同时,如果软件开发人员需要修改注入的代码或扩展其它需求时,只需修改自定义的监控探针模板即可,无需对程序源代码进行手动的修改,因此可以增强程序的健壮性和可扩展性。
实施例二:
相应于上述方法实施例,本实施例还提供了一种监控探针生成装置,如图2所示,为该装置的原理框架示意图,该装置包括:
监控需求获取模块201,用于从预定义的监控需求文件中获取已生成的监控需求;
探针模板匹配模块202,用于匹配所述监控需求和预定义的监控探针模板,匹配成功后,执行下一步加工组装操作;
探针加工组装模块203,用于加工组装匹配成功的监控需求和监控探针模板,生成监控探针。
结合实施例提供的监控探针生成方法可知:
监控需求文件中定义的监控需求可以包括:全局变量需求、进程需求、线程需求和函数需求。
所述预定义的监控探针模板可以包括:全局变量模板、进程模板、线程模板和函数模板。
所述预定义的监控需求文件可以为XML类型的数据文档;
所述预定义的监控探针模板可以存储在符合AspectX通用结构的XML文件中。
相应于上述监控需求文件和监控探针模板文件的类型,本实施例中,所述监控探针生成装置还可以包括
XML解析模块204,用于解析XML类型的监控需求文件和监控探针模板文件。
上述监控探针生成装置的框架可以分为三个层次,其中,XML解析模块204为底层,属于解析XML部件,主要供中间层的监控需求获取模块201、探针模板匹配模块202和探针加工组装模块203调用,中间层为自动生成监控探针的核心。外层接口层用于获取监控需求构件输出的监控需求,以及把生成的监控探针传输到注入构件,通过接口层,本装置可以接入符合结构规则的任意系统中。
由于本实施例是实施例一对应的装置实施例,其类同之处相互参见即可,在此不再赘述。
应用本实施例提供的监控探针生成装置,探针加工组装模块可以根据自定义的监控探针模板结合监控需求自动的组装成符合AspectX语法的监控探针,能够有效的减少监控探针中出现的错误,提高软件开发效率,便于软件开发人员操作使用,可以明显的减低开发和维护的成本。同时,如果软件开发人员需要修改注入的代码或扩展其它需求时,只需修改自定义的监控探针模板即可,无需对程序源代码进行手动的修改,因此可以增强程序的健壮性和可扩展性。
本说明书中各个部分采用递进的方式描述,每个部分重点说明的都是与其他部分的不同之处,各个部分之间相同相似部分互相参见即可。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种监控探针生成方法,其特征在于,包括:
从预定义的监控需求文件中获取已生成的监控需求;
匹配所述监控需求和预定义的监控探针模板,判断是否匹配成功,如果是则执行下一步;
加工组装匹配成功的监控需求和监控探针模板,生成监控探针。
2.根据权利要求1所述的监控探针生成方法,其特征在于:
监控需求文件中定义的监控需求包括:全局变量监控需求、进程监控需求、线程监控需求和函数监控需求。
3.根据权利要求2所述的监控探针生成方法,其特征在于:
所述预定义的监控探针模板包括:全局变量监控探针模板、进程监控探针模板、线程监控探针模板和函数监控探针模板。
4.根据权利要求1所述的监控探针生成方法,其特征在于:
所述预定义的监控需求文件为XML类型的数据文档;
所述预定义的监控探针模板存储在符合AspectX通用结构的XML文件中。
5.根据权利要求1所述的监控探针生成方法,其特征在于,在生成监控探针以后,还包括:
通过Xweaver将所述监控探针注入到被监控程序的源代码中。
6.一种监控探针生成装置,其特征在于,包括:
监控需求获取模块,用于从预定义的监控需求文件中获取已生成的监控需求;
探针模板匹配模块,用于匹配所述监控需求和预定义的监控探针模板,并判断是否匹配成功;
探针加工组装模块,用于加工组装匹配成功的监控需求和监控探针模板,生成监控探针。
7.根据权利要求6所述的监控探针生成装置,其特征在于:
监控需求文件中定义的监控需求包括:全局变量监控需求、进程监控需求、线程监控需求和函数监控需求。
8.根据权利要求7所述的监控探针生成装置,其特征在于:
所述预定义的监控探针模板包括:全局变量监控探针模板、进程监控探针模板、线程监控探针模板和函数监控探针模板。
9.根据权利要求8所述的监控探针生成装置,其特征在于:
所述预定义的监控需求文件为XML类型的数据文档;
所述预定义的监控探针模板存储在符合AspectX通用结构的XML文件中。
10.根据权利要求9所述的监控探针生成装置,其特征在于,还包括:
XML解析模块,用于解析XML类型的监控需求文件和监控探针模板文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010106175868A CN102053839A (zh) | 2010-12-31 | 2010-12-31 | 监控探针生成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010106175868A CN102053839A (zh) | 2010-12-31 | 2010-12-31 | 监控探针生成方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102053839A true CN102053839A (zh) | 2011-05-11 |
Family
ID=43958196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010106175868A Pending CN102053839A (zh) | 2010-12-31 | 2010-12-31 | 监控探针生成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102053839A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109933317A (zh) * | 2018-12-24 | 2019-06-25 | 阿里巴巴集团控股有限公司 | 埋点方法、装置、服务器及可读存储介质 |
CN110708197A (zh) * | 2019-09-27 | 2020-01-17 | 招商局金融科技有限公司 | 监控装置、监控装置的监控策略的设置方法及存储介质 |
CN110943971A (zh) * | 2019-10-17 | 2020-03-31 | 亚信科技(中国)有限公司 | 一种事件业务处理方法及系统 |
CN112948013A (zh) * | 2019-12-24 | 2021-06-11 | 深圳市明源云科技有限公司 | 一种应用探针配置方法、装置、终端设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1243580A (zh) * | 1997-01-15 | 2000-02-02 | 西门子公司 | 监控软件程序按规定执行的方法 |
US20020095654A1 (en) * | 2000-09-06 | 2002-07-18 | Ns Solutions Corporation | Program generating support system, program generating method, storage medium and program |
CN101853205A (zh) * | 2010-06-23 | 2010-10-06 | 山东中创软件商用中间件股份有限公司 | 一种监控程序运行的方法和装置 |
-
2010
- 2010-12-31 CN CN2010106175868A patent/CN102053839A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1243580A (zh) * | 1997-01-15 | 2000-02-02 | 西门子公司 | 监控软件程序按规定执行的方法 |
US20020095654A1 (en) * | 2000-09-06 | 2002-07-18 | Ns Solutions Corporation | Program generating support system, program generating method, storage medium and program |
CN101853205A (zh) * | 2010-06-23 | 2010-10-06 | 山东中创软件商用中间件股份有限公司 | 一种监控程序运行的方法和装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109933317A (zh) * | 2018-12-24 | 2019-06-25 | 阿里巴巴集团控股有限公司 | 埋点方法、装置、服务器及可读存储介质 |
CN109933317B (zh) * | 2018-12-24 | 2023-04-11 | 创新先进技术有限公司 | 埋点方法、装置、服务器及可读存储介质 |
CN110708197A (zh) * | 2019-09-27 | 2020-01-17 | 招商局金融科技有限公司 | 监控装置、监控装置的监控策略的设置方法及存储介质 |
CN110708197B (zh) * | 2019-09-27 | 2022-10-11 | 招商局金融科技有限公司 | 监控装置、监控装置的监控策略的设置方法及存储介质 |
CN110943971A (zh) * | 2019-10-17 | 2020-03-31 | 亚信科技(中国)有限公司 | 一种事件业务处理方法及系统 |
CN112948013A (zh) * | 2019-12-24 | 2021-06-11 | 深圳市明源云科技有限公司 | 一种应用探针配置方法、装置、终端设备及存储介质 |
CN112948013B (zh) * | 2019-12-24 | 2023-10-10 | 深圳市明源云科技有限公司 | 一种应用探针配置方法、装置、终端设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102597964B (zh) | 用于启用并行测试的计算装置 | |
EP2909750B1 (en) | Specifying and applying rules to data | |
US20040107414A1 (en) | Method, a language and a system for the definition and implementation of software solutions | |
CN115617327A (zh) | 低代码页面搭建系统、方法及计算机可读存储介质 | |
CN106951305B (zh) | 一种基于模型转换由QVT-R语言生成midCore脚本的方法 | |
US10162628B2 (en) | Transactional distributed data analysis and transformation | |
US8955115B2 (en) | Automatic generation of security checks | |
CN111581920A (zh) | 文档转换方法、装置、设备及计算机存储介质 | |
CN1828597A (zh) | 用于丰富用户界面设计的样式机制 | |
CN111930489A (zh) | 一种任务调度方法、装置、设备及存储介质 | |
CN112395843A (zh) | 一种基于php代码的业务处理方法、装置及设备和介质 | |
CN102053839A (zh) | 监控探针生成方法和装置 | |
US9678856B2 (en) | Annotated test interfaces | |
CN107562464A (zh) | 一种命令行接口的调用方法、装置及设备 | |
US10606569B2 (en) | Declarative configuration elements | |
CN108287720A (zh) | 软件编译方法、装置、设备及存储介质 | |
CN102486731B (zh) | 增强软件的软件调用栈的可视化的方法、设备和系统 | |
CN105279032A (zh) | 一种同步接口报文与javaBean的方法及装置 | |
Whittle | Precise specification of use case scenarios | |
Adamek et al. | Component reliability extensions for fractal component model | |
US8484619B2 (en) | Multi-view debugging | |
Bergmann et al. | Implementing efficient model validation in EMF tools | |
KR20220003106A (ko) | 컴퓨터-보조 컴퓨터 프로그래밍의 시스템 및 방법 | |
Vara et al. | Towards Model-Driven Engineering Support for Service Evolution. | |
CN100419711C (zh) | 一种服务调试命令发射器及其处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110511 |