CN117992359B - 服务化软件的观测方法、装置和电子设备 - Google Patents
服务化软件的观测方法、装置和电子设备 Download PDFInfo
- Publication number
- CN117992359B CN117992359B CN202410406384.0A CN202410406384A CN117992359B CN 117992359 B CN117992359 B CN 117992359B CN 202410406384 A CN202410406384 A CN 202410406384A CN 117992359 B CN117992359 B CN 117992359B
- Authority
- CN
- China
- Prior art keywords
- service
- target
- class
- observation
- byte code
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 243
- 238000004364 calculation method Methods 0.000 claims abstract description 7
- 230000008569 process Effects 0.000 claims description 32
- 238000001914 filtration Methods 0.000 claims description 31
- 238000003860 storage Methods 0.000 claims description 15
- 238000012360 testing method Methods 0.000 claims description 14
- 238000010606 normalization Methods 0.000 claims description 10
- 238000004458 analytical method Methods 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 abstract description 7
- 239000003795 chemical substances by application Substances 0.000 description 25
- 238000004590 computer program Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 14
- 230000015654 memory Effects 0.000 description 12
- 238000012795 verification Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 230000002708 enhancing effect Effects 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000003623 enhancer Substances 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000002715 modification method Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000003449 preventive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Abstract
本发明提供一种服务化软件的观测方法、装置和电子设备,涉及计算机软件技术领域,可解决服务的亚功能级观测缺乏监控和检测手段的问题。该方法包括:响应于用户发出服务观测请求,对服务观测请求进行解析,以确定待观测服务;以类或方法为操作单元,对待观测服务中的第一目标程序进行字节码增强,得到第二目标程序,方法表征执行特定的操作或计算,并返回结果,字节码增强表征指定观测对象和结果输出路径;执行第二目标程序,得到服务观测结果;以及根据结果输出路径,输出服务观测结果。本发明的服务化软件的观测方法,可以自动进行目标程序中方法的局部观测并输出观测结果,大大提高了服务化软件的观测效率。
Description
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种服务化软件的观测方法、装置和电子设备。
背景技术
现代化软件大多以两种方式运行,一种是非服务化运行方式,另一种方式是服务化运行方式。非服务化运行方式是在计算机系统上以桌面应用程序的方式实现某些功能;服务化运行方式则是通过计算机系统通信功能,由服务端提供一套可供用户调用访问的接口实现业务功能。
服务观测技术是用于对服务化软件的元数据、接口等静态特征,以及运行环境参数信息、业务连通性、实例个数等动态特征进行实时监控,进而判断其动静态特征是否符合软件设计规范的一种技术。
然而,目前服务观测技术侧重于观测软件的功能和性能,在服务的亚功能级(接口、方法)观测方面缺乏监控和检测手段。
发明内容
(一)要解决的技术问题
针对现有的技术问题,本发明提供一种服务化软件的观测方法、装置和电子设备,用于至少部分解决以上技术问题。
(二)技术方案
本发明提供一种服务化软件的观测方法,包括:响应于用户发出服务观测请求,对服务观测请求进行解析,以确定待观测服务;以类或方法为操作单元,对待观测服务中的第一目标程序进行字节码增强,得到第二目标程序,方法表征执行特定的操作或计算,并返回结果,字节码增强表征指定观测对象和结果输出路径;执行第二目标程序,得到服务观测结果;以及根据结果输出路径,输出服务观测结果。
可选地,对服务观测请求进行解析,以确定待观测服务包括:对服务观测请求进行解析,得到观测任务信息,观测任务信息包括待观测服务的端口号;根据待观测服务的端口号,确定待观测服务的进程标识符;以及根据待观测服务的进程标识符,确定待观测服务。
可选地,观测任务信息还包括待观测服务的目标类或目标方法,以类或方法为操作单元,对待观测服务中的第一目标程序进行字节码增强,得到第二目标程序包括:根据目标类或目标方法,确定过滤类规则文本;根据过滤类规则文本,确定第一目标程序中的目标类或目标方法;以及采用字节码增强程序,对第一目标程序中的目标类或目标方法进行字节码增强,得到第二目标程序。
可选地,根据目标类或目标方法,确定过滤类规则文本包括:扫描待观测服务的字节码文件,得到待观测服务的多个类和方法;根据多个类和方法之间的依赖关系,构建类的层级目录结构;以及根据层级目录结构和目标类或目标方法,确定过滤类规则文本。
可选地,采用字节码增强程序,对第一目标程序中的目标类或目标方法进行字节码增强,得到第二目标程序包括:在对第一目标程序的字节码文件进行加载之前,对字节码文件进行拦截;采用字节码增强程序对字节码文件进行字节码增强,得到增强字节码文件;采用attach方法,将增强字节码文件加载至虚拟机;以及根据进程标识符,将虚拟机挂载到待观测服务,得到第二目标程序。
可选地,在根据过滤类规则文本,确定第一目标程序中的目标类或目标方法之前,服务化软件的观测方法还包括:对当前加载的类进行判断;在当前加载的类满足预设条件的情况下,将当前加载的类与过滤类规则文本进行对比,以确定目标类或目标方法。
可选地,对第一目标程序中的目标类或目标方法进行字节码增强,得到第二目标程序包括:采用ASM字节码操作库对第一目标程序中的目标类或目标方法进行字节码增强,得到第二目标程序;其中,ASM字节码操作库包括类访问接口和方法访问接口,类访问接口用于访问目标类,方法访问接口用于访问目标方法。
可选地,服务化软件的观测方法还包括:对服务观测结果进行规范性测试。
本发明另一方面提供一种服务化软件的观测装置,包括:解析模块,用于响应于用户发出服务观测请求,对服务观测请求进行解析,以确定待观测服务;增强模块,用于以类或方法为操作单元,对待观测服务中的第一目标程序进行字节码增强,得到第二目标程序,方法表征执行特定的操作或计算,并返回结果,字节码增强表征指定观测对象和结果输出路径;执行模块,用于执行第二目标程序,得到服务观测结果;以及输出模块,用于根据结果输出路径,输出服务观测结果。
本发明的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器执行上述任一实施例的方法。
(三)有益效果
与现有技术相比,本发明提供的服务化软件的观测方法、装置和电子设备,至少具有以下有益效果:
(1)本发明的服务化软件的观测方法,以类或方法为操作单元对目标程序进行字节码增强,在新生成的第二目标程序中指定需要观测的对象类及方法,以及观测结果的输出路径,使得在执行第二目标程序到目标类或目标方法时,可以自动进行该方法的局部观测并输出观测结果,大大提高了服务化软件的观测效率。
(2)本发明的服务化软件的观测方法,通过在方法维度对目标方法进行字节码增强,可以实现服务化软件接口调用过程中的方法调用链、参数对象、数据结构等亚功能级信息的获取与规范性测试。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本发明实施例的服务化软件的观测系统的结构框图;
图2示意性示出了根据本发明实施例的服务化软件的观测方法的流程图;
图3示意性示出了根据本发明实施例的确定过滤类规则文本的方法流程图;
图4示意性示出了根据本发明实施例的字节码增强程序的工作原理图;
图5示意性示出了根据本发明实施例的字节码转换预处理的方法流程框图;
图6示意性示出了根据本发明实施例的字节码增强的方法流程框图;
图7示意性示出了根据本发明另一实施例的服务化软件的观测方法的流程图;
图8示意性示出了根据本发明实施例的服务化软件的观测装置的结构框图;
图9示意性示出了根据本发明实施例的适于实现服务化软件的观测方法的电子设备的方框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
需要说明的是,在附图或说明书描述中,相似或相同的部分都使用相同的图号。说明书中示例的各个实施例中的技术特征在无冲突的前提下可以进行自由组合形成新的方案,且在附图中,实施例的形状或是厚度可扩大,并以简化或是方便标示。再者,附图中未绘示或描述的元件或实现方式,为所属技术领域中普通技术人员所知的形式。另外,虽然本文可提供包含特定值的参数的示范,但应了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应的值。
除非存在技术障碍或矛盾,本发明的上述各种实施方式可以自由组合以形成另外的实施例,这些另外的实施例均在本发明的保护范围中。
虽然结合附图对本发明进行了说明,但是附图中公开的实施例旨在对本发明优选实施方式进行示例性说明,而不能理解为对本发明的一种限制。附图中的尺寸比例仅仅是示意性的,并不能理解为对本发明的限制。
虽然本发明总体构思的一些实施例已被显示和说明,本领域普通技术人员将理解,在不背离本总体公开构思的原则和精神的情况下,可对这些实施例做出改变。
图1示意性示出了根据本发明实施例的服务化软件的观测系统的结构框图。
根据本发明的实施例,如图1所示,本发明的服务化软件的观测系统涉及的运行程序例如包括:用于与系统进行交互的客户端程序、用于处理和分发用户请求及解析日志的服务端程序、部署在被观测服务所在服务器上的用于实现字节码增强的运行态代理控制程序。
客户端部署在可供外部用户访问的主机上,服务端部署在可供客户端发送HTTP请求的主机上,运行态代理控制程序与被观测服务部署在同一个主机上,这三个程序之间通过HTTP或者Socket实现通信。
例如,服务端程序开启客户端程序可以访问的端口,客户端与服务端程序之间通过Http协议进行通信,通过HTTP请求实现对运行态代理控制程序的远程启停控制。服务端程序与运行态代理控制程序提供通过Socket进行通信的端口,服务端与运行态代理控制程序之间通过Socket通信。
本发明的核心部分是用于处理和分发用户请求及解析日志的服务端程序和用于实现字节码增强的运行态代理控制程序。
其中,服务端程序主要有两个作用:
一个作用是接收来自客户端的HTTP请求,该请求指定了被观测服务的端口号、服务观测任务的ID号、观测任务的启停状态以及被观测服务的目标类或目标方法 ,经过解析处理之后分别向对应的待测系统主机转发控制命令。
另一个作用是在接收客户端请求之后,向对应主机发送日志传输指令,获取经过字节码增强之后的亚功能级信息观测结果,并对其进行亚功能级信息规范性测试 。
运行态代理控制程序例如主要由控制程序、代理程序和字节码增强程序三个部分构成。其中,控制程序用于在接收服务端转发的指令后,驱动代理程序将字节码增强程序依附到运行态服务上。代理程序Attach.jar用于接收字节码增强程序和外部参数。字节码增强程序Agent.jar用于在被观测服务运行时实现字节码增强任务。
图2示意性示出了根据本发明实施例的服务化软件的观测方法的流程图。
根据本发明的实施例,如图2所示,本发明的服务化软件的观测方法例如包括操作S210~操作S240。
在操作S210,响应于用户发出服务观测请求,对服务观测请求进行解析,以确定待观测服务。
在操作S220,以类或方法为操作单元,对待观测服务中的第一目标程序进行字节码增强,得到第二目标程序,方法表征执行特定的操作或计算,并返回结果,字节码增强表征指定观测对象和结果输出路径。
在操作S230,执行第二目标程序,得到服务观测结果。
在操作S240,根据结果输出路径,输出服务观测结果。
在一些实施例中,用户例如通过图形用户界面(GUI)或命令行界面(CLI)发出一个服务观测请求,该请求旨在监控某个特定服务的性能。
系统接收到请求后,解析请求内容,识别出用户希望观测的服务名称和版本,例如用户想要观测名为“UserService”的版本“v1.0”的性能。
系统针对“UserService”的“v1.0”版本,选择特定的类(如“UserServiceImpl”)和方法(如“getUserById”)进行字节码增强。字节码增强例如包括添加日志记录、性能计时或异常捕获等功能。
经过字节码增强后,原始的“UserServiceImpl”类被修改,新增了性能监控相关的代码。这个修改后的类就是第二目标程序。
系统部署并执行第二目标程序,模拟用户请求,并记录性能数据,如方法执行时间、内存使用情况等。
系统根据预设的输出路径(可以是文件、数据库或远程服务器),将收集到的性能数据输出为报告或图表。用户可以通过GUI或CLI查看这些结果,以了解服务的运行状态和性能瓶颈。
这个实施例提供了一种具体的服务化软件观测方法,通过字节码增强技术实现对服务内部行为的观测和监控,帮助用户更好地理解和优化服务的性能。
根据本发明的实施例,例如通过操作S311~操作S313来对服务观测请求进行解析,以确定待观测服务。
在操作S311,对服务观测请求进行解析,得到观测任务信息,观测任务信息包括待观测服务的端口号。
在操作S312,根据待观测服务的端口号,确定待观测服务的进程标识符。以及
在操作S313,根据待观测服务的进程标识符,确定待观测服务。
在一些实施例中,用户通过命令行发送一个服务观测请求,该请求的格式例如为:observe-service -port 8080。系统接收到这个请求后,开始解析这个请求以获取观测任务信息。系统从请求中解析出观测任务信息,即待观测服务的端口号。在这个例子中,端口号是8080。
系统使用操作系统提供的工具或API(如在Linux上,可以使用netstat或lsoft命令),查询端口8080当前被哪个进程使用。
查询结果显示,端口8080被进程ID(PID)为12345的进程使用。系统记录下这个进程标识符。
系统进一步查询进程ID为12345的详细信息,这通常包括进程名称、启动命令、工作目录等。
根据进程的详细信息,系统确定这个进程是UserService的v1.0版本。这个信息将用于后续的字节码增强和服务观测。
通过以上步骤,系统成功地解析了服务观测请求,并确定了待观测服务是UserService的v1.0版本,运行在端口8080上,进程ID为12345。接下来,系统可以对这个服务进行字节码增强和性能观测。
根据本发明的实施例,观测任务信息还包括待观测服务的目标类或目标方法,例如通过操作S421~操作S423来对待观测服务中的第一目标程序进行字节码增强,得到第二目标程序。
在操作S421,根据目标类或目标方法,确定过滤类规则文本。
在操作S422,根据过滤类规则文本,确定第一目标程序中的目标类或目标方法。以及
在操作S423,采用字节码增强程序,对第一目标程序中的目标类或目标方法进行字节码增强,得到第二目标程序。
在一些实施例中,用户发送的服务观测请求不仅包含了端口号,还指明了特定的目标类和方法。例如,请求格式可能如下:observe-service -port 8080 -classUserServiceImpl -method getUserById。
系统解析这个请求,得到观测任务信息,包括待观测服务的端口号(8080)、目标类(UserServiceImpl)和目标方法(getUserById)。
根据目标类UserServiceImpl和方法getUserById,系统制定一个过滤类规则文本。这个规则文本可能是一个正则表达式或者是一个简单的字符串匹配模式,用于在字节码中定位到目标类和方法。通过设置过滤类规则文本,在程序运行时依附字节码增强程序可以实现精确到类中的每个方法层级的局部字节码增强。
例如,过滤类规则文本可能是:com.example.service.UserServiceImpl.getUserById。这个规则文本将用于在待观测服务的字节码中查找并定位到UserServiceImpl类中的getUserById方法。
系统加载待观测服务的字节码文件,这通常是一组.class文件或打包成.jar或.war的文件。
系统应用过滤类规则文本,在加载的字节码中查找匹配的类和方法。通过遍历字节码文件,系统找到与规则文本匹配的UserServiceImpl类和getUserById方法。
系统选择一个适合的字节码增强工具,如ASM、Javassist或Byte Buddy。这些工具允许在加载类之前修改其字节码。
根据观测需求,系统实现增强逻辑,并构建字节码增强程序。这可能包括添加性能监控代码、日志记录、异常捕获等。对于getUserById方法,增强逻辑可能是在方法执行前后插入计时代码,以测量方法执行时间。
使用选定的字节码增强工具,系统对UserServiceImpl类中的getUserById方法进行字节码增强。这涉及到修改方法的字节码,以包含新增的监控代码。
完成字节码增强后,系统生成新的字节码文件,进而可以得到第二目标程序。这个第二目标程序包含了原始方法的实现以及新增的观测逻辑。
通过上述步骤,系统根据观测任务信息中的目标类和方法,成功地对第一目标程序进行了字节码增强,得到了包含观测逻辑的第二目标程序。这个第二目标程序随后可以被部署到生产环境,以收集服务运行时的性能数据和其他观测信息。
在一些实施例中,例如依据字节码增强的预定逻辑构建字节码增强程序。在这个过程中会读取过滤类规则,判断目标程序是否符合拟定规则并进行校验,如果通过校验则编写对目标程序字节码的增强操作的具体逻辑。
解析过滤类规则文本路径,并读取文本内容创建过滤类规则文件。
判断当前读取的类的字节码是否通过相关校验。通过校验则读取该类的字节码信息及其内部的方法,并使用ASM字节码操作库实现对亚功能级参数对象的内容访问以及日志信息输出。
将构建完成的字节码增强程序编译为jar包部署。
根据本发明的实施例,例如通过操作S5211~操作S5213来确定过滤类规则文本。
在操作S5211,扫描待观测服务的字节码文件,得到待观测服务的多个类和方法。
在操作S5212,根据多个类和方法之间的依赖关系,构建类的层级目录结构。以及
在操作S5213,根据层级目录结构和目标类或目标方法,确定过滤类规则文本。
图3示意性示出了根据本发明实施例的确定过滤类规则文本的方法流程图。
在一些实施例中,如图3所示,确定过滤类规则文本的方法例如包括:
首先,扫描程序字节码所在的文件路径,如果程序在压缩包中则从压缩包中读取文件内容。
再扫描所有的字节码文件后使用ASM字节码操作库读取文件中类与方法的基本信息。
然后,根据这些信息构建类与类之间、类与方法之间、方法与方法之间的依赖关系图。
之后依据类所在的包和依赖关系,建立类的层级目录结构。
最后,选择目录结构中的目标类或者方法节点,系统依据广度优先算法自动建立依赖关系过滤类规则文本。
在一些实施例中,例如需要观测的服务是一个用户服务(UserService),这个服务已经编译成字节码文件(.class文件)并打包成一个或多个jar文件。
可以使用特定的工具(如ASM库、Javassist库或自定义的字节码扫描工具)来扫描这些jar文件中的字节码。扫描的目的是获取待观测服务中的所有类和方法的信息。
在扫描过程中,识别出UserService服务中的多个类,如UserServiceImpl、UserRepository、UserModel等,以及它们之间的依赖关系。例如,UserServiceImpl可能依赖于UserRepository来进行数据库操作。
基于这些依赖关系,构建一个类的层级目录结构。这个结构可以是一个树状结构,其中根节点是服务的主类(如UserServiceImpl),子节点是依赖的类(如UserRepository),叶子节点可能是具体的实现或工具类。
例如观测目标是UserServiceImpl类中的getUserById方法。根据构建的层级目录结构,可以确定一个过滤类规则文本,该文本能够唯一地标识这个目标方法。
过滤类规则文本可能是一个包含完整类名和方法名的字符串,如com.example.service.UserServiceImpl.getUserById。这个规则文本将用于后续的字节码增强过程中,以确保只有目标方法被增强。
通过上述步骤,扫描了待观测服务的字节码文件,构建了类的层级目录结构,并根据目标类或目标方法确定了过滤类规则文本。这个过滤类规则文本将作为后续字节码增强操作的依据,确保只对感兴趣的部分进行增强,从而精确地收集所需的观测数据。
根据本发明的实施例,例如通过操作S6231~操作S6234来对第一目标程序中的目标类或目标方法进行字节码增强,得到第二目标程序。
在操作S6231,在对第一目标程序的字节码文件进行加载之前,对字节码文件进行拦截。
在操作S6232,采用字节码增强程序对字节码文件进行字节码增强,得到增强字节码文件。
在操作S6233,采用attach方法,将增强字节码文件加载至虚拟机。以及
在操作S6234,根据进程标识符,将虚拟机挂载到待观测服务,得到第二目标程序。
图4示意性示出了根据本发明实施例的字节码增强程序的工作原理图。
在一些实施例中,如图4所示,Java类被编译后形成Java字节码,JVM能够加载这些字节码并执行程序。
运行态代理控制程序利用JavaAgent机制实现在JVM加载字节码文件前对字节码进行拦截,依赖开源的com.sun.tools.jar程序包中VirtualMachine类的attach方法,将字节码增强程序agent.jar加载至JVM中。
利用终端命令通过应用程序服务的端口号查询到被观测服务的进程号PID后,运行态代理控制程序将加载了新的字节码文件的JVM虚拟机挂载到该PID上,实现服务的运行态控制。
在一些实施例中,在Java环境中,可以使用Java Agent技术来拦截字节码文件的加载。Java Agent是一个在JVM启动前或运行时被加载的特殊程序,它能够在类被加载到JVM之前对其字节码进行修改。
例如有一个名为UserServiceAgent的Java Agent,它的目的是对UserServiceImpl类中的方法进行字节码增强。在用户启动待观测服务时,通过JVM参数-javaagent:UserServiceAgent.jar来指定这个Agent。
当UserServiceImpl类的字节码文件被拦截后,UserServiceAgent会使用字节码增强程序(如ASM、Javassist等库)对这个类的字节码进行增强。增强的内容例如包括在方法调用前后插入日志记录、性能监控代码等。
例如,可以在getUserById方法的开始和结束处插入计时代码,以测量这个方法的执行时间。增强后的字节码会被保存在内存中,等待被加载到JVM。
字节码增强完成后,UserServiceAgent例如可以使用attach方法将增强后的字节码文件加载到JVM中。在Java中,VirtualMachine.attach(String processId)方法允许连接到一个正在运行的JVM进程,并向其加载Agent。然而,在这个场景下,由于是在JVM启动前加载Agent,所以实际上这一步是通过JVM自动完成的,不需要显式调用attach方法。
但如果是想在运行时动态地加载Agent,那么可以使用VirtualMachine.attach方法。例如,可以编写一个管理工具,通过这个工具向指定进程ID的JVM加载UserServiceAgent,从而实现动态的字节码增强。
在字节码增强和加载到JVM之后,实际上增强后的类已经成为JVM的一部分,可以被待观测服务使用。这一步所说的“挂载虚拟机到待观测服务”实际上是指确保待观测服务使用的是被增强后的类。
由于在JVM启动前通过-javaagent参数指定了Agent,所以JVM在加载UserServiceImpl类时会自动使用增强后的字节码。因此,当待观测服务调用UserServiceImpl.getUserById方法时,实际上执行的是增强后的方法。
通过上述步骤,成功地使用字节码增强程序对第一目标程序中的目标类进行了字节码增强,并得到了第二目标程序。这个第二目标程序包含了原始方法的实现以及新增的观测逻辑,可以被用于收集服务运行时的性能数据和其他观测信息。
根据本发明的实施例,在根据过滤类规则文本,确定第一目标程序中的目标类或目标方法之前,本发明的服务化软件的观测方法例如还包括操作S710~操作S720。
在操作S710,对当前加载的类进行判断。
在操作S720,在当前加载的类满足预设条件的情况下,将当前加载的类与过滤类规则文本进行对比,以确定目标类或目标方法。
图5示意性示出了根据本发明实施例的字节码转换预处理的方法流程框图。
在一些实施例中,如图5所示,首先经过控制程序传递参数给出字节码增强程序。字节码增强程序将参数字符串拆分为多项参数,并对各项参数进行设置,同时也识别出过滤类规则文本的路径信息,并对过滤类规则文本进行设置。
接着对当前加载的类做判断,如果类的方法中含有‘$’则是Java设置为内部代理方法的标识,应当予以排除;如果类是该字节码增强程序本身所属的类,也应当予以排除;如果类不允许被JVM修改,也应当予以排除。
经过校验后,将允许对字节码进行操作的类添加到类装载机制中。ClassLoader和ASM字节码操作库的接口识别出原字节码中各类的信息以及类的方法信息,将识别出来的类与方法信息与过滤类规则文本内容进行校验。
校验通过的类与方法就是要监测的目标程序,并在下一步对目标程序字节码实现增强操作。目标程序的字节码增强操作为将目标程序原字节码转换成新的字节码,将新的字节码传递给JVM完成重加载。未通过校验的类与方法则不是目标程序,不对该程序执行操作并直接返回。
在一些实施例中,在服务化软件的观测过程中,为了确保只观测到真正关心的目标类或目标方法,需要在确定目标之前进行一系列的筛选操作。以下是另一个具体的实施例来说明这一过程:
例如服务化软件正在运行,并且不断地有类被加载到JVM中。为了提高观测效率,需要对这些加载的类进行初步判断,看它们是否有可能成为观测目标。
例如,可以设置一个预设条件,只关注那些属于特定包(如com.example.service)的类。当JVM加载一个类时,会检查这个类的包名,如果包名符合预设条件,那么这个类就有可能成为观测目标。
经过初步判断后,得到了一批可能符合观测要求的类。接下来,需要将这些类与过滤类规则文本进行对比,以确定真正的目标类或目标方法。
例如过滤类规则文本是com.example.service.UserServiceImpl.*,这表示想要观测UserServiceImpl类中的所有方法。当一个类(如UserServiceImpl)被加载并通过了初步判断后,会将这个类的完整类名与过滤类规则文本进行对比。
如果类的完整类名与过滤类规则文本的前缀部分(即类名部分)匹配,那么就进一步检查这个类中的方法。在这个例子中,UserServiceImpl类的完整类名与过滤类规则文本的前缀部分匹配,所以会继续检查这个类中的方法。
然后,将这个类中的每个方法与过滤类规则文本的剩余部分(即方法名部分)进行对比。由于过滤类规则文本中的方法名部分是一个通配符*,表示匹配任意方法名,所以这个类中的所有方法都会被视为目标方法。
通过上述步骤,成功地筛选出了目标类UserServiceImpl以及其中的所有方法作为目标方法。这样,就可以对这些目标方法进行字节码增强,以收集所需的观测数据。这种筛选机制可以确保只关注真正关心的部分,提高观测的效率和准确性。
根据本发明的实施例,例如通过操作S8231来对第一目标程序中的目标类或目标方法进行字节码增强,得到第二目标程序。
在操作S8231,采用ASM字节码操作库对第一目标程序中的目标类或目标方法进行字节码增强,得到第二目标程序。其中,ASM字节码操作库包括类访问接口和方法访问接口,类访问接口用于访问目标类,方法访问接口用于访问目标方法。
图6示意性示出了根据本发明实施例的字节码增强的方法流程框图。
在一些实施例中,如图6所示,该字节码增强程序主要用于实现对目标类字节码的转换和分析,获取对目标类和方法的信息,并执行IO操作将信息写入到日志文本中。
该程序接收参数为字符串形式,使用分号“;”将字符串分割成多个参数,前三个参数是有效参数,第一个为目标类和目标方法的过滤文本规则的路径,第二个为拟写入的日志地址,第三个为控制命令,用于控制代理程序是否执行运行态代理控制任务,如果为y表示执行任务,如果为n表示取消任务。
在字节码增强程序内部,对字节码的增强和修改操作例如是基于ASM来实现的。ASM是一个字节码操作库,提供了一组API来读取、修改和生成Java字节码,它通过Visitor模式来遍历字节码并提供了底层的字节码转换操作的方法,可以实现对字节码细粒度的修改和生成。
ASM主要由三个类来对字节码进行操作:ClassReader、ClassVisitor、ClassWriter。这三个类的作用可以理解为ClassReader负责读取.class文件 中的内容,然后拆分成三个部分 ,ClassVisitor负责对.class文件中的某一个或多个部分的信息进行修改,ClassWriter负责将三个不同的部分重新组合成一个完整的.class文件。通过ClassVisitor实现对字节码的细粒度操作和定制化需求,ASM提供了ClassVisitor和MethodVisitor两类访问器接口,分别在类的层面上和方法层面提供对字节码的修改操作。
在字节码增强程序内部,对字节码的增强与修改操作以类中的方法作为最小增强操作单元。具体的字节码修改的原理例如是:
在刚进入目标方法时,捕获该方法的参数类型及返回值对象等方法体执行前信息,对其进行解析后,写入日志中。
接着再获取原方法体的信息,并写入日志中。
最后执行插入命令行后的待测程序,在程序执行完毕后,将方法体执行后信息写入日志中,并标记方法执行结束,直至全部指定的过滤类均执行完毕,至此字节码增强程序执行结束。
在一些实施例中,在开始增强之前,需要明确第一目标程序中的目标类或目标方法。这些目标通常是通过特定的规则或条件来确定的,比如根据类名、方法名或注解等。
初始化ASM库:首先,需要引入ASM库并准备好使用它进行字节码操作。
读取字节码:使用ASM的ClassReader类来读取第一目标程序中目标类的字节码。
创建访问器:接着,创建一个自定义的ClassVisitor类,这个类将用于访问目标类的字节码。在这个自定义的访问器中,可以定义在访问到特定类或方法时要执行的操作。
访问目标类:通过自定义的ClassVisitor,访问目标类的字节码。在这个过程中,可以对类的结构、字段、方法等进行检查或修改。
访问目标方法:当访问到目标方法时,创建一个自定义的MethodVisitor来访问该方法的字节码。在这个访问器中,可以插入额外的指令、修改方法体、添加日志记录等。
写入增强后的字节码:经过增强的字节码需要被写入到一个新的类或方法中。这可以通过ASM的ClassWriter类来实现,它将增强后的字节码转换为可以在JVM上运行的形式。
得到第二目标程序:最后,将增强后的字节码保存为新的类文件或直接加载到JVM中运行,从而得到第二目标程序。
需要说明的是,在增强字节码时,需要确保不破坏原有程序的逻辑和正确性。插入的代码应当尽可能高效,以避免对程序性能产生负面影响。增强后的程序应该经过充分的测试,以确保其稳定性和可靠性。
通过这种方式,可以使用ASM字节码操作库对Java程序进行灵活的增强和修改,以满足各种特定的需求。
根据本发明的实施例,本发明的服务化软件的观测方法例如还包括操作S910。
在操作S910,对服务观测结果进行规范性测试。
在一些实施例中,当对服务化软件进行观测时,对观测结果进行规范性测试也是重要的一环。这种测试旨在确保观测数据的准确性、一致性和符合预期的规范。下面将举例说明对观测结果的测试过程。
例如有一个在线购物平台,该平台提供了商品浏览、购物车管理、订单生成和支付等一系列服务。为了评估这些服务的性能和可靠性,进行了服务观测,并收集了一系列关于服务响应时间、错误率、并发用户数等指标的观测数据。
需要对这些观测结果进行规范性测试,以确保它们的有效性和可信度。以下是对观测结果进行测试的几个关键步骤:
数据完整性检查:
验证观测数据是否包含所有必要的指标和维度。
检查是否有缺失值或异常值,并确定是否需要进行数据清洗或插值处理。
数据一致性验证:
确保不同时间点或不同来源的观测数据之间保持一致性。
对比历史数据和当前数据,检查是否存在显著的偏差或不一致性。
规范符合性测试:
验证观测数据是否符合预定的规范和标准,如响应时间应低于某个阈值,错误率应在可接受的范围内等。
如果观测结果超出规范范围,需要进一步调查原因,并确定是否需要调整服务或改进观测方法。
性能基准对比:
将观测结果与行业基准或历史最佳性能进行对比,以评估服务的相对性能水平。这有助于识别潜在的性能瓶颈和优化机会。
错误和异常分析:
深入分析观测数据中的错误和异常情况,确定其根本原因。
根据分析结果,制定相应的纠正措施和预防措施,以减少未来的错误率和异常情况。
趋势和模式识别:
分析观测数据的趋势和模式,以预测服务的未来性能表现。
这有助于提前发现潜在的问题和瓶颈,并采取相应的措施进行预防和优化。
通过以上步骤的规范性测试,可以更加准确地评估服务化软件的性能和可靠性,为改进和优化服务提供有力的数据支持。同时,这也有助于提升用户体验和业务连续性,增强软件系统的整体竞争力。
在一些实施例中,用户通过客户端发送对该服务的日志读取和校验结果获取。
用户通过客户端向服务端发送标准符合性校验的指令。
服务端程序解析参数,并向被观测服务所在服务主机的运行态代理控制程序转发指令。
运行态代理控制程序读取日志信息流,将数据传送到服务端主机。
服务端主机解析日志,并进行亚功能级信息的规范性测试,然后将测试过程信息和结果信息发送给客户端展示。
图7示意性示出了根据本发明另一实施例的服务化软件的观测方法的流程图。
在一些实施例中,如图7所示,首先,客户端发送请求指令,服务端程序对指令进行解析,如果是请求执行服务观测任务,则服务端将指令转发给运行态代理控制程序。
之后,运行态代理控制程序执行终端命令,依据进程的服务端口号获取被观测服务的进程PID(Process Identifier,进程标识符)。
接着,控制程序驱动代理程序在运行时将字节码增强程序依附给被观测服务的JVM(Java Virtual Machine,Java虚拟机),同时将服务观测任务执行指令、过滤类规则文本路径、日志输出路径作为外部参数传递给字节码增强程序。字节码增强程序解析外部参数(参数预处理),并加载预设完成的过滤类规则文本,实现只对目标类或者目标方法的字节码增强。被观测服务中目标程序经过字节码增强,具备输出参数对象等亚功能级信息到日志的能力。
然后,请求被观测服务,对被观测服务的目标程序实现访问调用,触发调用增强之后的字节码程序,通过字节码增强程序可以实现对方法内的对象、数据结构等亚功能级参数的观测。当目标程序被调用时,参数对象、方法调用起止标志、方法执行时间等信息会被写入日志。
最后,将观测信息写入日志,控制程序将日志转发给服务端,经过服务端解析加以校验后,将结果发送给客户端进行展示。例如通过HTTP请求实现对日志以及审查数据的结果回传和展示。通过运行修改后的被测程序,还可以实现对方法内部亚功能级信息日志的输出和解析,并实现亚功能级信息规范性测试的局部加速效果。
如果是请求关闭服务观测任务,在发送的请求中服务观测项识别为false,代理控制程序执行关闭任务,若再次对被测服务发起调用,将不能再对服务进行观测,目标程序的参数对象和信息校验结果也不会显示。
综上所述,本发明提出一种服务化软件的观测方法,通过运行态代理控制程序,对服务已加载类的字节码进行修改与控制,同时通过指定服务的亚功能级观测范围,针对目标程序的局部接口、方法进行监控,进而实现服务化软件接口调用过程中的方法调用链、对象数据结构等内容的捕获及软件测试的局部加速,该方法无需修改服务源码,实现了服务零侵入观测。
基于上述服务化软件的观测方法,本发明还提供了一种服务化软件的观测装置。以下将结合图8对该服务化软件的观测装置进行详细描述。
图8示意性示出了根据本发明实施例的服务化软件的观测装置的结构框图。
如图8所示,该实施例的服务化软件的观测装置800例如包括:解析模块810、增强模块820、执行模块830和输出模块840。
解析模块810用于响应于用户发出服务观测请求,对服务观测请求进行解析,以确定待观测服务。在一实施例中,解析模块810可以用于执行前文描述的操作S210,在此不再赘述。
增强模块820用于以类或方法为操作单元,对待观测服务中的第一目标程序进行字节码增强,得到第二目标程序,方法表征执行特定的操作或计算,并返回结果,字节码增强表征指定观测对象和结果输出路径。在一实施例中,增强模块820可以用于执行前文描述的操作S220,在此不再赘述。
执行模块830用于执行第二目标程序,得到服务观测结果。在一实施例中,执行模块830可以用于执行前文描述的操作S230,在此不再赘述。
输出模块840用于根据结果输出路径,输出服务观测结果。在一实施例中,输出模块840可以用于执行前文描述的操作S240,在此不再赘述。
根据本发明的实施例,解析模块810、增强模块820、执行模块830和输出模块840中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本发明的实施例,解析模块810、增强模块820、执行模块830和输出模块840中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,解析模块810、增强模块820、执行模块830和输出模块840中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图9示意性示出了根据本发明实施例的适于实现服务化软件的观测方法的电子设备的方框图。
如图9所示,根据本发明实施例的电子设备900包括处理器901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。处理器901例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器901还可以包括用于缓存用途的板载存储器。处理器901可以包括用于执行根据本发明实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 903中,存储有电子设备900操作所需的各种程序和数据。处理器 901、ROM902以及RAM 903通过总线904彼此相连。处理器901通过执行ROM 902和/或RAM 903中的程序来执行根据本发明实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 902和RAM 903以外的一个或多个存储器中。处理器901也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本发明实施例的方法流程的各种操作。
根据本发明的实施例,电子设备900还可以包括输入/输出(I/O)接口905,输入/输出(I/O)接口905也连接至总线904。电子设备900还可以包括连接至I/O接口905的以下部件中的一项或多项:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本发明实施例的服务化软件的观测方法。
根据本发明的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本发明的实施例,计算机可读存储介质可以包括上文描述的ROM 902和/或RAM 903和/或ROM 902和RAM 903以外的一个或多个存储器。
本发明的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本发明实施例所提供的服务化软件的观测方法。
在该计算机程序被处理器901执行时执行本发明实施例的系统/装置中限定的上述功能。根据本发明的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分909被下载和安装,和/或从可拆卸介质911被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被处理器901执行时,执行本发明实施例的系统中限定的上述功能。根据本发明的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本发明的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本发明的各个实施例中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本发明中。特别地,在不脱离本发明精神和教导的情况下,本发明的各个实施例和/或中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本发明的范围。
以上对本发明的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本发明的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。不脱离本发明的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本发明的范围之内。
Claims (8)
1.一种服务化软件的观测方法,其特征在于,包括:
响应于用户发出服务观测请求,对所述服务观测请求进行解析,以确定待观测服务;
以类或方法为操作单元,对所述待观测服务中的第一目标程序进行字节码增强,得到第二目标程序,所述方法表征执行特定的操作或计算,并返回结果,所述字节码增强表征指定观测对象和结果输出路径;
执行所述第二目标程序,得到服务观测结果;以及
根据所述结果输出路径,输出所述服务观测结果;
其中,所述对所述服务观测请求进行解析,以确定待观测服务包括:
对所述服务观测请求进行解析,得到观测任务信息,所述观测任务信息包括所述待观测服务的端口号;
根据所述待观测服务的端口号,确定所述待观测服务的进程标识符;以及
根据所述待观测服务的进程标识符,确定所述待观测服务;
所述观测任务信息还包括所述待观测服务的目标类或目标方法,所述以类或方法为操作单元,对所述待观测服务中的第一目标程序进行字节码增强,得到第二目标程序包括:
根据所述目标类或目标方法,确定过滤类规则文本;
根据所述过滤类规则文本,确定所述第一目标程序中的目标类或目标方法;以及
采用字节码增强程序,对所述第一目标程序中的目标类或目标方法进行字节码增强,得到所述第二目标程序。
2.根据权利要求1所述的服务化软件的观测方法,其特征在于,所述根据所述目标类或目标方法,确定过滤类规则文本包括:
扫描所述待观测服务的字节码文件,得到所述待观测服务的多个类和方法;
根据所述多个类和方法之间的依赖关系,构建类的层级目录结构;以及
根据所述层级目录结构和所述目标类或目标方法,确定所述过滤类规则文本。
3.根据权利要求1所述的服务化软件的观测方法,其特征在于,所述采用字节码增强程序,对所述第一目标程序中的目标类或目标方法进行字节码增强,得到所述第二目标程序包括:
在对所述第一目标程序的字节码文件进行加载之前,对所述字节码文件进行拦截;
采用所述字节码增强程序对所述字节码文件进行字节码增强,得到增强字节码文件;
采用attach方法,将所述增强字节码文件加载至虚拟机;以及
根据所述进程标识符,将所述虚拟机挂载到所述待观测服务,得到所述第二目标程序。
4.根据权利要求1所述的服务化软件的观测方法,其特征在于,在根据所述过滤类规则文本,确定所述第一目标程序中的目标类或目标方法之前,所述服务化软件的观测方法还包括:
对当前加载的类进行判断;
在当前加载的类满足预设条件的情况下,将所述当前加载的类与所述过滤类规则文本进行对比,以确定所述目标类或目标方法。
5.根据权利要求1所述的服务化软件的观测方法,其特征在于,所述对所述第一目标程序中的目标类或目标方法进行字节码增强,得到所述第二目标程序包括:
采用ASM字节码操作库对所述第一目标程序中的目标类或目标方法进行字节码增强,得到所述第二目标程序;
其中,所述ASM字节码操作库包括类访问接口和方法访问接口,所述类访问接口用于访问所述目标类,所述方法访问接口用于访问所述目标方法。
6.根据权利要求1所述的服务化软件的观测方法,其特征在于,还包括:
对所述服务观测结果进行规范性测试。
7.一种基于权利要求1所述方法的服务化软件的观测装置,其特征在于,包括:
解析模块,用于响应于用户发出服务观测请求,对所述服务观测请求进行解析,以确定待观测服务;
增强模块,用于以类或方法为操作单元,对所述待观测服务中的第一目标程序进行字节码增强,得到第二目标程序,所述方法表征执行特定的操作或计算,并返回结果,所述字节码增强表征指定观测对象和结果输出路径;
执行模块,用于执行所述第二目标程序,得到服务观测结果;以及
输出模块,用于根据所述结果输出路径,输出所述服务观测结果。
8.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410406384.0A CN117992359B (zh) | 2024-04-07 | 服务化软件的观测方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410406384.0A CN117992359B (zh) | 2024-04-07 | 服务化软件的观测方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117992359A CN117992359A (zh) | 2024-05-07 |
CN117992359B true CN117992359B (zh) | 2024-06-21 |
Family
ID=
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114116509A (zh) * | 2021-12-02 | 2022-03-01 | 建信金融科技有限责任公司 | 程序分析方法、装置、电子设备和存储介质 |
CN114785616A (zh) * | 2022-06-13 | 2022-07-22 | 深圳红途科技有限公司 | 数据风险检测方法、装置、计算机设备及存储介质 |
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114116509A (zh) * | 2021-12-02 | 2022-03-01 | 建信金融科技有限责任公司 | 程序分析方法、装置、电子设备和存储介质 |
CN114785616A (zh) * | 2022-06-13 | 2022-07-22 | 深圳红途科技有限公司 | 数据风险检测方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7818721B2 (en) | Dynamic application tracing in virtual machine environments | |
KR101705265B1 (ko) | 동적 인스트루먼테이션을 통한 커스텀 코드의 진단을 스트림라인하기위한 메소드 콜의 검출 | |
Saha et al. | Hector: Detecting resource-release omission faults in error-handling code for systems software | |
US20110258609A1 (en) | Method and system for software defect reporting | |
US7900198B2 (en) | Method and system for parameter profile compiling | |
CN111427765B (zh) | 自动开启基于jmeter实现的接口性能测试方法和系统 | |
CN111723380B (zh) | 一种检测组件漏洞的方法及装置 | |
US10528456B2 (en) | Determining idle testing periods | |
CN111124870A (zh) | 一种接口测试方法及装置 | |
CN111654495B (zh) | 用于确定流量产生来源的方法、装置、设备及存储介质 | |
US11580228B2 (en) | Coverage of web application analysis | |
CN111782526A (zh) | 一种接口测试方法、装置、电子设备及存储介质 | |
US11314856B2 (en) | Generating rule-based access control policies using a bytecode instrumentation system | |
US10216620B2 (en) | Static code testing of active code | |
US11550700B2 (en) | Systems and methods for debugging and application development | |
He et al. | IFDS-based context debloating for object-sensitive pointer analysis | |
CN112612697A (zh) | 一种基于字节码技术的软件缺陷测试定位方法及系统 | |
CN112445706A (zh) | 程序异常代码获取方法、装置、电子设备以及存储介质 | |
US20230141948A1 (en) | Analysis and Testing of Embedded Code | |
CN116795701A (zh) | 一种接口程序的通用测试实例的生成方法和装置 | |
CN117992359B (zh) | 服务化软件的观测方法、装置和电子设备 | |
CN111240728A (zh) | 应用程序更新方法、装置、设备和存储介质 | |
CN117992359A (zh) | 服务化软件的观测方法、装置和电子设备 | |
WO2021104027A1 (zh) | 代码性能检测方法、装置、设备及存储介质 | |
CN111488230A (zh) | 修改日志输出级别的方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |