CN113254317A - 基于字节码的指标自动生成方法及系统 - Google Patents
基于字节码的指标自动生成方法及系统 Download PDFInfo
- Publication number
- CN113254317A CN113254317A CN202110746991.8A CN202110746991A CN113254317A CN 113254317 A CN113254317 A CN 113254317A CN 202110746991 A CN202110746991 A CN 202110746991A CN 113254317 A CN113254317 A CN 113254317A
- Authority
- CN
- China
- Prior art keywords
- service
- index
- code
- indexes
- logic
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3093—Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了基于字节码的指标自动生成方法及系统,该方法包括以下步骤:S1、构建java代理框架,注册指标并生成服务通用能力;S2、用户定义指标中业务核心指标;S3、识别S2步骤中业务核心指标的代码拦截点;S4、插件中增加java代理参数,动态装载指标自动生成代码的插件;S5、将插件附着在业务进程上,修改待注入业务核心指标的代码字节码信息,动态注入业务核心指标自动生成逻辑,完成拦截;S6、业务应用处理相关的业务请求时,将所需的业务核心指标信息推送到时序数据库或离线文件中。有益效果:通过java连接技术,动态附着在应用上,对业务应用近乎零影响。
Description
技术领域
本发明涉及智慧运维技术领域,具体来说,涉及基于字节码的指标自动生成方法及系统。
背景技术
企业级应用的IT系统都承载着各个行业的数字化转型历史使命,已经成为企业核心竞争力的源泉。随着分布式微服务化架构的迅速落地,系统的复杂度急剧增加,系统可运维性成为IT系统生命周期的关键一环;系统可运维性基础是系统的可观测性,可观测的表现形式为系统各指标。为了更加清晰全面的了解系统的整体状态,使系统的可观测性全面,及时。往往需要在研发的各个阶段投入大量人力,设计和开发一种侵入性的功能来完成可观测指标的埋点生成工作;随着需求迭代的速度越来越快,可观测性指标的需求变化也在同步加快,传统的埋点方案,第一无法快速的响应变化,第二需要消耗大量的人力;因此,降低指标生成的成本有重要意义。
专利号CN110138604A公开了一种面向多性能指标的物联网硬件平台自动生成方法,其使用基于Valgrind的代码静态分析方法对物联网硬件平台的各种重要性能指标(如功耗、可扩展性、执行时间与总价格)进行生成,指标生成通常针对不同类型指标有不同的形式,针对操作系统层面,有大量的监控工具,如collectd,node_exporter,zabbix等,但对于真正表现用户体验的核心指标,如核心业务指标、以及服务请求成功率、失败率,请求耗时等关键指标往往只能通过侵入性的代码编写来完成指标生成。
针对相关技术中的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中的问题,本发明提出基于字节码的指标自动生成方法及系统,以克服现有相关技术所存在的上述技术问题。
为此,本发明采用的具体技术方案如下:
根据本发明的一个方面,提供了基于字节码的指标自动生成方法,该方法包括以下步骤:
S1、构建java代理框架,注册指标并生成服务通用能力;
S2、用户定义指标中业务核心指标;
S3、识别S2步骤中业务核心指标的代码拦截点,针对不同业务核心指标所在的拦截点,编写业务核心指标的自动生成代码逻辑,将业务核心指标的代码片段按业务打包为不同的插件;
S4、插件中增加java代理参数,动态装载指标自动生成代码的插件,在jvm加载业务类逻辑前,修改业务核心指标代码,并在业务核心指标代码中注入指标自动生成逻辑,完成拦截;
S5、通过java连接技术,将插件附着在业务进程上,修改待注入业务核心指标的代码字节码信息,动态注入业务核心指标自动生成逻辑,完成拦截;
S6、业务应用处理相关的业务请求时,组装成业务所需的业务核心指标信息,回调java代理提供的持久化服务,将所需的业务核心指标信息推送到时序数据库或离线文件中。
进一步的,所述通用能力包括:指标持久化能力与业务指标自动生成代码逻辑插件自动加载注入业务逻辑代码的能力。
进一步的,所述业务核心指标包括但不限于充值业务的核心指标。
进一步的,所述插件中增加java代理参数,动态装载指标自动生成代码的插件,在jvm加载业务类逻辑前,修改业务核心指标代码,并在业务核心指标代码中注入指标自动生成逻辑,完成拦截还包括以下步骤:
启动java应用;
利用java代理回调分级变压器的变换方法。
进一步的,所述业务核心指标自动生成逻辑为:根据业务上下文和相关的逻辑来拦截方法入参和返回值以及其他各信息,完成业务核心指标的按需自动生成。
进一步的,所述业务请求包括但不限于充值操作。
根据本发明的另一个方面,提供了基于字节码的指标自动生成系统,该系统包括:
构建模块,构建java代理框架,注册指标并生成服务通用能力;
定义模块,用户定义指标中业务核心指标;
识别模块,识别业务核心指标的代码拦截点,针对不同业务核心指标所在的拦截点,编写业务核心指标的自动生成代码逻辑,将业务核心指标的代码片段按业务打包为不同的插件;
操作模块,动态装载指标自动生成代码的插件,在jvm加载业务类逻辑前,修改业务核心指标代码,并在业务核心指标代码中注入指标自动生成逻辑,完成拦截;
连接技术模块,通过java连接技术,将插件附着在业务进程上,修改待注入业务核心指标的代码字节码信息,动态注入业务核心指标自动生成逻辑,完成拦截;
处理模块,业务应用处理相关的业务请求时,组装成业务所需的业务核心指标信息,回调java代理提供的持久化服务,将所需的业务核心指标信息推送到时序数据库或离线文件中。
进一步的,所述通用能力包括:指标持久化能力与业务指标自动生成代码逻辑插件自动加载注入业务逻辑代码的能力。
进一步的,所述插件中增加java代理参数,动态装载指标自动生成代码的插件,在jvm加载业务类逻辑前,修改业务核心指标代码,并在业务核心指标代码中注入指标自动生成逻辑,完成拦截还包括以下步骤:
启动java应用;
利用java代理回调分级变压器的变换方法。
进一步的,所述业务核心指标自动生成逻辑为:根据业务上下文和相关的逻辑来拦截方法入参和返回值以及其他各信息,完成业务核心指标的按需自动生成。
本发明的有益效果为:
1、在一套正常运行的业务应用系统上,仅通过修改应用启动参数,基于javaagent,通过字节码技术,在待自动生成指标的类方法上做拦截埋点,就可获取我们想要的系统或业务指标,此发明对业务代码或第三方依赖代码没有任何侵入,不仅适配与不同的框架,如jdbc,httpclient等,可自动注入获取系统级别的指标,还可以根据用户编写的业务指标自动生成逻辑生成业务指标,无侵入的方案使得指标自动生成逻辑和业务逻辑可独立演进,迭代效率更高,获取业务指标的难度更低。
2、本发明可支持两种方式接入业务应用系统,除第一步的修改应用启动参数,也可通过java连接技术,到目标进程的方式来进行动态埋点,可不停机接入自动指标生成,最大限度的降低指标获取需求对业务服务的影响,做到近乎零影响。
3、本发明支持两种类型自定义:
(1)面向研发侧的插件开发自定义,依赖于框架提供基础服务,开发指标自动生成逻辑的插件;指标自动生成服务启动时动态注入各插件;
(2)用户自定义配置,面向运维侧的开放,支持指标自动生成的配置功能,如待拦截的类方法,拦截后生成的指标名称,指标包括的方法执行状态,方法参数等信息,生成用户所需的指标信息,两种方法可极大的方便自动指标生成逻辑服务的个性化落地,为系统可观测性提供便利,为业务运营提供指标数据基础。
4、本发明的指标生成技术通过java连接技术,可在应用运行态时,动态附着在应用上完成指标自动生成逻辑的嵌入,对业务应用近乎零影响。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的基于字节码的指标自动生成方法的流程示意图;
图2是根据本发明实施例的基于字节码的指标自动生成系统工作原理流程图;
图3是根据本发明实施例中指标自动生成的原理示意图;
图4是根据本发明实施例中通过字节码插件对业务应用进程的类方法逻辑进行增强的原理示意图。
图中:
1、构建模块;2、定义模块;3、识别模块;4、操作模块;5、连接技术模块;6、处理模块。
具体实施方式
为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
根据本发明的实施例,提供了基于字节码的指标自动生成方法及系统。
现结合附图和具体实施方式对本发明进一步说明,如图1所示,根据本发明实施例的基于字节码的指标自动生成方法,该方法包括以下步骤:
S1、构建java(Java是一门面向对象编程语言)代理(agent)框架,注册指标并生成服务通用能力;
其中,框架服务继承,ClassFileTransformer类,实现了public byte(公共字节)[]transform(变换)(x,x,x,x,x)方法,用来注入指标自动生成服务的通用能力。
在具体应用时,上述(x,x,x,x,x)中的问号代表多个参数,框架服务继承具体为public byte[] transform(ClassLoader loader, String className,
Class<x> classBeingRedefined, ProtectionDomainprotectionDomain,
byte[] classfileBuffer) throws IllegalClassFormatException。
S2、用户定义指标中业务核心指标;
S3、识别S2步骤中业务核心指标的代码拦截点,针对不同业务核心指标所在的拦截点,编写业务核心指标的自动生成代码逻辑(此代码继承指标自动生成的框架指标持久化通用能力),将业务核心指标的代码片段按业务打包为不同的插件;
S4、插件中增加java代理参数,动态装载指标自动生成代码的插件,在jvm(JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范)加载业务类逻辑前,修改业务核心指标代码,并在业务核心指标代码中注入指标自动生成逻辑,完成拦截;
其中,java-java agent:/var/lib/tmp/kpi_probe-agent.jar xxx,启动java应用,java agent回调ClassFileTransformer(分级变压器)子类的transform(变形、变换)方法;
S5、通过java连接技术,将插件附着在业务进程上,修改待注入业务核心指标的代码字节码信息,动态注入业务核心指标自动生成逻辑,完成拦截;
S6、业务应用处理相关的业务请求时,组装成业务所需的业务核心指标信息,回调java代理提供的持久化服务,将所需的业务核心指标信息推送到时序数据库或离线文件中;
其中,可采用java的字节码技术,通过在应用启动中加入java agent的插件信息,在jvm(JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范)启动时,把指标自动生成逻辑代码,动态插入到业务应用中,进而实现分离业务逻辑和指标生成逻辑,可利用java Attach的技术,动态附着在运行的Java进程上,将指标自动生成逻辑代码动态插入到业务应用中,分离了逻辑同时,实现业务运行态直接接入;
如图3所示,通常业务应用进程,我们看成一个黑盒子,重点关注在需要被观测的类方法上。当业务应用进程接收一个外部调用,或者一个自身内部的任务时,通过字节码动态注入插件,动态埋点到相关的类方法,实时自动生成指标,并以某种形式与智慧运维平台对接,实现指标的存储,展示和分析计算,进而完成对系统的可观测性和可运维性的建设。
在一个实施例中,所述通用能力包括:指标持久化能力与业务指标自动生成代码逻辑插件自动加载注入业务逻辑代码的能力。
在一个实施例中,所述业务核心指标包括但不限于充值业务的核心指标;
其中,例如充值业务的核心指标可定义如下:充值渠道,发生的时间,本次充值操作耗费的时间,充值金额,充值操作的状态,充值业务的sql执行耗时时间等指标定义。
如图4所示,在一个实施例中,所述插件中增加java代理参数,动态装载指标自动生成代码的插件,在jvm加载业务类逻辑前,修改业务核心指标代码,并在业务核心指标代码中注入指标自动生成逻辑,完成拦截还包括以下步骤:
启动java应用;
利用java代理回调分级变压器的变换方法。
在一个实施例中,所述业务核心指标自动生成逻辑为:根据业务上下文和相关的逻辑来拦截方法入参和返回值以及其他各信息,完成业务核心指标的按需自动生成;
其中,字节码技术可以在不修改原始程序的情况下,将一些代码逻辑动态插入到程序中,利用字节码技术按需在类方法中插入了指标自动生成的逻辑,主要是根据业务上下文和相关的逻辑来拦截方法入参和返回值以及其他各信息,完成指标的按需自动生成;既支持通用指标自动生成方案,也支持按需自定义指标自动生成。
在一个实施例中,所述业务请求包括但不限于充值操作;
其中,如充值操作,已经注入的指标自动生成代码,拦截相关方法的参数,返回值,返回状态等信息,组装成业务所需的指标信息;在方法调用完成后,回调框架提供的持久化服务,将指标推送到时序数据库,或离线文件中。
根据本发明的另一个实施例,如图2所示,还提供了基于字节码的指标自动生成系统,该系统包括:
构建模块1,构建java代理框架,注册指标并生成服务通用能力;
定义模块2,用户定义指标中业务核心指标;
识别模块3,识别业务核心指标的代码拦截点,针对不同业务核心指标所在的拦截点,编写业务核心指标的自动生成代码逻辑,将业务核心指标的代码片段按业务打包为不同的插件;
操作模块4,动态装载指标自动生成代码的插件,在jvm加载业务类逻辑前,修改业务核心指标代码,并在业务核心指标代码中注入指标自动生成逻辑,完成拦截;
连接技术模块5,通过java连接技术,将插件附着在业务进程上,修改待注入业务核心指标的代码字节码信息,动态注入业务核心指标自动生成逻辑,完成拦截;
处理模块6,业务应用处理相关的业务请求时,组装成业务所需的业务核心指标信息,回调java代理提供的持久化服务,将所需的业务核心指标信息推送到时序数据库或离线文件中。
在一个实施例中,所述通用能力包括:指标持久化能力与业务指标自动生成代码逻辑插件自动加载注入业务逻辑代码的能力。
在一个实施例中,所述插件中增加java代理参数,动态装载指标自动生成代码的插件,在jvm加载业务类逻辑前,修改业务核心指标代码,并在业务核心指标代码中注入指标自动生成逻辑,完成拦截还包括以下步骤:
启动java应用;
利用java代理回调分级变压器的变换方法。
在一个实施例中,所述业务核心指标自动生成逻辑为:根据业务上下文和相关的逻辑来拦截方法入参和返回值以及其他各信息,完成业务核心指标的按需自动生成。
为了方便理解本发明的上述技术方案,以下就本发明在实际过程中的一个具体实例进行详细说明。
实施例1
针对一个普通的JAVA应用程序,其采用springboot(Spring Boot是由Pivotal团队提供的全新框架)应用框架,使用JDBC(Java DataBase Connectivity,java数据库连接)作为数据库驱动连接到MySQL(一个关系型数据库管理系统)数据库,其核心实现逻辑为:
1)在应用程序启动时,通过在java命令中增加-java agent=kpi_probe-agent.jar参数,其中kpi_probe-agent.jar包含了字节码插件;也可在应用系统运行中,通过动态Attach的方式附着在业务应用进程;进而通过java ssist(也可通过ASM框架工具,相对java ssist,ASM更原生,复杂度更高)工具来实现字节码增强。
2)通过字节码插件,对通用的mysql数据库操作接口JDBC的Prepared Statement和Statement各方法进行增强,对其调用进行拦截,拦截下调用的sql语句以及耗时等信息,自动生成指标数据。
3)通过字节码插件,按需对业务类方法(如:com.xxx.xxx.charge),进行动态埋点,根据业务类方法入参、返回值以及执行状态进行拦截,自动生成业务指标数据。
4)拦截下自动生成的指标数据,以文件或是其他形式实施对接到智慧运维平台,从而实现整个指标的存储,可视化以及智能分析。
综上所述,借助于本发明的上述技术方案,在一套正常运行的业务应用系统上,仅通过修改应用启动参数,基于java agent,通过字节码技术,在待自动生成指标的类方法上做拦截埋点,就可获取我们想要的系统或业务指标,此发明对业务代码或第三方依赖代码没有任何侵入,不仅适配与不同的框架,如jdbc,httpclient等,可自动注入获取系统级别的指标(sql耗时,sql执行状态,web请求状态,web请求耗时,web url等各指标信息),还可以根据用户编写的业务指标自动生成逻辑生成业务指标,无侵入的方案使得指标自动生成逻辑和业务逻辑可独立演进,迭代效率更高,获取业务指标的难度更低。本发明可支持两种方式接入业务应用系统,除第一步的修改应用启动参数,也可通过java连接技术,到目标进程的方式来进行动态埋点,可不停机接入自动指标生成,最大限度的降低指标获取需求对业务服务的影响,做到近乎零影响。本发明支持两种类型自定义:面向研发侧的插件开发自定义,依赖于框架提供基础服务,开发指标自动生成逻辑的插件;指标自动生成服务启动时动态注入各插件;用户自定义配置,面向运维侧的开放,支持指标自动生成的配置功能,如待拦截的类方法,拦截后生成的指标名称,指标包括的方法执行状态,方法参数等信息,生成用户所需的指标信息,两种方法可极大的方便自动指标生成逻辑服务的个性化落地,为系统可观测性提供便利,为业务运营提供指标数据基础,java字节码的技术,基于javaagent,在jvm加载类class(班级;同学们;考试之等级)之前进行拦截,通过字节码修改技术动态注入指标自动生成的逻辑代码,可以在无侵入的情况下,按需个性化的在业务应用中插入指标生成逻辑;实现了指标生成逻辑和业务应用逻辑的代码分离,不仅减少功能耦合带来的复杂度,可以大幅度降低指标生成的成本,同时提高了指标生成需求的迭代效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.基于字节码的指标自动生成方法,其特征在于,该方法包括以下步骤:
S1、构建java代理框架,注册指标并生成服务通用能力;
S2、用户定义指标中业务核心指标;
S3、识别S2步骤中业务核心指标的代码拦截点,针对不同业务核心指标所在的拦截点,编写业务核心指标的自动生成代码逻辑,将业务核心指标的代码片段按业务打包为不同的插件;
S4、插件中增加java代理参数,动态装载指标自动生成代码的插件,在jvm加载业务类逻辑前,修改业务核心指标代码,并在业务核心指标代码中注入指标自动生成逻辑,完成拦截;
S5、通过java连接技术,将插件附着在业务进程上,修改待注入业务核心指标的代码字节码信息,动态注入业务核心指标自动生成逻辑,完成拦截;
S6、业务应用处理相关的业务请求时,组装成业务所需的业务核心指标信息,回调java代理提供的持久化服务,将所需的业务核心指标信息推送到时序数据库或离线文件中。
2.根据权利要求1所述的基于字节码的指标自动生成方法,其特征在于,所述通用能力包括:指标持久化能力与业务指标自动生成代码逻辑插件自动加载注入业务逻辑代码的能力。
3.根据权利要求1所述的基于字节码的指标自动生成方法,其特征在于,所述业务核心指标包括但不限于充值业务的核心指标。
4.根据权利要求1所述的基于字节码的指标自动生成方法,其特征在于,所述插件中增加java代理参数,动态装载指标自动生成代码的插件,在jvm加载业务类逻辑前,修改业务核心指标代码,并在业务核心指标代码中注入指标自动生成逻辑,完成拦截还包括以下步骤:
启动java应用;
利用java代理回调分级变压器的变换方法。
5.根据权利要求1所述的基于字节码的指标自动生成方法,其特征在于,所述业务核心指标自动生成逻辑为:根据业务上下文和相关的逻辑来拦截方法入参和返回值以及其他各信息,完成业务核心指标的按需自动生成。
6.根据权利要求1所述的基于字节码的指标自动生成方法,其特征在于,所述业务请求包括但不限于充值操作。
7.基于字节码的指标自动生成系统,用于实现权利要求1-6中任意一项所述的基于字节码的指标自动生成方法的步骤,其特征在于,该系统包括:
构建模块,构建java代理框架,注册指标并生成服务通用能力;
定义模块,用户定义指标中业务核心指标;
识别模块,识别业务核心指标的代码拦截点,针对不同业务核心指标所在的拦截点,编写业务核心指标的自动生成代码逻辑,将业务核心指标的代码片段按业务打包为不同的插件;
操作模块,动态装载指标自动生成代码的插件,在jvm加载业务类逻辑前,修改业务核心指标代码,并在业务核心指标代码中注入指标自动生成逻辑,完成拦截;
连接技术模块,通过java连接技术,将插件附着在业务进程上,修改待注入业务核心指标的代码字节码信息,动态注入业务核心指标自动生成逻辑,完成拦截;
处理模块,业务应用处理相关的业务请求时,组装成业务所需的业务核心指标信息,回调java代理提供的持久化服务,将所需的业务核心指标信息推送到时序数据库或离线文件中。
8.根据权利要求7所述的基于字节码的指标自动生成系统,其特征在于,所述通用能力包括:指标持久化能力与业务指标自动生成代码逻辑插件自动加载注入业务逻辑代码的能力。
9.根据权利要求7所述的基于字节码的指标自动生成系统,其特征在于,所述插件中增加java代理参数,动态装载指标自动生成代码的插件,在jvm加载业务类逻辑前,修改业务核心指标代码,并在业务核心指标代码中注入指标自动生成逻辑,完成拦截还包括以下步骤:
启动java应用;
利用java代理回调分级变压器的变换方法。
10.根据权利要求7所述的基于字节码的指标自动生成系统,其特征在于,所述业务核心指标自动生成逻辑为:根据业务上下文和相关的逻辑来拦截方法入参和返回值以及其他各信息,完成业务核心指标的按需自动生成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110746991.8A CN113254317A (zh) | 2021-07-02 | 2021-07-02 | 基于字节码的指标自动生成方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110746991.8A CN113254317A (zh) | 2021-07-02 | 2021-07-02 | 基于字节码的指标自动生成方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113254317A true CN113254317A (zh) | 2021-08-13 |
Family
ID=77190438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110746991.8A Pending CN113254317A (zh) | 2021-07-02 | 2021-07-02 | 基于字节码的指标自动生成方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113254317A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986736A (zh) * | 2021-10-29 | 2022-01-28 | 重庆富民银行股份有限公司 | 基于java代理和字节码增强的慢sql监控系统及方法 |
CN114489838A (zh) * | 2022-01-11 | 2022-05-13 | 江苏京玉信息技术有限公司 | 一种http服务器数据拦截的方法、装置和存储介质 |
CN114928550A (zh) * | 2022-04-29 | 2022-08-19 | 杭州默安科技有限公司 | 一种数据库交互账户安全检测方法及系统 |
CN117093286A (zh) * | 2023-10-17 | 2023-11-21 | 腾讯科技(深圳)有限公司 | 插件生成方法、装置、设备及计算机可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107968833A (zh) * | 2017-12-04 | 2018-04-27 | 江苏润和软件股份有限公司 | 一种基于执行路径的云应用性能监测方法 |
CN108228147A (zh) * | 2016-12-15 | 2018-06-29 | 中国移动通信集团公司 | 一种性能数据日志获取方法及装置 |
CN108600035A (zh) * | 2018-07-21 | 2018-09-28 | 杭州安恒信息技术股份有限公司 | 一种非侵入式web应用监控与日志查询方法 |
CN111367768A (zh) * | 2020-03-30 | 2020-07-03 | 中国建设银行股份有限公司 | 程序的函数响应时间监控方法及装置 |
US10922214B1 (en) * | 2019-08-23 | 2021-02-16 | Jpmorgan Chase Bank, N.A. | System and method for implementing a test optimization module |
CN112612678A (zh) * | 2020-12-29 | 2021-04-06 | 中孚安全技术有限公司 | 一种基于字节码技术的零侵入监控方法及系统 |
-
2021
- 2021-07-02 CN CN202110746991.8A patent/CN113254317A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108228147A (zh) * | 2016-12-15 | 2018-06-29 | 中国移动通信集团公司 | 一种性能数据日志获取方法及装置 |
CN107968833A (zh) * | 2017-12-04 | 2018-04-27 | 江苏润和软件股份有限公司 | 一种基于执行路径的云应用性能监测方法 |
CN108600035A (zh) * | 2018-07-21 | 2018-09-28 | 杭州安恒信息技术股份有限公司 | 一种非侵入式web应用监控与日志查询方法 |
US10922214B1 (en) * | 2019-08-23 | 2021-02-16 | Jpmorgan Chase Bank, N.A. | System and method for implementing a test optimization module |
CN111367768A (zh) * | 2020-03-30 | 2020-07-03 | 中国建设银行股份有限公司 | 程序的函数响应时间监控方法及装置 |
CN112612678A (zh) * | 2020-12-29 | 2021-04-06 | 中孚安全技术有限公司 | 一种基于字节码技术的零侵入监控方法及系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986736A (zh) * | 2021-10-29 | 2022-01-28 | 重庆富民银行股份有限公司 | 基于java代理和字节码增强的慢sql监控系统及方法 |
CN114489838A (zh) * | 2022-01-11 | 2022-05-13 | 江苏京玉信息技术有限公司 | 一种http服务器数据拦截的方法、装置和存储介质 |
CN114928550A (zh) * | 2022-04-29 | 2022-08-19 | 杭州默安科技有限公司 | 一种数据库交互账户安全检测方法及系统 |
CN114928550B (zh) * | 2022-04-29 | 2024-05-03 | 杭州默安科技有限公司 | 一种数据库交互账户安全检测方法及系统 |
CN117093286A (zh) * | 2023-10-17 | 2023-11-21 | 腾讯科技(深圳)有限公司 | 插件生成方法、装置、设备及计算机可读存储介质 |
CN117093286B (zh) * | 2023-10-17 | 2024-01-12 | 腾讯科技(深圳)有限公司 | 插件生成方法、装置、设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113254317A (zh) | 基于字节码的指标自动生成方法及系统 | |
US7472378B2 (en) | Breakpoint management and reconciliation for embedded scripts in a business integration language specified program process | |
US8261248B2 (en) | System and method of executing a dynamic program in a structured environment | |
CA2077272C (en) | Managing class method names | |
CN102187313B (zh) | 高速缓存运行时生成的代码 | |
CN105022630B (zh) | 一种组件管理系统及组件管理方法 | |
CN111158741B (zh) | 监控业务模块对第三方类库依赖关系变化的方法及装置 | |
EP1178404A2 (en) | Method and system for compiling multiple languages | |
CN101393528B (zh) | 软件动态更新中确定实例对象转换次序的方法及系统 | |
WO2019136844A1 (zh) | Aop代理框架的实现方法、存储介质、电子设备及系统 | |
CN101819551B (zh) | 记录企业信息系统的服务交互数据的方法和系统 | |
CN103186463B (zh) | 确定软件的测试范围的方法和系统 | |
CN115759955B (zh) | 一种基于区块链的业务流程执行引擎 | |
CN113688186A (zh) | 智能合约执行方法、引擎及区块链节点 | |
CN105446819B (zh) | 一种服务连接系统及其设计方法 | |
US8024374B2 (en) | Computer object conversion using an intermediate object | |
CN101056210B (zh) | 一种网络集中管理平台上的事件处理系统和方法 | |
Li et al. | A service-oriented componentization framework for java software systems | |
CN116974581A (zh) | 代码生成方法、装置、电子设备和存储介质 | |
Südholt | A model of components with non-regular protocols | |
Dobrzański et al. | An approach to refactoring of executable UML models | |
CN114443052B (zh) | 一种il指令运行时的动态特例化方法和装置 | |
CN111124610B (zh) | 一种应用容器中应用程序调用方法、装置及存储介质 | |
CN114625397A (zh) | 一种java代码热更新装置及方法 | |
Şora | Unified modeling of static relationships between program elements |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210813 |
|
RJ01 | Rejection of invention patent application after publication |