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