一种在虚拟化层实现的虚拟机状态监控的制作方法

文档序号:12120443阅读:337来源:国知局
一种在虚拟化层实现的虚拟机状态监控的制作方法与工艺

本发明涉及计算机应用技术领域,具体地说是一种在虚拟化层实现的虚拟机状态监控。



背景技术:

在虚拟化技术应用中,对于虚拟化主机的监控一直是技术热点和痛点。传统的虚拟化监控技术一般通过安装在虚拟化主机客户机系统中的代理服务模块进程实现。但这种方式有着明显的局限性:首先,代理服务模块很难做到对客户机系统中用户的透明运行,安全性不足;其次,代理服务模块一旦停止运行,没有很好的方式快速唤醒进程,只能依赖于守护进程,可靠性不足。

尤其是在Hyper-V虚拟化技术中,虚拟机是作为一个或多个线程的形式存在的,而虚拟机内部的应用可以通过唯一的应用编号来确定。

Windows Management Instrumentation(WMI)接口,是微软为Windows系统开放的系统管理接口,可通过代码或者PowerShell脚本实现对系统功能的配置和管理。其中,Hyper-V WMI Provider(v2)中包含对于虚拟机健康状况监控的相关类,可以捕获虚拟机自身和内部进程的运行状态,从而为本专利的技术方案提供了技术上的可能性。

基于此,本专利描述的是一种不依赖于客户机系统代理程序或进程,直接从虚拟化层对虚拟化主机进行监控的技术,通过宿主机上的代理服务模块实现。本专利提出的在虚拟化层实现的虚拟机监控技术可以很好的规避和弥补当前传统虚拟机监控技术的不足,实现快速、准确、稳定、高效的虚拟机管理。



技术实现要素:

本发明的技术任务是针对以上不足之处,提供一种在虚拟化层实现的虚拟机状态监控。

一种在虚拟化层实现的虚拟机状态监控,其实现过程为:设置一个安装在宿主机操作系统内部的代理服务模块,通过此代理服务模块调用宿主机系统中的管理接口,获取虚拟机运行中的状态信息,以及虚拟机内部客户机系统中指定应用的运行状态信息,从而实现的虚拟机监控。

所述代理服务模块获取的运行状态信息包括虚拟机自身心跳服务,以及虚拟机内客户机系统特定进程的存活状态。

代理服务模块获取运行状态信息的过程为,

首先对操作系统的系统管理类库进行监控接口的封装,成为专用于监控接口调用的类库;

其次收集获取虚拟机监控信息,暂存在代理服务模块内部,相对应的,该代理服务模块设置有虚拟机信息存储模块;

最后,收集归档信息,代理服务模块与外部的服务端通信,相对应的,该代理服务模块设置有通信模块。

所述宿主机操作系统是指安装Hyper-v角色的Windows 8及以上操作系统,或Windows Server 2012 R2及以上操作系统实现,相对应的,代理服务模块调用的是Windows Management Instrumentation,即WMI中Hyper-V监控接口,获取虚拟机运行中的状态信息,从而最终实现对于虚拟机的监控。

所述虚拟化状态监控的具体过程为:

服务端发起虚拟机监控命令,宿主机上安装的代理服务模块通过通信模块接收服务端的消息,识别监控命令,准备执行;

代理服务模块通过WMI模块,调用虚拟机心跳信息获取方法,传入虚拟机ID,获取指定虚拟机的心跳信息;

代理服务模块通过虚拟机信息存储模块,暂存虚拟机一段时间的心跳信息;

代理服务模块通过通信模块,向服务端反馈虚拟机心跳,一次虚拟机监控完成;

服务端发起虚拟机内指定应用监控命令,宿主机上安装的代理服务模块通过通信模块接收服务端的消息,识别监控命令,准备执行;

代理服务模块通过WMI模块,调用虚拟机内应用心跳信息获取方法,传入虚拟机ID,应用ID,获取指定虚拟机内,指定应用的心跳信息;

代理服务模块通过虚拟机信息存储模块,暂存虚拟机内应用一段时间的心跳信息;

代理服务模块通过通信模块,向服务端反馈虚拟机心跳,一次虚拟机上特定应用监控完成。

本发明的一种在虚拟化层实现的虚拟机状态监控和现有技术相比,具有以下有益效果:

本发明的一种在虚拟化层实现的虚拟机状态监控,相比较于传统的通过安装在虚拟机客户机系统内部的监控程序或服务的监控方式,本发明不需要在客户机系统内部部署额外软件,对于客户机做到了完全透明且不可感知的监控,极大的增强了安全性,也提高了监控的稳定性;传统监控方案中,虚拟机客户机系统监控进程一旦停止运行,没有很好的方式快速唤醒进程,只能依赖于守护进程,可靠性不足;本发明中的监控方案则不存在这种问题,宿主机上的代理程序一旦停止,可以由运维人员进行人工操作重启解决,而不影响虚拟机的正常运行;本发明可以很好的规避和弥补当前传统虚拟机监控技术的不足,实现快速、准确、稳定、高效的虚拟机管理,实用性强,适用范围广泛,具有很好的推广应用价值。

附图说明

附图1为虚拟机监控方法的部署架构图。

附图2为虚拟机监控方法中宿主机代理服务的技术架构图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步说明。

本发明公开了一种在虚拟化层实现的虚拟机状态监控,通过调用系统中管理接口,获取运行中的虚拟机状态信息,以及虚拟机内部客户机系统中指定应用的运行状态信息,从而实现的虚拟机监控。本专利的核心在于编写一个安装在宿主机操作系统内部的代理服务模块,通过此代理服务模块调用宿主机系统中的管理接口,获取虚拟机运行中的状态信息。

本专利描述的虚拟化技术,在安装Hyper-v角色的Windows 8及以上操作系统,或者Windows Server 2012 R2及以上操作系统实现;

本专利实现的虚拟机状态监控技术,其监控对象包括:虚拟机自身心跳服务,虚拟机内客户机系统特定进程的存活状态,对于其他监控项目的有效性不做说明;

本专利描述的虚拟机监控方法的核心,在于编写一个安装在宿主机操作系统内部的代理服务模块,通过此代理服务模块调用Windows Management Instrumentation(WMI)中Hyper-V监控接口,获取虚拟机运行中的状态信息,从而最终实现对于虚拟机的监控。

需要通过此种方法对虚拟机进行监控的宿主机,必须安装上述代理服务模块,而虚拟机内部的客户机系统不需要安装其他任何软件或服务。

为了实现此种在虚拟化层的虚拟机监控技术,需要解决的技术问题有:

如何调用WMI接口。

如何收集归档监控信息。

如何保证实时进行WMI接口调用操作,并保证监控功能的健壮性。

综合以上待解决问题,本专利提出的方案为:编写安装在宿主机上的代理服务模块,通过代理服务模块调用WMI接口中Hyper-V相关的部分方法,收集并存储虚拟机的监控信息,从而实现以上功能需求。

本专利描述的监控方法核心在于编写一个安装在宿主机上的监控代理服务模块,其部署方式如附图1所示:代理服务模块直接安装在宿主机上,通过WMI接口与Hyper-V通信,获取虚拟机的运行中信息。

首先,为了实现虚拟机心跳信息,特定应用运行状态信息的收集,需要对Windows原生的系统管理类库进行针对Hyper-V的封装,成为专用于WMI接口调用的类库。

以下为需要重新封装调用的WMI类和方法,比如以下几种WMI类或接口,Msvm_ComputerSystem、Msvm_VirtualSystemSettingData、Msvm_HeartbeatComponent。

其次,收集获取虚拟机监控信息后,需要暂存在代理服务模块内部,所以代理服务模块需要添加虚拟机信息存储模块。

最后,收集归档信息后,代理服务模块需要与外部的服务端或其他组件通信,还需要添加通信模块。

综上所示,宿主机上安装的代理服务模块技术架构如附图2所示。

以一个场景用例说明本专利的具体实施方式:

服务端发起虚拟机监控命令,宿主机上安装的代理服务模块通过通信模块接收服务端的消息,识别监控命令,准备执行;

代理服务模块通过WMI模块,调用虚拟机心跳信息获取方法,传入虚拟机ID,获取指定虚拟机的心跳信息;

代理服务模块通过虚拟机信息存储模块,暂存虚拟机一段时间的心跳信息;

代理服务模块通过通信模块,向服务端反馈虚拟机心跳,一次虚拟机监控完成;

服务端发起虚拟机内指定应用监控命令,宿主机上安装的代理服务模块通过通信模块接收服务端的消息,识别监控命令,准备执行;

代理服务模块通过WMI模块,调用虚拟机内应用心跳信息获取方法,传入虚拟机ID,应用ID,获取指定虚拟机内,指定应用的心跳信息;

代理服务模块通过虚拟机信息存储模块,暂存虚拟机内应用一段时间的心跳信息;

代理服务模块通过通信模块,向服务端反馈虚拟机心跳,一次虚拟机上特定应用监控完成。

通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。

除说明书所述的技术特征外,均为本专业技术人员的已知技术。

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