本发明涉及云平台监控技术领域,特别是一种云平台检查虚拟机连接状态的方法。
背景技术:
一般的公有云计算平台上有多个计算节点,而每个计算节点上都有多个正在运行的虚拟机,每个虚拟机上都可能允许了一个或多个应用程序,由于许多虚拟机的应用程序都依赖连通外部网络,这样会存在以下隐患:
一是虚拟机上正在运行的应用程序通过外网访问,当虚拟机跟外网的连接异常会影响到应用程序的正常业务,若不能及时发现就造成不必要的损失。
二是常规的虚拟机监控都是通过监控代理实现,而监控代理则通常通过网络连接,若监控代理没有响应消息,不能确定是监控代理还是网络出现问题。
三是虚拟机通常是先通过虚拟机内网子网再经过虚拟机外网子网来连接外网,导致通过监控代理只能获取能够连接外网子网网络类型的监控信息,不能获取只有内网子网网络类型的网络连接状态。
为了解决上述问题,需要有一种云平台通用检查虚拟机连接状态的方法。以实时、不需要依赖网络以及不区分网络类型的检查方法,能够检查Windows或Linux操作系统的虚拟机连接状态。
技术实现要素:
本发明解决的技术问题在于提供一种云平台检查虚拟机连接状态的方法;解决检查虚拟机连接状态不够实时、依赖网络、区分虚拟机网络类型、检查方法不通用等问题。
本发明解决上述技术问题的技术方案是:
所述的方法包括如下步骤:
步骤1:获取正在运行的虚拟机列表;
步骤2:获取虚拟机的网络信息;
步骤3:检查操作系统类型;从宿主机通过QEMU客户代理工具发送查询命令给虚拟机实例,返回进程ID;
步骤4:获取操作系统类型;通过QEMU客户代理工具发送查询进程状态命令给虚拟机实例,返回字符串结果,若命令正常执行则是Windows操作系统,若返回不支持此命令的提示,则默认是Linux操作系统;
步骤5:检查外网连接状态;从宿主机通过QEMU客户代理工具发送连接外网命令给虚拟机实例,返回进程ID;
步骤6:获取外网连接结果;通过QEMU客户代理工具发送查询进程状态命令给虚拟机实例,获取命令的返回码,若命令正常执行则是外网连接正常;若命令执行异常则是外网连接异常;
步骤7:检查虚拟网关连接状态;从宿主机通过QEMU客户代理工具发送连接网关命令给虚拟机实例,返回进程ID;
步骤8:获取虚拟网关连接结果。过QEMU客户代理工具发送查询进程状态命令给虚拟机实例,获取命令的返回码,若命令正常执行则是网关连接正常;若命令执行异常则是网关连接异常。
所述获取宿主机上正在运行的虚拟机列表,包含虚拟机的ID;
所述的网络信息,包括虚拟机的网卡信息列表;
所述的网卡信息,包括虚拟机的网关地址、IP地址、MAC地址、网络类型等信息;
所述的网络类型,包括内网和外网。
所述的QEMU客户代理工具,是一个运行在虚拟机内部的普通应用程序,其目的是实现一种宿主机和虚拟机进行交互的方式,这种方式不依赖于网络,而是依赖于提供了串口设备的模拟及数据交换的通道;
所述的查询命令,是指“cmd.exe -h”命令;
所述的进程ID,是指虚拟机操作系统的进程ID。
所述的查询进程状态命令,是指根据虚拟机操作系统的进程ID,获取进程最终执行结果命令。
所述的连接外网命令,是指根据操作系统类型,调用不同的ping命令;
所述的ping命令,ping一个默认配置的外网地址,并且只ping一次。
所述的连接命令,其特征在于:ping虚拟机网卡信息的网关地址,并且只ping一次。
本发明通过一种云平台通用检查虚拟机连接状态的方法,解决了检查虚拟机连接状态不够实时、依赖网络、区分虚拟机网络类型、检查方法不通用等问题。本发明通用检查虚拟机连接状态的方法,是云平台自动完成,区别于一般手工的方法。本发明提供方法是定期实时检查,区别于一般办法不够实时的问题。本发明通过串口通信,区域于一般需要依赖网络的检查方法。本发明提供方法是不区分网络类型,区别于一般区别网络类型的检查方法。本发明不区分操作系统,区域于一般需要区别操作系统的检查方法。
附图说明
下面结合附图对本发明进一步说明:
图1为流程图;
图2为本发明逻辑结构图。
具体实施方式
本发明的实施方式有多种,这里以云平台为例说明其中一种实现方法,流程图如图1所示,具体实施过程如下
1、获取正在运行的虚拟机列表,代码如下:
2、获取虚拟机的网络信息,代码如下:
3、检查操作系统类型,代码如下:
4、获取操作系统类型,代码如下:
5、检查外网连接状态,代码如下:
6、获取外网连接结果,代码如下:
7、检查虚拟网关连接状态,代码如下:
8、获取虚拟网关连接结果,代码如下:
整个流程结束。
如图2所示,从宿主机通过QEMU客户代理工具发送查询命令给虚拟机实例,返回进程ID。通过QEMU客户代理工具发送查询进程状态命令给虚拟机实例,返回字符串结果,若命令正常执行则是Windows操作系统,若返回不支持此命令的提示,则默认是Linux操作系统。从宿主机通过QEMU客户代理工具发送连接外网命令给虚拟机实例,返回进程ID。通过QEMU客户代理工具发送查询进程状态命令给虚拟机实例,获取命令的返回码,若命令正常执行则是外网连接正常;若命令执行异常则是外网连接异常。从宿主机通过QEMU客户代理工具发送连接网关命令给虚拟机实例,返回进程ID。过QEMU客户代理工具发送查询进程状态命令给虚拟机实例,获取命令的返回码,若命令正常执行则是网关连接正常;若命令执行异常则是网关连接异常。