一种探针的自动部署方法、电子设备和存储介质与流程

文档序号:26003632发布日期:2021-07-23 21:21阅读:202来源:国知局
一种探针的自动部署方法、电子设备和存储介质与流程

本发明实施例涉及数据处理技术领域,尤其涉及一种探针的自动部署方法、电子设备和存储介质。



背景技术:

探针技术是一种在应用中嵌入自定义模块,以达到监控应用性能的目的,目前不同的应用对应不同的探针,而每个应用匹配一个配置文件,在配置文件中包含探针的配置方式和路径,因此技术人员需要手工根据配置文件对不同应用进行探针的部署。

但是目前通过手工配置部署探针的过程繁琐,同一台机器上的不同应用需要运维人员熟悉其配置文件,因此对技术人员的技术要求较高,并且面对庞大的机器群,在采用手工配置方式进行探针部署时也容易出现错误,因此现有的探针部署方式不仅效率不高而且准确率较低。



技术实现要素:

本发明实施例提供了一种探针的自动部署方法、电子设备和存储介质,以实现在目标进程中实现探针的自动部署。

第一方面,本发明实施例提供了一种探针的自动部署方法,应用于探针的自动部署系统,探针的自动部署系统包括:驱动模块和识别模块,

通过驱动模块确定目标设备上的目标进程启动时,为目标进程加载识别模块;

通过识别模块确定目标进程所属的应用类型,获取与应用类型所匹配的探针,并将探针部署到目标进程中。

第二方面,本发明实施例还提供了一种电子设备,电子设备包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序;

当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本发明任意实施例的方法。

第三方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例的方法。

在本发明实施例中,通过在目标进程中加载识别模块,通过识别模块确定与目标进程所适配的探针,并将所确定的探针自动部署到目标进程中,从而提高了探针部署的效率以及准确率。

附图说明

图1是本发明实施例一提供的探针的自动部署方法的流程图;

图2是本发明实施例一提供的探针的自动部署系统的结构示意图;

图3是本发明实施例一提供的为目标进程加载识别模块的交互时序图;

图4是本发明实施例一提供的部署探针的时序交互图;

图5是本发明实施例二提供的探针的自动部署方法的流程图;

图6是本发明实施例三提供的一种电子设备的结构框图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1是本发明实施例提供的探针的自动部署方法的流程图,本实施例可适用于对目标进程自动部署探针的情况,该方法可以由本发明实施例中的探针的自动部署系统来执行。如图2所示为本实施方式中的探针的自动部署系统的结构图,如图2所示,探针的自动部署系统包括:驱动模块11、识别模块12、内核模块13、探针标识生成模块14和监控模块15。下面基于图1所示的探针自动部署流程对上述各模块的作用进行说明,本发明实施例的方法具体包括如下步骤:

步骤s101,通过驱动模块确定目标设备上的目标进程启动时,为目标进程加载识别模块。

可选的,通过驱动模块确定目标设备上的目标进程启动时,为目标进程加载识别模块之前,还包括:通过驱动模块按照指定端口向内核模块发送进程回调注册消息,其中,进程回调注册消息中包含指定接收地址;通过内核模块接收到用户针对目标进程的启动指令时,为目标进程创建内核对象以启动目标进程;通过内核模块基于回调注册消息生成目标进程的进程创建消息,并将进程创建消息发送给驱动模块的指定地址中。

需要说明的是,本实施方式中的驱动模块可以是smartagentmnt,识别模块可以是agentloader,监控模块可以是watchdog,探针标识生成模块可以是machineagent。当然,本实施方式中仅是举例说明而并不对每个模块的具体类型进行限定。

其中,目标进程指的是目标设备上还未启动运行的进程,而并不对目标进程的数量进行限定,因此本实施方式中主要是针对处于待启动状态的进程进行探针的部署。

可选的,通过驱动模块确定目标设备上的目标进程启动时,为目标进程加载识别模块,可以包括:通过驱动模块根据进程创建消息为目标进程添加标记;通过内核模块对添加标记的目标进程加载内核动态库,并生成内核动态库加载完成消息,将内核动态库加载完成消息发送给驱动模块;通过驱动模块在确定接收到内核动态库加载完成消息,则将加载识别模块的代码段添加到指定内核函数中;通过内核模块调用指定内核函数为目标进程加载识别模块。

可选的,将识别模块的代码段添加到指定内核函数中之前,还可以包括:通过驱动模块确定目标进程在预设加载名单中,其中,预设加载名单中包含需要进行加载识别模块的进程标识。

具体的说,如图3所示为本实施方式提供的为目标进程加载识别模块的交互时序图,如图所示包括:

1.加载配置。

具体的说,驱动模块在启动时会自动加载配置,在配置中包含预设加载名单以及识别模块的完整路径,而在预设加载名单中包含需要进行加载识别模块的进程标识。

