本發(fā)明涉及云平臺監(jiān)控技術(shù)領(lǐng)域,特別是一種云平臺檢查虛擬機(jī)連接狀態(tài)的方法。
背景技術(shù):
一般的公有云計(jì)算平臺上有多個(gè)計(jì)算節(jié)點(diǎn),而每個(gè)計(jì)算節(jié)點(diǎn)上都有多個(gè)正在運(yùn)行的虛擬機(jī),每個(gè)虛擬機(jī)上都可能允許了一個(gè)或多個(gè)應(yīng)用程序,由于許多虛擬機(jī)的應(yīng)用程序都依賴連通外部網(wǎng)絡(luò),這樣會存在以下隱患:
一是虛擬機(jī)上正在運(yùn)行的應(yīng)用程序通過外網(wǎng)訪問,當(dāng)虛擬機(jī)跟外網(wǎng)的連接異常會影響到應(yīng)用程序的正常業(yè)務(wù),若不能及時(shí)發(fā)現(xiàn)就造成不必要的損失。
二是常規(guī)的虛擬機(jī)監(jiān)控都是通過監(jiān)控代理實(shí)現(xiàn),而監(jiān)控代理則通常通過網(wǎng)絡(luò)連接,若監(jiān)控代理沒有響應(yīng)消息,不能確定是監(jiān)控代理還是網(wǎng)絡(luò)出現(xiàn)問題。
三是虛擬機(jī)通常是先通過虛擬機(jī)內(nèi)網(wǎng)子網(wǎng)再經(jīng)過虛擬機(jī)外網(wǎng)子網(wǎng)來連接外網(wǎng),導(dǎo)致通過監(jiān)控代理只能獲取能夠連接外網(wǎng)子網(wǎng)網(wǎng)絡(luò)類型的監(jiān)控信息,不能獲取只有內(nèi)網(wǎng)子網(wǎng)網(wǎng)絡(luò)類型的網(wǎng)絡(luò)連接狀態(tài)。
為了解決上述問題,需要有一種云平臺通用檢查虛擬機(jī)連接狀態(tài)的方法。以實(shí)時(shí)、不需要依賴網(wǎng)絡(luò)以及不區(qū)分網(wǎng)絡(luò)類型的檢查方法,能夠檢查Windows或Linux操作系統(tǒng)的虛擬機(jī)連接狀態(tài)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明解決的技術(shù)問題在于提供一種云平臺檢查虛擬機(jī)連接狀態(tài)的方法;解決檢查虛擬機(jī)連接狀態(tài)不夠?qū)崟r(shí)、依賴網(wǎng)絡(luò)、區(qū)分虛擬機(jī)網(wǎng)絡(luò)類型、檢查方法不通用等問題。
本發(fā)明解決上述技術(shù)問題的技術(shù)方案是:
所述的方法包括如下步驟:
步驟1:獲取正在運(yùn)行的虛擬機(jī)列表;
步驟2:獲取虛擬機(jī)的網(wǎng)絡(luò)信息;
步驟3:檢查操作系統(tǒng)類型;從宿主機(jī)通過QEMU客戶代理工具發(fā)送查詢命令給虛擬機(jī)實(shí)例,返回進(jìn)程ID;
步驟4:獲取操作系統(tǒng)類型;通過QEMU客戶代理工具發(fā)送查詢進(jìn)程狀態(tài)命令給虛擬機(jī)實(shí)例,返回字符串結(jié)果,若命令正常執(zhí)行則是Windows操作系統(tǒng),若返回不支持此命令的提示,則默認(rèn)是Linux操作系統(tǒng);
步驟5:檢查外網(wǎng)連接狀態(tài);從宿主機(jī)通過QEMU客戶代理工具發(fā)送連接外網(wǎng)命令給虛擬機(jī)實(shí)例,返回進(jìn)程ID;
步驟6:獲取外網(wǎng)連接結(jié)果;通過QEMU客戶代理工具發(fā)送查詢進(jìn)程狀態(tài)命令給虛擬機(jī)實(shí)例,獲取命令的返回碼,若命令正常執(zhí)行則是外網(wǎng)連接正常;若命令執(zhí)行異常則是外網(wǎng)連接異常;
步驟7:檢查虛擬網(wǎng)關(guān)連接狀態(tài);從宿主機(jī)通過QEMU客戶代理工具發(fā)送連接網(wǎng)關(guān)命令給虛擬機(jī)實(shí)例,返回進(jìn)程ID;
步驟8:獲取虛擬網(wǎng)關(guān)連接結(jié)果。過QEMU客戶代理工具發(fā)送查詢進(jìn)程狀態(tài)命令給虛擬機(jī)實(shí)例,獲取命令的返回碼,若命令正常執(zhí)行則是網(wǎng)關(guān)連接正常;若命令執(zhí)行異常則是網(wǎng)關(guān)連接異常。
所述獲取宿主機(jī)上正在運(yùn)行的虛擬機(jī)列表,包含虛擬機(jī)的ID;
所述的網(wǎng)絡(luò)信息,包括虛擬機(jī)的網(wǎng)卡信息列表;
所述的網(wǎng)卡信息,包括虛擬機(jī)的網(wǎng)關(guān)地址、IP地址、MAC地址、網(wǎng)絡(luò)類型等信息;
所述的網(wǎng)絡(luò)類型,包括內(nèi)網(wǎng)和外網(wǎng)。
所述的QEMU客戶代理工具,是一個(gè)運(yùn)行在虛擬機(jī)內(nèi)部的普通應(yīng)用程序,其目的是實(shí)現(xiàn)一種宿主機(jī)和虛擬機(jī)進(jìn)行交互的方式,這種方式不依賴于網(wǎng)絡(luò),而是依賴于提供了串口設(shè)備的模擬及數(shù)據(jù)交換的通道;
所述的查詢命令,是指“cmd.exe -h”命令;
所述的進(jìn)程ID,是指虛擬機(jī)操作系統(tǒng)的進(jìn)程ID。
所述的查詢進(jìn)程狀態(tài)命令,是指根據(jù)虛擬機(jī)操作系統(tǒng)的進(jìn)程ID,獲取進(jìn)程最終執(zhí)行結(jié)果命令。
所述的連接外網(wǎng)命令,是指根據(jù)操作系統(tǒng)類型,調(diào)用不同的ping命令;
所述的ping命令,ping一個(gè)默認(rèn)配置的外網(wǎng)地址,并且只ping一次。
所述的連接命令,其特征在于:ping虛擬機(jī)網(wǎng)卡信息的網(wǎng)關(guān)地址,并且只ping一次。
本發(fā)明通過一種云平臺通用檢查虛擬機(jī)連接狀態(tài)的方法,解決了檢查虛擬機(jī)連接狀態(tài)不夠?qū)崟r(shí)、依賴網(wǎng)絡(luò)、區(qū)分虛擬機(jī)網(wǎng)絡(luò)類型、檢查方法不通用等問題。本發(fā)明通用檢查虛擬機(jī)連接狀態(tài)的方法,是云平臺自動完成,區(qū)別于一般手工的方法。本發(fā)明提供方法是定期實(shí)時(shí)檢查,區(qū)別于一般辦法不夠?qū)崟r(shí)的問題。本發(fā)明通過串口通信,區(qū)域于一般需要依賴網(wǎng)絡(luò)的檢查方法。本發(fā)明提供方法是不區(qū)分網(wǎng)絡(luò)類型,區(qū)別于一般區(qū)別網(wǎng)絡(luò)類型的檢查方法。本發(fā)明不區(qū)分操作系統(tǒng),區(qū)域于一般需要區(qū)別操作系統(tǒng)的檢查方法。
附圖說明
下面結(jié)合附圖對本發(fā)明進(jìn)一步說明:
圖1為流程圖;
圖2為本發(fā)明邏輯結(jié)構(gòu)圖。
具體實(shí)施方式
本發(fā)明的實(shí)施方式有多種,這里以云平臺為例說明其中一種實(shí)現(xiàn)方法,流程圖如圖1所示,具體實(shí)施過程如下
1、獲取正在運(yùn)行的虛擬機(jī)列表,代碼如下:
2、獲取虛擬機(jī)的網(wǎng)絡(luò)信息,代碼如下:
3、檢查操作系統(tǒng)類型,代碼如下:
4、獲取操作系統(tǒng)類型,代碼如下:
5、檢查外網(wǎng)連接狀態(tài),代碼如下:
6、獲取外網(wǎng)連接結(jié)果,代碼如下:
7、檢查虛擬網(wǎng)關(guān)連接狀態(tài),代碼如下:
8、獲取虛擬網(wǎng)關(guān)連接結(jié)果,代碼如下:
整個(gè)流程結(jié)束。
如圖2所示,從宿主機(jī)通過QEMU客戶代理工具發(fā)送查詢命令給虛擬機(jī)實(shí)例,返回進(jìn)程ID。通過QEMU客戶代理工具發(fā)送查詢進(jìn)程狀態(tài)命令給虛擬機(jī)實(shí)例,返回字符串結(jié)果,若命令正常執(zhí)行則是Windows操作系統(tǒng),若返回不支持此命令的提示,則默認(rèn)是Linux操作系統(tǒng)。從宿主機(jī)通過QEMU客戶代理工具發(fā)送連接外網(wǎng)命令給虛擬機(jī)實(shí)例,返回進(jìn)程ID。通過QEMU客戶代理工具發(fā)送查詢進(jìn)程狀態(tài)命令給虛擬機(jī)實(shí)例,獲取命令的返回碼,若命令正常執(zhí)行則是外網(wǎng)連接正常;若命令執(zhí)行異常則是外網(wǎng)連接異常。從宿主機(jī)通過QEMU客戶代理工具發(fā)送連接網(wǎng)關(guān)命令給虛擬機(jī)實(shí)例,返回進(jìn)程ID。過QEMU客戶代理工具發(fā)送查詢進(jìn)程狀態(tài)命令給虛擬機(jī)實(shí)例,獲取命令的返回碼,若命令正常執(zhí)行則是網(wǎng)關(guān)連接正常;若命令執(zhí)行異常則是網(wǎng)關(guān)連接異常。