一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种Paas云远程调试方法、装置及设备与流程

2023-01-15 08:07:36 来源:中国专利 TAG:

一种paas云远程调试方法、装置及设备
技术领域
1.本技术涉及计算机技术领域,尤其涉及一种paas云远程调试方法、装置及设备。


背景技术:

2.在现有的测试和生产环境中,有时会出现应用产生问题,系统中现有日志不足以进行问题定位,需要更多的信息,包括变量值(临时变量、成员变量、静态变量)、产生异常的堆栈(一些异常没有被捕获并打印堆栈)等内容来定位问题。这时如果能够像本地开发环境一样(例如idea、eclipse的本地断点调试功能),在出现问题的代码处增加断点,将断点处的变量和堆栈打印出来,就可以在不重新部署应用的情况下定位问题。
3.目前已经存在一些比较完善的方案,可以提供云下程序的断点调试,但是这些方案在云上应用时会存在问题,这是因为云上ip地址是虚拟ip,外部不可直接访问,而现有的测试方案都是通过浏览器访问服务器ip地址的形式建立连接并进行调试的,云上将不再适用。因此,如何实现paas云远程调试,以提高调试效果是目前亟待解决的问题。


技术实现要素:

4.本技术实施例的主要目的在于提供一种paas云远程调试方法、装置及设备,能够基于asm字节码插桩技术实现paas云远程调试,并有效提高了调试效果。
5.第一方面,本技术实施例提供了一种paas云远程调试方法,包括:
6.客户端通过调用k8s原生接口访问paas云端,并获得当前云空间下的所有pod信息;
7.根据用户选择的待调试的目标应用,所述客户端新建预设个数的websocket请求,并连接到所述目标应用集群下的pod上的代理程序;
8.根据用户选择的所述目标应用集群下的pod上的代理程序返回的类和方法,所述客户端将调试信息通过所述websocket发送到对应的pod上的代理程序上;
9.所述代理程序在接收到所述调试信息后,通过插桩在对应的类和方法前,记录变量值和抛出异常的信息,并在所述目标应用下的pod触发断电后,通过所述websocket向所述客户端返回调试结果。
10.可选的,所述pod信息包括pod的ip地址和应用名称。
11.可选的,所述方法还包括:
12.将所述代理程序的jar包部署到paas应用服务器挂载的nas上,并在应用启动的yaml文件中增加插桩代理内容,以便应用程序启动前先启动所述代理程序,进行asm插桩,来启动websocket服务,用于接收外部请求。
13.可选的,所述方法还包括:
14.所述客户端显示所述目标应用的断点调试信息。
15.第二方面,本技术实施例还提供了一种paas云远程调试装置,包括:
16.调用单元,用于客户端通过调用k8s原生接口访问paas云端,并获得当前云空间下
的所有pod信息;
17.连接单元,用于根据用户选择的待调试的目标应用,所述客户端新建预设个数的websocket请求,并连接到所述目标应用集群下的pod上的代理程序;
18.发送单元,用于根据用户选择的所述目标应用集群下的pod上的代理程序返回的类和方法,所述客户端将调试信息通过所述websocket发送到对应的pod上的代理程序上;
19.返回单元,用于所述代理程序在接收到所述调试信息后,通过插桩在对应的类和方法前,记录变量值和抛出异常的信息,并在所述目标应用下的pod触发断电后,通过所述websocket向所述客户端返回调试结果。
20.可选的,所述pod信息包括pod的ip地址和应用名称。
21.可选的,所述装置还包括:
22.部署单元,用于将所述代理程序的jar包部署到paas应用服务器挂载的nas上,并在应用启动的yaml文件中增加插桩代理内容,以便应用程序启动前先启动所述代理程序,进行asm插桩,来启动websocket服务,用于接收外部请求。
23.可选的,所述装置还包括:
24.显示单元,用于所述客户端显示所述目标应用的断点调试信息。
25.本技术实施例还提供了一种paas云远程调试设备,包括:处理器、存储器、系统总线;
26.所述处理器以及所述存储器通过所述系统总线相连;
27.所述存储器用于存储一个或多个程序,所述一个或多个程序包括指令,所述指令当被所述处理器执行时使所述处理器执行上述paas云远程调试方法中的任意一种实现方式。
28.本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行上述paas云远程调试方法中的任意一种实现方式。
29.本技术实施例提供的一种paas云远程调试方法、装置及设备,首先客户端通过调用k8s原生接口访问paas云端,并获得当前云空间下的所有pod信息,然后,根据用户选择的待调试的目标应用,所述客户端新建预设个数的websocket请求,并连接到所述目标应用集群下的pod上的代理程序,接着,根据用户选择的所述目标应用集群下的pod上的代理程序返回的类和方法,所述客户端将调试信息通过所述websocket发送到对应的pod上的代理程序上;进而,代理程序在接收到所述调试信息后,通过插桩在对应的类和方法前,记录变量值和抛出异常的信息,并在所述目标应用下的pod触发断电后,通过所述websocket向所述客户端返回调试结果。从而能够利用云端之间的pod可以相互访问的特点,在云端建立客户端,浏览器先访问客户端,再通过客户端访问程序代理,解决了浏览器不可直接访问程序代理的问题,实现了paas云远程调试,并有效提高了调试效果。
附图说明
30.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
这些附图获得其他的附图。
31.图1为本技术实施例提供的云下远程调试方法的流程图;
32.图2为本技术实施例提供的一种paas云远程调试方法的流程示意图;
33.图3为本技术实施例提供的云上远程调试方法的流程图;
34.图4为本技术实施例提供的一种paas云远程调试装置的组成示意图。
具体实施方式
35.目前通常采用的云下远程调试方法如图1所示,用户浏览器需要直接访问安装了代理的应用,即需要配置应用的ip地址,云端应用的ip地址是虚拟动态ip,且在浏览器端不可访问,因此,现有的调试方案在云端不可用。如何实现paas云远程调试,以提高调试效果是目前亟待解决的问题。
36.为解决上述缺陷,本技术实施例提供了一种paas云远程调试方法,首先客户端通过调用k8s原生接口访问paas云端,并获得当前云空间下的所有pod信息,然后,根据用户选择的待调试的目标应用,所述客户端新建预设个数的websocket请求,并连接到所述目标应用集群下的pod上的代理程序,接着,根据用户选择的所述目标应用集群下的pod上的代理程序返回的类和方法,所述客户端将调试信息通过所述websocket发送到对应的pod上的代理程序上;进而,代理程序在接收到所述调试信息后,通过插桩在对应的类和方法前,记录变量值和抛出异常的信息,并在所述目标应用下的pod触发断电后,通过所述websocket向所述客户端返回调试结果。从而能够利用云端之间的pod可以相互访问的特点,在云端建立客户端,浏览器先访问客户端,再通过客户端访问程序代理,解决了浏览器不可直接访问程序代理的问题,实现了paas云远程调试,并有效提高了调试效果。
37.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
38.第一实施例
39.参见图2,为本实施例提供的一种paas云远程调试方法的流程示意图,该方法包括以下步骤:
40.s201:客户端通过调用k8s原生接口访问paas云端,并获得当前云空间下的所有pod信息。
41.需要说明的是,虽然paas云内部的容器在外部不可访问,但其内部的pod应用之间是可以相互访问的,因此,本技术提成通过新建一个pod并部署客户端应用,通过客户端再与待调试的应用建立联系。针对ip地址随时变化的问题,本技术提出通过调用k8s的服务获取接口,得到当前paas云空间下运行的所有pod名称和对应的ip地址,在用户选择对应的应用后,客户端再去依次访问该应用下所有pod对应的ip地址,从而解决了ip地址不固定的问题。
42.具体来讲,在本实施例中,为了实现paas云远程调试,并有效提高调试效果,首先可以将代理程序的jar包部署到paas应用服务器挂载的nas上,并在应用启动的yaml文件中增加插桩代理内容,以便应用程序启动前该代理程序先启动,进行asm插桩,并且,该代理会
启动一个websocket服务用于接收外部请求。
43.其中,asm是一个通用的java原生字节码操作与分析框架,通过asm框架,可以动态的生成类或者增强已有类的功能。asm插桩技术可以直接产生二进制的class文件,也可以在类被加载到java虚拟机之前动态改变类的行为。
44.asm字节码插桩的技术可以在执行特定类、方法、代码行时,将现有的变量和异常信息打印出来,并对原有应用不产生任何侵入性,对性能也几无影响,是进行断点调试的理想方案。
45.进一步的,客户端程序启动后,可以通过调用k8s原生接口访问当前paas云空间下的所有pod信息,得到其中包含的pod的ip地址和应用名称等,返回给客户端,用户可以选择这些应用之一进行调试,并将用户选择的待调试的应用定义为目标应用,用以执行后续步骤s202。
46.其中,k8s是kubernetes的简称,是是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用。
47.pod是kubernetes创建或部署的最小单位。一个pod封装一个或多个容器(container)、存储资源(volume)、一个独立的网络ip以及管理控制容器运行方式的策略选项。
48.s202:根据用户选择的待调试的目标应用,所述客户端新建预设个数的websocket请求,并连接到所述目标应用集群下的pod上的代理程序。
49.在本实施例中,为了实现paas云远程调试,并有效提高调试效果,在用户选择了待调试的目标应用后,进一步可以根据该目标应用,客户端新建预设个数的websocket请求,并连接到所述目标应用集群下的pod上的代理程序,返回该应用下应用程序上的所有类信息,用户选择或者输入对应的类和方法。
50.s203:根据用户选择的所述目标应用集群下的pod上的代理程序返回的类和方法,所述客户端将调试信息通过所述websocket发送到对应的pod上的代理程序上。
51.在本实施例中,为了实现paas云远程调试,并有效提高调试效果,在用户选择了或者输入了对应的类和方法后,进一步可以将根据用户选择的目标应用集群下的pod上的代理程序返回的类和方法,所述客户端将调试信息通过websocket发送到对应的pod上的代理程序上,用以执行后续步骤s204。
52.s204:代理程序在接收到所述调试信息后,通过插桩在对应的类和方法前,记录变量值和抛出异常的信息,并在所述目标应用下的pod触发断电后,通过所述websocket向所述客户端返回调试结果。
53.在本实施例中,为了实现paas云远程调试,并有效提高调试效果,代理程序在接收到所述调试信息后,进一步可以通过插桩在对应的类和方法前,记录变量值和抛出异常(如果有异常)的信息,在目标应用下任一pod触发断点后,该pod可以通过websocket返回调试结果给客户端程序,如图3所示。
54.在此基础上,为了提供用户体验,一种可选的实现方式是,客户端可以显示所述目标应用的断点调试信息以及调试结果。
55.这样,通过调用云端k8s接口获得云端pod的ip地址,通过调试客户端在paas容器内部进行调试访问,解决了paas内部虚拟ip地址不可直接在外部浏览器访问的问题,扩展
了asm远程代码调试方案在云上的应用。
56.具体来讲,本技术的paas云远程调试方法可以包含两部分程序,即,应用程序使用的插桩代理程序和进行断点调试的客户端程序,插桩代理以jar包形式呈现,客户端程序以云上镜像的形式呈现,客户端程序部署成功后,提供前台html界面供用户进行使用。
57.综上,本实施例提供的一种paas云远程调试方法,首先客户端通过调用k8s原生接口访问paas云端,并获得当前云空间下的所有pod信息,然后,根据用户选择的待调试的目标应用,所述客户端新建预设个数的websocket请求,并连接到所述目标应用集群下的pod上的代理程序,接着,根据用户选择的所述目标应用集群下的pod上的代理程序返回的类和方法,所述客户端将调试信息通过所述websocket发送到对应的pod上的代理程序上;进而,代理程序在接收到所述调试信息后,通过插桩在对应的类和方法前,记录变量值和抛出异常的信息,并在所述目标应用下的pod触发断电后,通过所述websocket向所述客户端返回调试结果。从而能够利用云端之间的pod可以相互访问的特点,在云端建立客户端,浏览器先访问客户端,再通过客户端访问程序代理,解决了浏览器不可直接访问程序代理的问题,实现了paas云远程调试,并有效提高了调试效果。
58.第二实施例
59.本实施例将对一种paas云远程调试装置进行介绍,相关内容请参见上述方法实施例。
60.参见图4,为本实施例提供的一种paas云远程调试装置的组成示意图,该装置包括:
61.调用单元401,用于客户端通过调用k8s原生接口访问paas云端,并获得当前云空间下的所有pod信息;
62.连接单元402,用于根据用户选择的待调试的目标应用,所述客户端新建预设个数的websocket请求,并连接到所述目标应用集群下的pod上的代理程序;
63.发送单元403,用于根据用户选择的所述目标应用集群下的pod上的代理程序返回的类和方法,所述客户端将调试信息通过所述websocket发送到对应的pod上的代理程序上;
64.返回单元404,用于所述代理程序在接收到所述调试信息后,通过插桩在对应的类和方法前,记录变量值和抛出异常的信息,并在所述目标应用下的pod触发断电后,通过所述websocket向所述客户端返回调试结果。
65.在本实施例的一种实现方式中,所述pod信息包括pod的ip地址和应用名称。
66.在本实施例的一种实现方式中,所述装置还包括:
67.部署单元,用于将所述代理程序的jar包部署到paas应用服务器挂载的nas上,并在应用启动的yaml文件中增加插桩代理内容,以便应用程序启动前先启动所述代理程序,进行asm插桩,来启动websocket服务,用于接收外部请求。
68.在本实施例的一种实现方式中,所述装置还包括:
69.显示单元,用于所述客户端显示所述目标应用的断点调试信息。
70.综上,本实施例提供的一种paas云远程调试装置,首先客户端通过调用k8s原生接口访问paas云端,并获得当前云空间下的所有pod信息,然后,根据用户选择的待调试的目标应用,所述客户端新建预设个数的websocket请求,并连接到所述目标应用集群下的pod
上的代理程序,接着,根据用户选择的所述目标应用集群下的pod上的代理程序返回的类和方法,所述客户端将调试信息通过所述websocket发送到对应的pod上的代理程序上;进而,代理程序在接收到所述调试信息后,通过插桩在对应的类和方法前,记录变量值和抛出异常的信息,并在所述目标应用下的pod触发断电后,通过所述websocket向所述客户端返回调试结果。从而能够利用云端之间的pod可以相互访问的特点,在云端建立客户端,浏览器先访问客户端,再通过客户端访问程序代理,解决了浏览器不可直接访问程序代理的问题,实现了paas云远程调试,并有效提高了调试效果。
71.进一步地,本技术实施例还提供了一种paas云远程调试设备,包括:处理器、存储器、系统总线;
72.所述处理器以及所述存储器通过所述系统总线相连;
73.所述存储器用于存储一个或多个程序,所述一个或多个程序包括指令,所述指令当被所述处理器执行时使所述处理器执行上述paas云远程调试方法的任一种实现方法。
74.进一步地,本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行上述paas云远程调试方法的任一种实现方法。
75.通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备,等等)执行本技术各个实施例或者实施例的某些部分所述的方法。
76.需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
77.还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
78.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献