CN113448690A - 监测方法及装置 - Google Patents

监测方法及装置 Download PDF

Info

Publication number
CN113448690A
CN113448690A CN202110993408.3A CN202110993408A CN113448690A CN 113448690 A CN113448690 A CN 113448690A CN 202110993408 A CN202110993408 A CN 202110993408A CN 113448690 A CN113448690 A CN 113448690A
Authority
CN
China
Prior art keywords
monitoring
field
virtual machine
machine kernel
kernel
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.)
Granted
Application number
CN202110993408.3A
Other languages
English (en)
Other versions
CN113448690B (zh
Inventor
马希鹏
刘奖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba China Co Ltd
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba China Co Ltd
Alibaba Cloud Computing Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba China Co Ltd, Alibaba Cloud Computing Ltd filed Critical Alibaba China Co Ltd
Priority to CN202110993408.3A priority Critical patent/CN113448690B/zh
Publication of CN113448690A publication Critical patent/CN113448690A/zh
Application granted granted Critical
Publication of CN113448690B publication Critical patent/CN113448690B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本说明书提供监测方法及装置,其中所述监测方法包括:获取对虚拟机内核进行监测的监测程序文件;根据预设的解析库对所述监测程序文件进行解析,获得与所述虚拟机内核关联的监测字段以及所述监测字段对应的记录字段;将所述监测字段和所述记录字段发送至所述虚拟机内核;所述虚拟机内核将所述监测字段挂载至目标函数,通过所述监测程字段监测所述目标函数对应的目标数据并写入所述记录字段。

Description

监测方法及装置
技术领域
本说明书涉及计算机技术领域,特别涉及监测方法及装置。
背景技术
随着互联网技术的发展,云技术成为了大多数服务平台不可缺少的一部分。虚拟化技术作为云技术的重要组成部分也达到了广泛的应用。出于安全及性能监测的考虑,存在着从宿主机对虚拟机内容的状态进行监测的需求,而由于虚拟机的隔离性,实现监测的目的存在着一定的难度。现有技术中,为了能够实现监测,主要方式是直接修改虚拟机内容,在其中配置监测程序,当虚拟机系统启动时,监测程序自动启动,并通过设定的连接方式将监测数据传输给宿主机,但是这种方案需要对虚拟机内核进行改动,可扩展性低,耗费大量的人力物力,因此亟需一种有效的方案以解决上述问题。
发明内容
有鉴于此,本说明书实施例提供了一种监测方法。本说明书同时涉及一种监测装置,一种监测系统,一种计算设备,一种计算机可读存储介质,以及一种计算机程序,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种监测方法,包括:
获取对虚拟机内核进行监测的监测程序文件;
根据预设的解析库对所述监测程序文件进行解析,获得与所述虚拟机内核关联的监测字段以及所述监测字段对应的记录字段;
将所述监测字段和所述记录字段发送至所述虚拟机内核;
所述虚拟机内核将所述监测字段挂载至目标函数,通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段。
可选地,所述获取对虚拟机内核进行监测的监测程序文件,包括:
获取目标格式的至少一个初始监测程序文件,并将所述至少一个初始监测程序文件存储至监测节点;
在接收到针对所述虚拟机内核进行监测的监测请求的情况下,在所述监测节点中提取与所述监测请求对应的初始监测程序文件作为所述监测程序文件。
可选地,所述根据预设的解析库对所述监测程序文件进行解析,获得与所述虚拟机内核关联的监测字段以及所述监测字段对应的记录字段步骤执行之前,还包括:
确定所述监测程序文件对应的程序类型,并预加载与所述程序类型对应的所述解析库。
可选地,所述根据预设的解析库对所述监测程序文件进行解析,获得与所述虚拟机内核关联的监测字段以及所述监测字段对应的记录字段,包括:
根据预设的解析库对所述监测程序文件进行解析,获得目标对象文件;
识别所述目标对象文件中包含的初始字段,根据识别结果确定与所述虚拟机内核关联的所述监测字段;
在所述目标对象文件中确定与所述监测字段具有映射关系的初始字段,作为所述记录字段。
可选地,所述将所述监测字段和所述记录字段发送至所述虚拟机内核,包括:
确定与所述虚拟机内核之间的通信方式;
基于所述通信方式对所述监测字段和所述记录字段对应的系统调用进行封装,根据封装结果生成监测信息;
将所述监测信息发送至所述虚拟机内核。
可选地,所述虚拟机内核将所述监测字段挂载至目标函数,通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段,包括:
所述虚拟机内核执行所述监测信息对应的系统调用,并根据执行结果确定所述目标函数,将所述监测字段挂载至所述目标函数,通过所述监测字段监测所述目标函数对应的所述目标数据,并将所述目标数据写入所述记录字段。
可选地,所述虚拟机内核将所述监测字段挂载至目标函数,包括:
所述虚拟机内核接收所述监测字段,并确定所述监测字段的字段标识,根据所述字段标识确定与所述监测字段关联的所述目标函数,将所述监测字段挂载至所述目标函数;
相应的,所述通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段,包括:
在所述目标函数被调用的情况下,通过所述监测字段监测所述目标函数对应的所述目标数据,并将所述目标数据写入所述记录字段。
可选地,所述通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段步骤执行之后,还包括:
在接收到监测停止指令的情况下,根据所述预设的解析库对所述监测程序文件进行解析,获得数据读取字段;
将所述数据读取字段发送至所述虚拟机内核;
所述虚拟机内核根据所述数据读取字段读取所述记录字段中包含的目标数据并输出。
可选地,所述将所述数据读取字段发送至所述虚拟机内核,包括:
基于所述通信方式对所述数据读取字段对应的系统调用进行封装获得数据读取信息,并将所述数据读取信息发送至所述虚拟机内核;
相应的,所述虚拟机内核根据所述数据读取字段读取所述记录字段中包含的目标数据并输出,包括:
所述虚拟机内核执行所述数据读取信息对应的系统调用,根据执行结果获得所述记录字段中包含的目标数据并输出。
根据本说明书实施例的第二方面,提供了一种监测装置,包括:
获取模块,被配置为获取对虚拟机内核进行监测的监测程序文件;
解析模块,被配置为根据预设的解析库对所述监测程序文件进行解析,获得与所述虚拟机内核关联的监测字段以及所述监测字段对应的记录字段;
发送模块,被配置为将所述监测字段和所述记录字段发送至所述虚拟机内核;
监测模块,被配置为所述虚拟机内核将所述监测字段挂载至目标函数,通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段。
根据本说明书实施例的第三方面,提供了一种监测系统,包括:
监测模块和虚拟机内核;
所述监测模块,用于获取对所述虚拟机内核进行监测的监测程序文件;根据预设的解析库对所述监测程序文件进行解析,获得与所述虚拟机内核关联的监测字段以及所述监测字段对应的记录字段;将所述监测字段和所述记录字段发送至所述虚拟机内核;
所述虚拟机内核,用于将所述监测字段挂载至目标函数,通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段。
根据本说明书实施例的第四方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令时实现所述监测方法的步骤。
根据本说明书实施例的第五方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现所述监测方法的步骤。
根据本说明书实施例的第六方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行所述监测方法的步骤。
本说明书提供的监测方法,在获取到对虚拟机内核进行监测的监测程序文件后,可以基于预设的解析库对监测程序文件进行解析,以获得能够对虚拟机内核相关函数进行监测的监测字段以及记录监测数据的记录字段,之后将监测字段和记录字段发送至虚拟机内核,实现监测程序的注入,虚拟机内核接收到监测字段后,可以将其挂载至对应的目标函数,以实现在虚拟机内核中的目标函数被调用的情况下,可以通过监测字段实现监测目标函数对应的目标数据,并将目标数据写入记录字段达到监测的目的,实现了程序注入的方式完成虚拟机内核的监测,有效的节省了资源消耗,同时是在宿主机实现对虚拟机内核的完整控制,能够随时对监测字段进行调整,进一步保证了监测的灵活性和通用性。
附图说明
图1是本说明书一实施例提供的一种监测方法的示意图;
图2是本说明书一实施例提供的一种监测方法的流程图;
图3是本说明书一实施例提供的一种应用于虚拟机监测场景中的监测方法的处理流程图;
图4是本说明书一实施例提供的一种监测装置的结构示意图;
图5是本说明书一实施例提供的一种监测系统的结构示意图;
图6是本说明书一实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
虚拟机:(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的几乎所有工作在虚拟机中都能够实现。
eBPF程序:一种在Linux内核中运行的沙盒程序,无需更改内核源代码或加载内核模块即可运行。通过使Linux内核可编程,基础架构软件可以利用现有的层,使它们更加智能和功能丰富,而无需继续为系统增加额外的复杂性层。
VMM:(Virtual Machine Monitor,虚拟机监测程序)是虚拟机系统的核心任务监测系统,可用于调度任务、负载均衡、向管理员报告软硬件故障,并广泛控制系统的使用情况。
宿主机:是指承载虚拟机的主机,如计算机上安装虚拟机的情况下,该计算机即为虚拟机的宿主机。
在本说明书中,提供了一种监测方法,本说明书同时涉及一种监测装置,一种监测系统,一种计算设备,一种计算机可读存储介质,以及一种计算机程序,在下面的实施例中逐一进行详细说明。
实际应用中,虚拟机是云技术的重要组成部分,通常会在一台宿主机上启动大量的虚拟机,并在虚拟机内运行用户进程。为了能够保证用户进程可以稳定运行,在运行时对虚拟机的运行情况进行实时安全监测,是一个重要的研究方向。由于虚拟机运行时的内核信息对宿主机天然是不透明的,为了实现对虚拟机内核信息的监测,需要在虚拟机运行时通过监测程序收集虚拟机内核信息,并在宿主机和虚拟机之间建立虚拟机内核信息的传输通道。现有技术中的监测方式大多数需要预先配置监测程序,且需要对虚拟机内核进行修改,不仅耗时耗力还会降低监测通用性,因此亟需一种有效的方案以解决上述问题。
有鉴于此,参见图1所示的监测方法的示意图,为了能够对虚拟机内核的相关参数进行加监测,可以预先编译能够注入虚拟机内核的监测程序文件,本实施例可以采用eBPF程序作为监测程序文件,通过C语言编写,形成ELF格式的.o文件,之后注入需要监测的虚拟机对应的VMM,通过预设的解析库对eBPF程序文件进行解析,获得监测字段和记录字段,并将其封装为能够注入虚拟机的系统调用消息,之后通过virtio-vsock通信传输到虚拟机内核,虚拟机内核通过执行该系统调用,实现将eBPF程序(监测字段)挂载到对应的目标函数,同时将监测到的目标数据写入记录字段,实现对虚拟机内核的参数进行监测,有效的节省了资源消耗,同时是在宿主机实现对虚拟机内核的完整控制,能够随时对监测字段进行调整,进一步保证了监测的灵活性和通用性。
图2示出了根据本说明书一实施例提供的一种监测方法的流程图,具体包括以下步骤:
步骤S202,获取对虚拟机内核进行监测的监测程序文件。
具体的,监测程序文件具体是指用于监测虚拟机内核中的相关数据的程序,通过监测程序文件可以选择性的监测相关数据。如虚拟机内核中包含三个函数,分别为函数1,函数2和函数3,当需要对函数2和函数3分别对应的相关数据进行监测的情况下,此时可以根据需求编译对应函数2的程序字段和函数3对应程序字段,并结合程序字段对应的记录字段,协议字段和版本字段等生成监测程序文件,之后通过VMM即可将相应的程序字段注入虚拟机内核完成对函数2和函数3分别对应的相关数据的监测,在此过程中,将不会对函数1产生干扰,且可以不对函数1进行监测。
基于此,获取到的监测程序文件是根据监测需求所编译的,并且能够对虚拟机内核中的函数对应的数据进行监测的程序字段是决定监测内容的基础,因此在编译监测程序文件时,开发人员可以根据当前需要监测的虚拟机涉及到的相关服务进行编译该监测程序文件;监测程序文件可以采用eBPF程序实现,即通过C语言编写eBPF程序,且在独立编译环境下完成,以形成ELF格式的.o文件,用于存储在虚拟机的宿主机内或者与虚拟机内核相连的安全监测中心,当需要对虚拟机内核进行监测的情况下,即可从宿主机或者安全监测中心中提取eBPF程序文件,用于后续对虚拟机内核进行监测处理。
进一步的,在获取能够监测虚拟机内核的监测程序文件的过程中,考虑到虚拟机内核中包含的函数较多,且不同场景下需要监测的数据也不相同,为了能够有效的提高监测效率,以及减少资源的消耗,可以根据监测需求选择合适的监测程序文件完成后续的监测处理操作,本实施例中,具体实现方式如下所述:
获取目标格式的至少一个初始监测程序文件,并将所述至少一个初始监测程序文件存储至监测节点;
在接收到针对所述虚拟机内核进行监测的监测请求的情况下,在所述监测节点中提取与所述监测请求对应的初始监测程序文件作为所述监测程序文件。
具体的,目标格式具体是指监测程序文件对应的格式,可以是ELF格式;初始监测程序文件具体是指对应不同监测需求的监测程序文件,如监测虚拟机内核中函数1和函数2对应数据的监测程序封装为一个初始监测程序文件,监测虚拟机内核中函数1和函数3对应数据的监测程序封装为一个初始监测程序文件,即可以根据不同的监测需求预先创建出不同的初始监测程序文件;相应的,监测节点具体是指用于存储初始监测程序文件的节点,包括但不限于虚拟机的宿主机,或者与虚拟机连接的安全监测中心等,本实施例在此不作任何限定。
基于此,为了能够适用更多的监测需求,可以在编译监测程序文件时,根据不同的监测需求创建对应目标格式的多个初始监测程序文件,并将编译完成的各个初始监测程序文件存储到监测节点,用于在需要对虚拟机内核进行监测时,从监测节点提取能够使用的监测程序文件。进一步的,在接收到针对虚拟机内核进行监测的监测请求的情况下,说明维护虚拟机的服务方需要监测虚拟机内核的相关数据,则此时可以根据监测请求确定服务方的监测需求,从而在监测节点中提取与监测需求对应的初始监测程序文件,并将其作为监测程序文件,以用于后续对虚拟机内核进行监测。
实际应用中,由于虚拟机内核中包含的函数较多,为了能够支持不同场景下的监测需求,可以在监测虚拟机内核前,预先针对各个函数编译好对应的监测程序文件,从而支持监测服务的完成,同时维护虚拟机内核的正常运行。
综上,通过针对监测需求预先设置不同的初始监测程序文件,实现针对任意监测场景都可以快速的加载对应的监测程序文件,以支持后续的监测处理操作,从而提高对虚拟机内核的监测效率。
步骤S204,根据预设的解析库对所述监测程序文件进行解析,获得与所述虚拟机内核关联的监测字段以及所述监测字段对应的记录字段。
具体的,在上述获取到监测程序文件的基础上,进一步的,考虑到监测程序文件是能够注入虚拟机内核的程序,且监测程序文件中还将包含用于传输和通信的其他字段,因此可以使用预设的解析库对监测程序文件进行解析,以获得能够对虚拟机内核进行监测的监测字段以及记录监测数据的记录字段,其中,预设的解析库具体是指能够对监测程序文件进行解析为目标对象文件的库,且解析库与监测程序文件具有对应关系,以实现将监测文件程序翻译为VMM能够识别的机器码;如监测程序文件为eBPF程序文件,相应的,解析库即为能够对eBPF程序文件进行解析的库。所述监测字段具体是指能够对虚拟机内核中的函数调用情况进行监测的字段,相应的,记录字段具体是指能够对监测到的数据进行记录的字段,用于向监测方进行反馈。
进一步的,考虑到监测程序文件在注入虚拟机内核兼容的问题,在解析监测程序文件之前,可以将能够解析监测程序文件的解析库集成到VMM当中,以实现支持VMM完成解析和监测处理,本实施例中,具体实现方式如下所述:
确定所述监测程序文件对应的程序类型,并预加载与所述程序类型对应的所述解析库。
具体的,程序类型具体是指监测程序文件所属的程序对应的类型。当确定监测程序文件对应的程序类型后,为了能够通过VMM对监测程序文件进行加载处理,此时可以将程序类型对应的解析库集成到VMM当中,以支持VMM解析监测程序文件,方便后续向虚拟机内核注入相应的监测字段和记录字段,用于完成对虚拟机内核的监测处理。
进一步的,在预加载完成能够解析监测程序文件的解析库后,即可对其进行解析处理,以获得能够完成对虚拟机内核进行监测的监测字段和记录字段,而在此过程中,由于监测程序文件中包含大量的字段内容,因此需要进行筛选处理,本实施例中,具体实现方式如下所述:
根据预设的解析库对所述监测程序文件进行解析,获得目标对象文件;
识别所述目标对象文件中包含的初始字段,根据识别结果确定与所述虚拟机内核关联的所述监测字段;
在所述目标对象文件中确定与所述监测字段具有映射关系的初始字段,作为所述记录字段。
具体的,目标对象文件具体是指将监测程序文件解析为能够识别的文件,该文件中包含大量的字段,即初始字段,每个字段均对应不同功能,初始字段包括但不限于监测字段,记录字段,协议字段及版本字段等。
基于此,在获得监测程序文件的基础上,此时即可选择与该程序文件对应的解析库对其进行处理,以获得能够识别的目标对象文件;之后对目标对象文件中包含的字段进行识别,获得初始字段,由于初始字段包含的类型较多,为了能够完成对虚拟机内核的监测处理,此时可以在识别出的初始字段中筛选出与虚拟机内核关联的字段作为监测字段,同时确定监测字段具有映射关系的字段作为记录字段,以用于后续的监测处理操作。
实际应用中,在确定与虚拟机内核关联的监测字段的过程中,由于监测字段是用于对虚拟机内核中的函数的数据进行监测的字段,则可以直接选择与虚拟机内核中的函数对应的字段作为监测字段,即可完成后续的监测处理操作。
举例说明,提供云存储服务的服务方为了能够对每台宿主机中的虚拟机进行监测,通过C语言编写了eBPF程序文件,同时将eBPF程序对应的解析库集成到VMM当中;基于此,当VMM接收到eBPF程序文件后,可以按照预加载的解析库对eBPF程序文件进行解析,将其解析为BPF对象文件,最后对BPF对象文件中包含的字段进行识别,根据识别处理结果确定能够对虚拟机内核中的函数1,函数2和函数3进行监测的程序字段1,程序字段2和程序字段3;同时在BPF对象文件中提取程序字段1对应的记录字段1,程序字段2对应的记录字段2和程序字段对应的记录字段3,以用于后续对虚拟机内核中各个函数对应的数据进行监测和记录。
综上,通过采用识别的方式确定监测字段和记录字段,可以保证获得的字段都是能够对虚拟机内核进行监测的字段,并且通过集成解析库的方式,无需对虚拟机内核进行改造,进一步节省了监测虚拟机内核时的资源消耗。
步骤S206,将所述监测字段和所述记录字段发送至所述虚拟机内核。
具体的,在上述获得监测字段和记录字段之后,由于监测字段和记录字段都是通过解析库解析监测程序文件获得的,而解析库又是集成在宿主机的VMM上的,因此可以确定此时获得的监测字段和记录字段都是能够注入虚拟机内核的字段,则此时直接将监测字段和记录字段发送至虚拟机内核用于监测相应的数据即可。
进一步的,在向虚拟机内核发送监测字段和记录字段的过程中,由于虚拟机内核存在于宿主机,而监测字段和记录字段都是在虚拟机内核外通过管理虚拟机的VMM解析获得的,因此若要成功完成字段的注入,则需要基于二者之间的通信方式对监测字段和记录字段进行封装,本实施例中,具体实现方式如下所述:
确定与所述虚拟机内核之间的通信方式;
基于所述通信方式对所述监测字段和所述记录字段对应的系统调用进行封装,根据封装结果生成监测信息;
将所述监测信息发送至所述虚拟机内核。
具体的,通信方式具体是指虚拟机与宿主机之间的通信方式,包括但不限于virtio-vsock通信;相应的,系统调用具体是指对应程序字段及其对应的记录字段的调用请求,虚拟机内核通过该系统调用能够完成监测字段的挂载,以及记录字段的数据记录;监测信息具体是指采用所述通信方式对系统调用进行封装的信息,且该信息能够传输到虚拟机内核,即被虚拟机内核所接收。
基于此,为了能够保证向虚拟机内核发送的监测字段和记录字段能够被虚拟机内核所接受,此时可以确定宿主机与虚拟机内核之间的通信方式,之后通过VMM分别加载监测字段和记录字段对应的系统调用,并结合通信方式将系统调用封装为能够被虚拟机内核识别的监测信息,最后将监测信息发送至虚拟机内核即可,以实现虚拟机内核可以执行监测信息中的系统调用,实现监测字段和记录字段的挂载,为后续监测布置好监测环境。
沿用上例,确定宿主机与虚拟机之间通过virtio-vsock建立连接,当需要将程序字段和记录字段注入虚拟机内核时,可以通过VMM分别加载每个程序字段和每个记录字段对应的系统调用,并结合virtio-vsock连接方式将各个系统调用封装为监测信息,通过virtio-vsock通道再将各个监测信息发送至虚拟机内核即可,以实现虚拟机内核可以接收到各个监测信息后,执行其中的系统调用完成程序字段和记录字段的挂载,方便后续进行数据的监测。
综上,通过采用与虚拟机内核之间的通信方式进行监测字段和记录字段的封装处理,以获得监测信息,有效的保证了监测字段和记录字段可以成功的注入虚拟机内核,以为后续监测数据打下基础,提高后续监测效率。
步骤S208,所述虚拟机内核将所述监测字段挂载至目标函数,通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段。
具体的,在上述将监测字段和记录字段注入虚拟机内核之后,进一步的,虚拟机内核在接收到监测字段和记录字段后,可以确定需要监测的目标函数,并将监测字段挂载到对应的目标函数上,以实现后续目标函数被调用的情况下,可以通过监测字段监测目标函数对应的目标数据,并将监测到的目标数据写入记录字段,实现对目标函数的实时监测。
进一步的,由于监测字段和记录字段是封装为监测信息传输到虚拟机内核中的,因此虚拟机内核将能够识别监测字段和记录字段对应的系统调用,通过执行系统调用的方式即可实现监测,本实施例中,具体实现方式如下所述:
所述虚拟机内核执行所述监测信息对应的系统调用,并根据执行结果确定所述目标函数,将所述监测字段挂载至所述目标函数,通过所述监测字段监测所述目标函数对应的所述目标数据,并将所述目标数据写入所述记录字段。
具体的,虚拟机内核在接收到监测信息后,通过执行各个监测信息对应的系统调用,即可确定对应监测字段的目标函数,此时即可将监测字段挂载至目标函数,实现在目标函数被调用的情况下,通过监测字段对目标函数对应的目标数据进行监测,同时将监测到的目标数据记录到记录字段中,方便后续输出形成良好的监测环境。
更进一步的,在监测的过程中,由于不同的监测字段需要对不同的函数对应的数据进行监测,因此为了避免挂载错误或失败,可以通过确定监测字段和目标函数的对应关系完成挂载,本实施例中,具体实现方式如下所述:
所述虚拟机内核接收所述监测字段,并确定所述监测字段的字段标识,根据所述字段标识确定与所述监测字段关联的所述目标函数,将所述监测字段挂载至所述目标函数;在所述目标函数被调用的情况下,通过所述监测字段监测所述目标函数对应的所述目标数据,并将所述目标数据写入所述记录字段。
具体的,字段标识具体是指监测字段对应的唯一标识;基于此,为了能够对虚拟机内核中各个目标函数对应的目标数据进行监测,虚拟机内核在接收到监测字段后,可以通过确定监测字段的字段标识的标识,确定监测字段对应的程序加载类型,之后再根据程序加载类型与各个函数的对应关系,即可确定各个监测字段与目标函数的对应关系,之后将监测字段挂载至对应的目标函数,即可完成监测程序的注入,之后在目标函数被调用的情况下,即可自动通过监测字段完成对目标函数对应的目标数据的监测,同时可以将监测到的数据写入监测字段对应的记录字段,用于后续输出反馈监测详情。
沿用上例,当将各个程序字段及其对应的记录字段的监测信息发送至虚拟机内核后,虚拟机内核通过执行各个监测信息对应的系统调用,实现将各个程序字段和记录字段加载到虚拟机内核中,之后虚拟机内核可以通过识别每个程序字段的字段标识,确定程序字段1对应程序加载类型A,程序字段2对应程序加载类型B,程序字段3对应程序加载类型C,同时确定程序加载类型A对应函数1,确定程序加载类型B对应函数2,确定程序加载类型C对应函数3。则此时可以基于程序加载类型A对应的挂载方法将程序字段1挂载到函数1内,基于程序加载类型B对应的挂载方法将程序字段2挂载到函数2内,基于程序加载类型C对应的挂载方法将程序字段3挂载到函数3内,即完成eBPF程序注入虚拟机内核。
进一步的,当虚拟机内核中的函数1,函数2和函数3被调用的情况下,即可通过程序字段1,程序字段2和程序字段3对相应的函数对应的数据进行监测,监测函数被调用次数,被调用信息等数据,之后将监测到的数据写入记录字段即可,以用于后续输出反馈监测详情。
综上,针对不同的监测字段采用不同的挂载方法挂载到不同的目标函数上,可以有效的保证监测字段和目标函数的对应关系,以支持对目标数据进行精准的监测,从而分析虚拟机内核的被使用详情。
此外,在将监测程序文件注入虚拟机内核的过程中,还可以在安全监测中心(非宿主机)解析监测程序文件,通过长连接通信将解析结果再发送至VMM,之后VMM再分别解析得到的监测字段和记录字段发送到虚拟机内核,以完成程序的注入,实际应用中,注入监测程序文件的过程可以根据实际应用场景选择,本实施例在此不作任何限定。
更进一步的,当需要获取对虚拟机内核进行监测的监测结果时,由于监测结构都存储与虚拟机内核中的记录字段中,为了能够获知监测详情,还需要向虚拟机内核注入与监测字段相同格式的数据读取字段,以完成从记录字段中读取监测结果,本实施例中,具体实现如步骤S2082至步骤S2086:
步骤S2082,在接收到监测停止指令的情况下,根据所述预设的解析库对所述监测程序文件进行解析,获得数据读取字段。
具体的,监测停止指令具体是指监测方发起的停止对虚拟机内核进行监测的指令,通过监测指令可以从监测程序文件中解析数据读取字段,相应的,数据读取字段具体是指监测程序文件中能够完成监测数据读取的字段,即通过该字段可以在虚拟机内核中的记录字段中读取监测数据并输出。
基于此,在接收到监测停止指令的情况下,说明监测方需要对监测情况进行获知,则此时可以基于监测停止指令结合预设的解析库对监测程序文件进行解析,以获得数据读取字段,用于后续注入虚拟机内核完成监测数据的读取。
需要说明的是,通过解析库对监测程序文件解析获得数据读取字段的处理过程,以上述获得监测字段和记录字段的处理过程相类似,相同或相应的描述内容均可参见上述实施例的描述内容,本实施例在此不作过多赘述。
步骤S2084,将所述数据读取字段发送至所述虚拟机内核。
具体的,在得到数据读取字段后,即可将数据读取字段发送至虚拟机内核,以实现后续对监测数据的读取,而在此过程中,为了能够实现数据读取字段成功发送至虚拟机内核,可以基于通信方式对其进行封装,本实施例中,具体实现方式如下所述:
基于所述通信方式对所述数据读取字段对应的系统调用进行封装获得数据读取信息,并将所述数据读取信息发送至所述虚拟机内核。
具体的,为了能够向虚拟机内核发送数据读取字段,此时可以通过VMM加载数据读取字段对应的系统调用,并结合通信方式将系统调用封装为能够被虚拟机内核识别的数据读取信息,最后将数据读取信息发送至虚拟机内核即可,以实现虚拟机内核可以执行数据读取信息中的系统调用,实现对已经监测到的数据进行读取。
步骤S2086,所述虚拟机内核根据所述数据读取字段读取所述记录字段中包含的目标数据并输出。
具体的,在上述将数据读取字段发送到虚拟机内核中之后,即可通过数据读取字段实现对记录字段中包含的目标数据进行读取并输入,以使得监测方可以了解监测详情。
进一步的,虚拟机内核在接收到数据读取字段后,也将执行数据读取字段对应的系统调用,以此实现对记录字段中的目标数据进行读取并输入,从而完成对虚拟机内核的监测处理,本实施例中,具体实现方式如下所述:
所述虚拟机内核执行所述数据读取信息对应的系统调用,根据执行结果获得所述记录字段中包含的目标数据并输出。
具体的,虚拟机内核在接收到数据读取信息后,通过执行数据读取信息对应的系统调用,即可实现将数据读取字段注入虚拟机内核,同时数据读取字段将关联各个记录字段,因此在系统调用被执行的过程中,数据读取字段即可实现在记录字段中读取目标数据,并输入虚拟机内核,以实现宿主机对虚拟机内核中的监测数据输出并获取,从而了解虚拟机内核的监测详情。
沿用上例,当需要对虚拟机内核中记录字段1,记录字段2和记录字段3中监测到的数据进行读取时,此时可以基于监测方的监测请求解析eBPF程序获得数据读取字段1,数据读取字段2和数据读取字段3,之后将各个数据读取字段封装为数据读取信息注入虚拟机内核,虚拟机内核通过执行各个数据读取信息对应的系统调用,实现基于数据读取字段1完成对记录字段1中的监测数据读取,基于数据读取字段2完成对记录字段2中的监测数据读取,基于数据读取字段3完成对记录字段3中的监测数据读取,之后并将读取到的监测数据输入,此时通过分析监测数据即可确定函数1,函数2和函数3的调用详情,从而分析出当前监测的虚拟机的工作详情,方便监测方维护虚拟机运行环境。
综上,通过采用相同的处理方式进行监测数据的读取,实现在不破坏虚拟机的情况下完成监测任务,进一步保证了监测环境的安全性。
本说明书提供的监测方法,在获取到对虚拟机内核进行监测的监测程序文件后,可以基于预设的解析库对监测程序文件进行解析,以获得能够对虚拟机内核相关函数进行监测的监测字段以及记录监测数据的记录字段,之后将监测字段和记录字段发送至虚拟机内核,实现监测程序的注入,虚拟机内核接收到监测字段后,可以将其挂载至对应的目标函数,以实现在虚拟机内核中的目标函数被调用的情况下,可以通过监测字段实现监测目标函数对应的目标数据,并将目标数据写入记录字段达到监测的目的,实现了程序注入的方式完成虚拟机内核的监测,有效的节省了资源消耗,同时是在宿主机实现对虚拟机内核的完整控制,能够随时对监测字段进行调整,进一步保证了监测的灵活性和通用性。
下述结合附图3,以本说明书提供的监测方法在虚拟机监测场景中的应用为例,对所述监测方法进行进一步说明。其中,图3示出了本说明书一实施例提供的一种应用于虚拟机监测场景中的监测方法的处理流程图,具体包括以下步骤:
步骤S302,获取对虚拟机内核进行监测的eBPF程序文件。
步骤S304,根据预设的解析库对eBPF程序文件进行解析,获得BPF对象文件。
步骤S306,在BPF对象文件中识别出程序字段,以及程序字段对应的记录字段。
步骤S308,确定宿主机与虚拟机内核之间的通信方式,并基于通信方式对程序字段和记录字段对应的系统调用进行封装,获得监测信息。
步骤S310,将监测信息通过通信方式对应的通信通道发送至虚拟机内核。
步骤S312,虚拟机内核执行监测信息对应的系统调用,根据执行结果确定目标函数。
步骤S314,虚拟机内核将程序字段挂载至目标函数,并通过监测字段监测目标函数对应的目标数据,将目标数据写入记录字段。
步骤S316,获取数据读取字段,并基于通信方式对数据读取字段对应的系统调用进行封装获得数据读取信息。
步骤S318,将数据读取信息通过通信方式对应的通信通道发送至虚拟机内核。
步骤S320,虚拟机内核执行数据读取信息对应的系统调用,根据执行结果获得记录字段中的目标数据并输入。
本说明书提供的监测方法,实现了程序注入的方式完成虚拟机内核的监测,有效的节省了资源消耗,同时是在宿主机实现对虚拟机内核的完整控制,能够随时对监测字段进行调整,进一步保证了监测的灵活性和通用性。
与上述方法实施例相对应,本说明书还提供了监测装置实施例,图4示出了本说明书一实施例提供的一种监测装置的结构示意图。如图4所示,该装置包括:
获取模块402,被配置为获取对虚拟机内核进行监测的监测程序文件;
解析模块404,被配置为根据预设的解析库对所述监测程序文件进行解析,获得与所述虚拟机内核关联的监测字段以及所述监测字段对应的记录字段;
发送模块406,被配置为将所述监测字段和所述记录字段发送至所述虚拟机内核;
监测模块408,被配置为所述虚拟机内核将所述监测字段挂载至目标函数,通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段。
一个可选的实施例中,所述获取模块402进一步被配置为:
获取目标格式的至少一个初始监测程序文件,并将所述至少一个初始监测程序文件存储至监测节点;在接收到针对所述虚拟机内核进行监测的监测请求的情况下,在所述监测节点中提取与所述监测请求对应的初始监测程序文件作为所述监测程序文件。
一个可选的实施例中,所述监测装置,还包括:
加载模块,被配置为确定所述监测程序文件对应的程序类型,并预加载与所述程序类型对应的所述解析库。
一个可选的实施例中,所述解析模块404进一步被配置为:
根据预设的解析库对所述监测程序文件进行解析,获得目标对象文件;识别所述目标对象文件中包含的初始字段,根据识别结果确定与所述虚拟机内核关联的所述监测字段;在所述目标对象文件中确定与所述监测字段具有映射关系的初始字段,作为所述记录字段。
一个可选的实施例中,所述发送模块406进一步被配置为:
确定与所述虚拟机内核之间的通信方式;基于所述通信方式对所述监测字段和所述记录字段对应的系统调用进行封装,根据封装结果生成监测信息;将所述监测信息发送至所述虚拟机内核。
一个可选的实施例中,所述监测模块408进一步被配置为:
所述虚拟机内核执行所述监测信息对应的系统调用,并根据执行结果确定所述目标函数,将所述监测字段挂载至所述目标函数,通过所述监测字段监测所述目标函数对应的所述目标数据,并将所述目标数据写入所述记录字段。
一个可选的实施例中,所述监测模块408进一步被配置为:
所述虚拟机内核接收所述监测字段,并确定所述监测字段的字段标识,根据所述字段标识确定与所述监测字段关联的所述目标函数,将所述监测字段挂载至所述目标函数;
相应的,所述通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段,包括:在所述目标函数被调用的情况下,通过所述监测字段监测所述目标函数对应的所述目标数据,并将所述目标数据写入所述记录字段。
一个可选的实施例中,所述监测装置,还包括:
读取模块,被配置为在接收到监测停止指令的情况下,根据所述预设的解析库对所述监测程序文件进行解析,获得数据读取字段;将所述数据读取字段发送至所述虚拟机内核;所述虚拟机内核根据所述数据读取字段读取所述记录字段中包含的目标数据并输出。
一个可选的实施例中,所述读取模块进一步被配置为:基于所述通信方式对所述数据读取字段对应的系统调用进行封装获得数据读取信息,并将所述数据读取信息发送至所述虚拟机内核;
相应的,所述虚拟机内核根据所述数据读取字段读取所述记录字段中包含的目标数据并输出,包括:所述虚拟机内核执行所述数据读取信息对应的系统调用,根据执行结果获得所述记录字段中包含的目标数据并输出。
本说明书提供的监测装置,在获取到对虚拟机内核进行监测的监测程序文件后,可以基于预设的解析库对监测程序文件进行解析,以获得能够对虚拟机内核相关函数进行监测的监测字段以及记录监测数据的记录字段,之后将监测字段和记录字段发送至虚拟机内核,实现监测程序的注入,虚拟机内核接收到监测字段后,可以将其挂载至对应的目标函数,以实现在虚拟机内核中的目标函数被调用的情况下,可以通过监测字段实现监测目标函数对应的目标数据,并将目标数据写入记录字段达到监测的目的,实现了程序注入的方式完成虚拟机内核的监测,有效的节省了资源消耗,同时是在宿主机实现对虚拟机内核的完整控制,能够随时对监测字段进行调整,进一步保证了监测的灵活性和通用性。
上述为本实施例的一种监测装置的示意性方案。需要说明的是,该监测装置的技术方案与上述的监测方法的技术方案属于同一构思,监测装置的技术方案未详细描述的细节内容,均可以参见上述监测方法的技术方案的描述。
与上述方法实施例相对应,本说明书还提供了监测系统实施例,图5示出了本说明书一实施例提供的一种监测系统的结构示意图。如图5所示,监测系统500包括监测模块510和虚拟机内核520;
所述监测模块510,用于获取对所述虚拟机内核进行监测的监测程序文件;根据预设的解析库对所述监测程序文件进行解析,获得与所述虚拟机内核关联的监测字段以及所述监测字段对应的记录字段;将所述监测字段和所述记录字段发送至所述虚拟机内核;
所述虚拟机内核520,用于将所述监测字段挂载至目标函数,通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段。
一个可选的实施例中,所述监测模块510,还用于获取目标格式的至少一个初始监测程序文件,并将所述至少一个初始监测程序文件存储至监测节点;在接收到针对所述虚拟机内核进行监测的监测请求的情况下,在所述监测节点中提取与所述监测请求对应的初始监测程序文件作为所述监测程序文件。
一个可选的实施例中,所述监测模块510,还用于确定所述监测程序文件对应的程序类型,并预加载与所述程序类型对应的所述解析库。
一个可选的实施例中,所述监测模块510,还用于根据预设的解析库对所述监测程序文件进行解析,获得目标对象文件;识别所述目标对象文件中包含的初始字段,根据识别结果确定与所述虚拟机内核关联的所述监测字段;在所述目标对象文件中确定与所述监测字段具有映射关系的初始字段,作为所述记录字段。
一个可选的实施例中,所述监测模块510,还用于确定与所述虚拟机内核之间的通信方式;基于所述通信方式对所述监测字段和所述记录字段对应的系统调用进行封装,根据封装结果生成监测信息;将所述监测信息发送至所述虚拟机内核。
一个可选的实施例中,所述虚拟机内核520,还用于执行所述监测信息对应的系统调用,并根据执行结果确定所述目标函数,将所述监测字段挂载至所述目标函数,通过所述监测字段监测所述目标函数对应的所述目标数据,并将所述目标数据写入所述记录字段。
一个可选的实施例中,所述虚拟机内核520,还用于接收所述监测字段,并确定所述监测字段的字段标识,根据所述字段标识确定与所述监测字段关联的所述目标函数,将所述监测字段挂载至所述目标函数;相应的,所述通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段,包括:在所述目标函数被调用的情况下,通过所述监测字段监测所述目标函数对应的所述目标数据,并将所述目标数据写入所述记录字段。
一个可选的实施例中,所述监测模块510,还用于在接收到监测停止指令的情况下,根据所述预设的解析库对所述监测程序文件进行解析,获得数据读取字段;将所述数据读取字段发送至所述虚拟机内核;
所述虚拟机内核520,还用于根据所述数据读取字段读取所述记录字段中包含的目标数据并输出。
一个可选的实施例中,所述监测模块510,还用于基于所述通信方式对所述数据读取字段对应的系统调用进行封装获得数据读取信息,并将所述数据读取信息发送至所述虚拟机内核;相应的,所述虚拟机内核520,还用于执行所述数据读取信息对应的系统调用,根据执行结果获得所述记录字段中包含的目标数据并输出。
本说明书提供的监测系统,在获取到对虚拟机内核进行监测的监测程序文件后,可以基于预设的解析库对监测程序文件进行解析,以获得能够对虚拟机内核相关函数进行监测的监测字段以及记录监测数据的记录字段,之后将监测字段和记录字段发送至虚拟机内核,实现监测程序的注入,虚拟机内核接收到监测字段后,可以将其挂载至对应的目标函数,以实现在虚拟机内核中的目标函数被调用的情况下,可以通过监测字段实现监测目标函数对应的目标数据,并将目标数据写入记录字段达到监测的目的,实现了程序注入的方式完成虚拟机内核的监测,有效的节省了资源消耗,同时是在宿主机实现对虚拟机内核的完整控制,能够随时对监测字段进行调整,进一步保证了监测的灵活性和通用性。
上述为本实施例的一种监测系统的示意性方案。需要说明的是,该监测系统的技术方案与上述的监测方法的技术方案属于同一构思,监测系统的技术方案未详细描述的细节内容,均可以参见上述监测方法的技术方案的描述。
图6示出了根据本说明书一实施例提供的一种计算设备600的结构框图。该计算设备600的部件包括但不限于存储器610和处理器620。处理器620与存储器610通过总线630相连接,数据库650用于保存数据。
计算设备600还包括接入设备640,接入设备640使得计算设备600能够经由一个或多个网络660通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备640可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备600的上述部件以及图6中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图6所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备600可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备600还可以是移动式或静止式的服务器。
其中,处理器620用于执行如下计算机可执行指令:
获取对虚拟机内核进行监测的监测程序文件;
根据预设的解析库对所述监测程序文件进行解析,获得与所述虚拟机内核关联的监测字段以及所述监测字段对应的记录字段;
将所述监测字段和所述记录字段发送至所述虚拟机内核;
所述虚拟机内核将所述监测字段挂载至目标函数,通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的监测方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述监测方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:
获取对虚拟机内核进行监测的监测程序文件;
根据预设的解析库对所述监测程序文件进行解析,获得与所述虚拟机内核关联的监测字段以及所述监测字段对应的记录字段;
将所述监测字段和所述记录字段发送至所述虚拟机内核;
所述虚拟机内核将所述监测字段挂载至目标函数,通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的监测方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述监测方法的技术方案的描述。
本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行所述监测方法的步骤。
上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的监测方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述监测方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书并不受所描述的动作顺序的限制,因为依据本说明书,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

Claims (14)

1.一种监测方法,包括:
获取对虚拟机内核进行监测的监测程序文件;
根据预设的解析库对所述监测程序文件进行解析,获得与所述虚拟机内核关联的监测字段以及所述监测字段对应的记录字段;
将所述监测字段和所述记录字段发送至所述虚拟机内核;
所述虚拟机内核将所述监测字段挂载至目标函数,通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段。
2.根据权利要求1所述的监测方法,所述获取对虚拟机内核进行监测的监测程序文件,包括:
获取目标格式的至少一个初始监测程序文件,并将所述至少一个初始监测程序文件存储至监测节点;
在接收到针对所述虚拟机内核进行监测的监测请求的情况下,在所述监测节点中提取与所述监测请求对应的初始监测程序文件作为所述监测程序文件。
3.根据权利要求1所述的监测方法,所述根据预设的解析库对所述监测程序文件进行解析,获得与所述虚拟机内核关联的监测字段以及所述监测字段对应的记录字段步骤执行之前,还包括:
确定所述监测程序文件对应的程序类型,并预加载与所述程序类型对应的所述解析库。
4.根据权利要求1所述的监测方法,所述根据预设的解析库对所述监测程序文件进行解析,获得与所述虚拟机内核关联的监测字段以及所述监测字段对应的记录字段,包括:
根据预设的解析库对所述监测程序文件进行解析,获得目标对象文件;
识别所述目标对象文件中包含的初始字段,根据识别结果确定与所述虚拟机内核关联的所述监测字段;
在所述目标对象文件中确定与所述监测字段具有映射关系的初始字段,作为所述记录字段。
5.根据权利要求1所述的监测方法,所述将所述监测字段和所述记录字段发送至所述虚拟机内核,包括:
确定与所述虚拟机内核之间的通信方式;
基于所述通信方式对所述监测字段和所述记录字段对应的系统调用进行封装,根据封装结果生成监测信息;
将所述监测信息发送至所述虚拟机内核。
6.根据权利要求5所述的监测方法,所述虚拟机内核将所述监测字段挂载至目标函数,通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段,包括:
所述虚拟机内核执行所述监测信息对应的系统调用,并根据执行结果确定所述目标函数,将所述监测字段挂载至所述目标函数,通过所述监测字段监测所述目标函数对应的所述目标数据,并将所述目标数据写入所述记录字段。
7.根据权利要求1所述的监测方法,所述虚拟机内核将所述监测字段挂载至目标函数,包括:
所述虚拟机内核接收所述监测字段,并确定所述监测字段的字段标识,根据所述字段标识确定与所述监测字段关联的所述目标函数,将所述监测字段挂载至所述目标函数;
相应的,所述通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段,包括:
在所述目标函数被调用的情况下,通过所述监测字段监测所述目标函数对应的所述目标数据,并将所述目标数据写入所述记录字段。
8.根据权利要求5所述的监测方法,所述通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段步骤执行之后,还包括:
在接收到监测停止指令的情况下,根据所述预设的解析库对所述监测程序文件进行解析,获得数据读取字段;
将所述数据读取字段发送至所述虚拟机内核;
所述虚拟机内核根据所述数据读取字段读取所述记录字段中包含的目标数据并输出。
9.根据权利要求8所述的监测方法,所述将所述数据读取字段发送至所述虚拟机内核,包括:
基于所述通信方式对所述数据读取字段对应的系统调用进行封装获得数据读取信息,并将所述数据读取信息发送至所述虚拟机内核;
相应的,所述虚拟机内核根据所述数据读取字段读取所述记录字段中包含的目标数据并输出,包括:
所述虚拟机内核执行所述数据读取信息对应的系统调用,根据执行结果获得所述记录字段中包含的目标数据并输出。
10.一种监测装置,包括:
获取模块,被配置为获取对虚拟机内核进行监测的监测程序文件;
解析模块,被配置为根据预设的解析库对所述监测程序文件进行解析,获得与所述虚拟机内核关联的监测字段以及所述监测字段对应的记录字段;
发送模块,被配置为将所述监测字段和所述记录字段发送至所述虚拟机内核;
监测模块,被配置为所述虚拟机内核将所述监测字段挂载至目标函数,通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段。
11.一种监测系统,包括:
监测模块和虚拟机内核;
所述监测模块,用于获取对所述虚拟机内核进行监测的监测程序文件;根据预设的解析库对所述监测程序文件进行解析,获得与所述虚拟机内核关联的监测字段以及所述监测字段对应的记录字段;将所述监测字段和所述记录字段发送至所述虚拟机内核;
所述虚拟机内核,用于将所述监测字段挂载至目标函数,通过所述监测字段监测所述目标函数对应的目标数据并写入所述记录字段。
12.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,以实现权利要求1至9任意一项所述方法的步骤。
13.一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现权利要求1至9任意一项所述方法的步骤。
14.一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行权利要求1至9任意一项所述方法的步骤。
CN202110993408.3A 2021-08-27 2021-08-27 监测方法及装置 Active CN113448690B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110993408.3A CN113448690B (zh) 2021-08-27 2021-08-27 监测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110993408.3A CN113448690B (zh) 2021-08-27 2021-08-27 监测方法及装置

Publications (2)

Publication Number Publication Date
CN113448690A true CN113448690A (zh) 2021-09-28
CN113448690B CN113448690B (zh) 2022-02-01

Family

ID=77818807

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110993408.3A Active CN113448690B (zh) 2021-08-27 2021-08-27 监测方法及装置

Country Status (1)

Country Link
CN (1) CN113448690B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114816279A (zh) * 2022-06-30 2022-07-29 广东睿江云计算股份有限公司 基于ebpf实现虚拟机磁盘读写的控制方法及控制系统
CN116136825A (zh) * 2023-04-14 2023-05-19 阿里云计算有限公司 数据检测方法及系统

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103399812A (zh) * 2013-07-22 2013-11-20 西安电子科技大学 基于Xen硬件虚拟化的磁盘文件操作监控系统及监控方法
WO2015074526A1 (en) * 2013-11-21 2015-05-28 Tencent Technology (Shenzhen) Company Limited Method and apparatus for injecting java by tecode into target process
CN104732147A (zh) * 2015-04-13 2015-06-24 成都睿峰科技有限公司 一种应用程序处理方法
WO2016207533A1 (fr) * 2015-06-25 2016-12-29 Orange Procédé d'aide a l'analyse de l'exécution d'une machine virtuelle
CN106502759A (zh) * 2015-09-06 2017-03-15 华为技术有限公司 一种数据访问方法、代码调用方法及虚拟机监视器
US20170103202A1 (en) * 2015-10-07 2017-04-13 Electronics And Telecommunications Research Institute Apparatus and method for monitoring virtual machine based on hypervisor
CN108469984A (zh) * 2018-04-17 2018-08-31 哈尔滨工业大学 一种基于虚拟机自省函数级虚拟机内核动态检测系统与方法
CN108920253A (zh) * 2018-06-20 2018-11-30 成都虫洞奇迹科技有限公司 一种无代理的虚拟机监控系统和监控方法
CN109471697A (zh) * 2017-12-01 2019-03-15 北京安天网络安全技术有限公司 一种监控虚拟机中系统调用的方法、装置及存储介质
CN110955631A (zh) * 2018-09-26 2020-04-03 上海瑾盛通信科技有限公司 文件访问追踪方法、装置、存储介质及终端
WO2021130420A1 (fr) * 2019-12-23 2021-07-01 Orange Procédé et dispositif mettant en œuvre ce procédé pour générer et installer un code exécutable dans la mémoire d'un noyau d'une machine virtuelle depuis un hyperviseur

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103399812A (zh) * 2013-07-22 2013-11-20 西安电子科技大学 基于Xen硬件虚拟化的磁盘文件操作监控系统及监控方法
WO2015074526A1 (en) * 2013-11-21 2015-05-28 Tencent Technology (Shenzhen) Company Limited Method and apparatus for injecting java by tecode into target process
CN104732147A (zh) * 2015-04-13 2015-06-24 成都睿峰科技有限公司 一种应用程序处理方法
WO2016207533A1 (fr) * 2015-06-25 2016-12-29 Orange Procédé d'aide a l'analyse de l'exécution d'une machine virtuelle
CN106502759A (zh) * 2015-09-06 2017-03-15 华为技术有限公司 一种数据访问方法、代码调用方法及虚拟机监视器
US20170103202A1 (en) * 2015-10-07 2017-04-13 Electronics And Telecommunications Research Institute Apparatus and method for monitoring virtual machine based on hypervisor
CN109471697A (zh) * 2017-12-01 2019-03-15 北京安天网络安全技术有限公司 一种监控虚拟机中系统调用的方法、装置及存储介质
CN108469984A (zh) * 2018-04-17 2018-08-31 哈尔滨工业大学 一种基于虚拟机自省函数级虚拟机内核动态检测系统与方法
CN108920253A (zh) * 2018-06-20 2018-11-30 成都虫洞奇迹科技有限公司 一种无代理的虚拟机监控系统和监控方法
CN110955631A (zh) * 2018-09-26 2020-04-03 上海瑾盛通信科技有限公司 文件访问追踪方法、装置、存储介质及终端
WO2021130420A1 (fr) * 2019-12-23 2021-07-01 Orange Procédé et dispositif mettant en œuvre ce procédé pour générer et installer un code exécutable dans la mémoire d'un noyau d'une machine virtuelle depuis un hyperviseur

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
HPYU: "【原创】Kernel调试追踪技术之 eBPF on ARM64", 《HTTPS://WWW.CNBLOGS.COM/HPYU/P/14254250.HTML》 *
余劲 等: "VMSPY:一种自动化的虚拟机客户机系统函数截获和控制方案", 《计算机学报》 *
王春光: "虚拟操作系统行为监控技术的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
蔡志强 等: "一种基于虚拟机的动态内存泄露检测方法", 《计算机应用与软件》 *
郑杰生 等: "一种基于模式识别的微服务异常检测方法", 《计算机技术与发展》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114816279A (zh) * 2022-06-30 2022-07-29 广东睿江云计算股份有限公司 基于ebpf实现虚拟机磁盘读写的控制方法及控制系统
CN116136825A (zh) * 2023-04-14 2023-05-19 阿里云计算有限公司 数据检测方法及系统
CN116136825B (zh) * 2023-04-14 2023-09-19 阿里云计算有限公司 数据检测方法及系统

Also Published As

Publication number Publication date
CN113448690B (zh) 2022-02-01

Similar Documents

Publication Publication Date Title
CN109933522B (zh) 一种自动化用例的测试方法、测试系统及存储介质
CN107102944B (zh) 一种调用函数的分析方法及装置
CN103177210B (zh) 一种在Android中植入动态污点分析模块的方法
CN113448690B (zh) 监测方法及装置
CN108228444B (zh) 一种测试方法和装置
CN105184166A (zh) 基于内核的安卓程序实时行为分析方法及系统
CA2763544A1 (en) M2m service platform and working method thereof
CN111399840B (zh) 一种模块开发方法及装置
CN114721719B (zh) 一种在集群中容器化部署异构应用的方法和系统
CN110569250A (zh) 一种物联网网元的解析库的管理方法及装置
CN114996134A (zh) 容器化部署方法、电子设备及存储介质
CN109491755A (zh) 操作系统中应用程序的保护方法和装置
CN115390991A (zh) 虚拟机的导入导出方法、装置、设备及存储介质
CN110806891A (zh) 嵌入式设备软件版本的生成方法及装置
CN114780211B (zh) 管理安全容器的方法及基于安全容器的系统
CN112764796A (zh) 安装包生成系统
CN114791884A (zh) 测试环境的构建方法、装置、存储介质及电子设备
CN115617668A (zh) 一种兼容性测试方法、装置及设备
CN115237399A (zh) 用于采集数据的方法、存储介质、处理器及工程车辆
CN113806331A (zh) 数据处理方法及装置
WO2019157891A1 (zh) 应用安装方法、应用安装包的生成方法
CN112328498A (zh) 业务的测试方法和装置、存储介质、电子装置
CN112380143A (zh) 一种pos产品自动化测试方法、系统、设备和计算机存储介质
CN110736920A (zh) 一种基于工程管理测试脚本的卡片测试方法及系统
CN109726053B (zh) 数据库控制中心的切换方法、装置及计算机设备

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
GR01 Patent grant
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40059931

Country of ref document: HK