2.进程回调注册信息。

具体的说,在内核模块创建进程之前,会先通过驱动模块按照指定端口向内核模块发送进程回调注册信息,并且在回调注册信息中包含指定接收地址。

例如,通过端口api:pssetcreateprocessnotifyroutine注册进程创建/销毁回调;通过端口api:pssetcreatethreadnotifyroutine注册线程创建/销毁回调;通过端口api:pssetloadimagenotifyroutine注册模块加载回调等。当然,本实施方式中仅是举例说明,而并不对指定端口的具体类型进行限定。

3.用户发送的启动指令。

通过内核模块接收用户所发送的启动指令,并且具体是用户通过触发函数ntcreateprocess获取启动指令。

4.为目标进程创建内核对象。

内核模块为目标进程创建内核对象以启动目标进程。

5.进程创建消息。

内核模块为目标进程分配标识,并基于之前所获取的回调注册消息生成目标进程的进程创建消息,将进程创建消息发送给驱动模块的指定地址中,以通知驱动模块目标进程已经创建完成。

6.为目标进程添加标记。

驱动模块在获取到内核模块所发送的进程创建消息后,会为创建完成的目标进程添加标记,添加标记的进程表示后续需要进行识别模块的加载。

7.对添加标记的目标进程加载内核动态库。

在对目标进程加载识别模块之前,内核模块会对添加标记的目标进程加载内核动态库,以保证目标进程基本功能的实现,并且内核动态库具体可以是ntdll.dll,当然本实施方式中仅是举例说明,而并不对所加载的内核动态库的具体类型进行限定。

8.内核动态库加载完成消息。

内核模块在加载完内核动态库之后,会生成内核动态库加载完成消息,并触发回调通知驱动模块内核动态库加载完成。

9.确定目标进程在预设加载名单中。

驱动模块会确定内核动态库加载完成的目标进程的标识是否在之前所配置的预设加载名单中,若是,则表示需要进行后续的识别模块的加载,否则表示不需要进行后续的识别模块的加载。

10.加载识别模块的代码段添加到指定内核函数中。

具体的说,通过驱动模块在确定接收到内核动态库加载完成消息,则将识别模块的代码段添加到指定内核函数中。其中,指定内核函数具体可以是ldrinitializethunk函数。

11.调用指定内核函数为目标进程加载识别模块。

其中,内核模块可以将加载识别模块的代码作为跳板代码,当创建新进程时,内核模块会调用ldrinitializethunk函数,之后进入跳板代码进行识别模块的加载,从而实现每个目标进程分别对应一个识别模块。

步骤s102,通过识别模块确定目标进程所属的应用类型,获取与应用类型所匹配的探针,并将探针部署到目标进程中。

可选的,通过识别模块确定目标进程所属的应用类型,可以包括:通过识别模块确定目标进程所调用的启动函数的类型;根据启动函数的类型确定目标进程所属的应用类型。

其中,如图4所示为本实施例提供的部署探针的时序交互图,并且本实施方式中主要以目标进程属于java应用为例进行的举例说明,如图所示包括:

1.预加载识别模块。

在进程启动时,主要是经过驱动模块smartagentmnt预加载识别模块agentloader。

2.修改启动函数jni_createjavavm。

识别模块会修改启动函数jni_createjavavm,以加入自己的逻辑代码。

3.启动java应用时调用启动函数。

在确定目标进程在启动时,所调用的启动函数jni_createjavavm时,则确定目标进程所属的应用类型为java应用。

4.调整启动参数,将探针配置追加到启动参数内。

识别模块在确定目标进程所属的应用类型为java应用时,由于不同应用分别匹配不同探针,而java应用所匹配的探针为javaagent,从而可以确定目标进程中所需要部署的探针。通过识别模块调整启动参数,并将探针配置追加到启动参数内,例如,将javaagent.jar及javasecuritypolicy追加到启动参数内。

5.完成探针部署。

将探针javaagent部署到目标进程中,从而完成探针的部署。

6.探针流程。

通过探针在目标进程中执行对应的工作,例如,数据采集等,本实施方式中仅是举例说明,而并不对探针的具体工作方式进行限定。

在本发明实施例中,通过在目标进程中加载识别模块,并通过识别模块确定与目标进程所适配的探针,并将所确定的探针自动部署到目标进程中,从而提高了探针部署的效率以及准确率。

实施例二

图5是本发明实施例提供的探针的自动部署方法的流程图,本实施例以上述实施例为基础,在将探针部署到目标进程之后,还包括:通过探针对目标进程进行数据采集,并将采集的数据与探针唯一标识绑定后上报给服务器的步骤。

如图5所示,本公开实施例的方法具体包括:

步骤s201,通过驱动模块确定目标设备上的目标进程启动时,为目标进程加载识别模块。

可选的,通过驱动模块确定目标设备上的目标进程启动时,为目标进程加载识别模块之前,还包括:通过驱动模块按照指定端口向内核模块发送进程回调注册消息,其中,进程回调注册消息中包含指定接收地址;通过内核模块接收到用户针对目标进程的启动指令时,为目标进程创建内核对象以启动目标进程;通过内核模块基于回调注册消息生成目标进程的进程创建消息,并将进程创建消息发送给驱动模块的指定接收地址中。

可选的,通过驱动模块确定目标设备上的目标进程启动时,为目标进程加载识别模块,可以包括:通过驱动模块根据进程创建消息为目标进程添加标记;通过内核模块对添加标记的目标进程加载内核动态库,并生成内核动态库加载完成消息,将内核动态库加载完成消息发送给驱动模块;通过驱动模块在确定接收到内核动态库加载完成消息,则将加载识别模块的代码段添加到指定内核函数中;通过内核模块调用指定内核函数为目标进程加载识别模块。

可选的,将识别模块的代码段添加到指定内核函数中之前,还可以包括:通过驱动模块确定目标进程在预设加载名单中,其中,预设加载名单中包含需要进行加载识别模块的进程标识。

步骤s202,通过识别模块确定目标进程所属的应用类型,获取与应用类型所匹配的探针,并将探针部署到目标进程中。

可选的,通过识别模块确定目标进程所属的应用类型,可以包括:通过识别模块确定目标进程所调用的启动函数的类型;根据启动函数的类型确定目标进程所属的应用类型。

步骤s203,通过探针对目标进程进行数据采集,并将采集的数据与探针的唯一标识绑定后上报给服务器。

可选的,方法还包括:通过监控模块监控探针标识生成模块,并根据监控结果控制探针标识生成模块处于启动状态。

可选的,根据监控结果控制探针标识生成模块处于启动状态之后,还包括:通过处于启动状态下的探针标识生成模块为探针生成探针唯一标识,并将探针唯一标识发送给探针。

具体的说,本实施方式中的监控模块用于实时对探针标识生成模块进行监控,并在确定探针标识生成模块宕机的情况下,会向探针标识生成模块发送启动指令,以控制探针标识生成模块一直处于启动状态。

其中,为了保证探针标识的唯一性,会通过处于启动状态的探针标识生成模块,定时为处于工作状态的探针生成探针唯一标识,并将探针唯一标识发送给所对应的探针。从而通过探针对目标进程进行数据采集,并将采集的数据与探针的唯一标识绑定后上报给服务器。

在本发明实施例中,通过在目标进程中加载识别模块,并通过识别模块确定与目标进程所适配的探针,并将所确定的探针自动部署到目标进程中,从而提高了探针部署的效率以及准确率。并通过探针对目标进程进行数据采集,将采集的数据与探针唯一标识绑定后上报给服务器,以便与服务器对目标进程的相关数据进行准确分析。

实施例三

图6是本发明实施例提供的一种电子设备的结构示意图。图6示出了适用于用来实现本发明实施方式的示例性电子设备412的框图。图6显示的电子设备412仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图6所示,电子设备412以通用计算设备的形式出现。电子设备412的组件可以包括但不限于:一个或者多个处理器416,存储器428,连接不同系统组件(包括存储器428和处理器416)的总线418.

总线418表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。

电子设备412典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备412访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

存储器428用于存储指令。存储器428可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)430和/或高速缓存存储器432。电子设备412可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统434可以用于读写不可移动的、非易失性磁介质(图6未显示,通常称为“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线418相连。存储器428可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块442的程序/实用工具440,可以存储在例如存储器428中,这样的程序模块442包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块442通常执行本发明所描述的实施例中的功能和/或方法。

电子设备412也可以与一个或多个外部设备414(例如键盘、指向设备、显示器424等)通信,还可与一个或者多个使得用户能与该电子设备412交互的设备通信,和/或与使得该电子设备412能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口422进行。并且,电子设备412还可以通过网络适配器420与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器420通过总线418与电子设备412的其它模块通信。应当明白,尽管图6中未示出,可以结合电子设备412使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

处理器416通过运行存储在存储器428中的指令,从而执行探针的自动部署方法:通过驱动模块确定目标设备上的目标进程启动时,为目标进程加载识别模块;通过识别模块确定目标进程所属的应用类型,获取与应用类型所匹配的探针,并将探针部署到目标进程中。

实施例四

本发明实施例还提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行探针的自动部署方法,包括:通过驱动模块确定目标设备上的目标进程启动时,为目标进程加载识别模块;通过识别模块确定目标进程所属的应用类型,获取与应用类型所匹配的探针,并将探针部署到目标进程中。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的探针的自动部署方法。

值得注意的是,上述实施例中所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1