本發(fā)明涉及分布式集群技術(shù),尤其涉及一種基于混合架構(gòu)的分布式集群監(jiān)控代理。
背景技術(shù):
目前,主流的分布式集群都運(yùn)行在基于X86架構(gòu)服務(wù)器上,故對(duì)集群的監(jiān)控都采用X86架構(gòu)上可以實(shí)現(xiàn)的技術(shù)。如果分布式集群同時(shí)部署在X86、ARM混合架構(gòu)集群上,原先的監(jiān)控技術(shù)對(duì)ARM服務(wù)器將不再起作用。如需對(duì)ARM服務(wù)器進(jìn)行監(jiān)控則需要重新再實(shí)現(xiàn)一套基于ARM架構(gòu)的監(jiān)控技術(shù)。此時(shí)完成X86、ARM混合架構(gòu)的分布式集群監(jiān)控需要兩套技術(shù),增加了集群部署及維護(hù)的復(fù)雜性。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明目的:本發(fā)明針對(duì)現(xiàn)有技術(shù)存在的問題,提供一種基于混合架構(gòu)的分布式集群監(jiān)控代理,實(shí)現(xiàn)對(duì)X86、ARM混合架構(gòu)的分布式集群軟硬件進(jìn)行監(jiān)控。
技術(shù)方案:本發(fā)明所述的基于混合架構(gòu)的分布式集群監(jiān)控代理安裝于混合架構(gòu)平臺(tái)中的X86服務(wù)器或ARM服務(wù)器中,該代理包括:
HTTP接口模塊,具體包括硬件狀態(tài)獲取接口、軟件進(jìn)程啟停接口和軟件進(jìn)程狀態(tài)獲取接口;其中,硬件狀態(tài)獲取接口、軟件進(jìn)程啟停接口和軟件進(jìn)程狀態(tài)獲取接口用于根據(jù)外部調(diào)用系統(tǒng)的請(qǐng)求參數(shù),分別調(diào)用硬件資源運(yùn)行狀態(tài)獲取模塊、軟件進(jìn)程啟停模塊和軟件進(jìn)程運(yùn)行狀態(tài)獲取模塊,并將調(diào)用的模塊返回的數(shù)據(jù)傳輸至外部調(diào)用系統(tǒng);
硬件資源運(yùn)行狀態(tài)獲取模塊,用于按照硬件狀態(tài)獲取接口的請(qǐng)求,采用與當(dāng)前平臺(tái)結(jié)構(gòu)匹配的sigar動(dòng)態(tài)庫,獲取并返回當(dāng)前平臺(tái)硬件資源的運(yùn)行狀態(tài)信息;
軟件進(jìn)程啟停模塊,用于按照軟件進(jìn)程啟停接口的請(qǐng)求,啟停止當(dāng)前平臺(tái)的軟件進(jìn)程;
軟件進(jìn)程運(yùn)行狀態(tài)獲取模塊,用于按照軟件進(jìn)程狀態(tài)獲取接口的請(qǐng)求,獲取并返回當(dāng)前平臺(tái)的軟件進(jìn)程的運(yùn)行狀態(tài)信息。
進(jìn)一步的,所述軟件進(jìn)程啟停接口請(qǐng)求的啟停類型包括一鍵啟停本機(jī)進(jìn)程、啟停單個(gè)進(jìn)程和一鍵啟停集群所有進(jìn)程;所述軟件進(jìn)程啟停模塊具體用于:若接收到的啟停類型為一鍵啟停本機(jī)進(jìn)程,則依據(jù)定義的進(jìn)程啟停命令順序先后進(jìn)行進(jìn)程的啟停;若啟停類型為啟停單個(gè)進(jìn)程,則依據(jù)啟停的進(jìn)程名稱在配置文件中找到該進(jìn)程的啟停腳本,然后調(diào)用該腳本進(jìn)行進(jìn)程啟停;若啟停類型為一鍵啟停集群所有進(jìn)程,則依據(jù)定義的集群機(jī)器順序列表依次發(fā)送請(qǐng)求給每臺(tái)機(jī)器進(jìn)行進(jìn)程啟停。
進(jìn)一步的,所述軟件進(jìn)程狀態(tài)獲取接口請(qǐng)求的類型包括一鍵獲取本機(jī)進(jìn)程狀態(tài)、獲取單個(gè)進(jìn)程運(yùn)行狀態(tài)和一鍵獲取集群所有進(jìn)程運(yùn)行狀態(tài);所述軟件進(jìn)程運(yùn)行狀態(tài)獲取模塊具體用于:若接收的請(qǐng)求類型為一鍵獲取本機(jī)進(jìn)程狀態(tài),則依據(jù)定義的進(jìn)程狀態(tài)獲取命令的先后順序進(jìn)行狀態(tài)獲??;若類型為獲取單個(gè)進(jìn)程運(yùn)行狀態(tài),則依據(jù)進(jìn)程名稱在配置文件中找到該進(jìn)程的狀態(tài)獲取腳本,然后調(diào)用該腳本進(jìn)行狀態(tài)獲?。蝗纛愋蜑橐绘I獲取集群所有進(jìn)程運(yùn)行狀態(tài)信息,則依據(jù)定義的集群機(jī)器順序列表依次發(fā)送請(qǐng)求給每臺(tái)機(jī)器進(jìn)行進(jìn)程狀態(tài)獲取并將狀態(tài)結(jié)果依次返回給外部調(diào)用系統(tǒng)。
進(jìn)一步的,所述硬件資源運(yùn)行狀態(tài)獲取模塊獲取的硬件資源狀態(tài)信息具體包括平臺(tái)的CPU、內(nèi)存、磁盤和網(wǎng)卡的運(yùn)行狀態(tài)信息。
本發(fā)明還提供了一種基于上述的監(jiān)控代理的監(jiān)控方法,包括步驟:
(1)使用Jetty作為內(nèi)嵌的Web服務(wù)器提供HTTP接口;
(2)在配置文件中定義集群機(jī)器啟停順序的IP地址,定義每臺(tái)機(jī)器部署的軟件進(jìn)程名稱、進(jìn)程啟停腳本、進(jìn)程狀態(tài)獲取腳本,通過HTTP接口發(fā)送至監(jiān)控代理;
(3)當(dāng)監(jiān)控代理收到硬件狀態(tài)獲取請(qǐng)求時(shí),根據(jù)當(dāng)前平臺(tái)架構(gòu)選擇匹配的sigar動(dòng)態(tài)庫進(jìn)行硬件狀態(tài)信息的獲取,并將結(jié)果返回給外部調(diào)用系統(tǒng);
(4)當(dāng)監(jiān)控代理收到軟件啟停請(qǐng)求時(shí),依據(jù)請(qǐng)求類型進(jìn)行相應(yīng)的操作,具體為:若啟停類型為一鍵啟停本機(jī)進(jìn)程,依據(jù)配置文件中定義的進(jìn)程啟停命令順序先后進(jìn)行進(jìn)程的啟停;若啟停類型為啟停單個(gè)進(jìn)程,依據(jù)啟停的進(jìn)程名稱在配置文件中找到該進(jìn)程的啟停腳本,然后調(diào)用該腳本進(jìn)行進(jìn)程啟停;若啟停類型為一鍵啟停集群所有進(jìn)程,依據(jù)定義的集群機(jī)器順序列表依次發(fā)送請(qǐng)求給每臺(tái)機(jī)器進(jìn)行進(jìn)程啟停;
(5)當(dāng)監(jiān)控代理收到軟件運(yùn)行狀態(tài)請(qǐng)求時(shí),依據(jù)請(qǐng)求類型進(jìn)行相應(yīng)的操作,具體為:若類型為一鍵獲取本機(jī)進(jìn)程狀態(tài),依據(jù)配置文件中定義的進(jìn)程狀態(tài)獲取命令的先后順序進(jìn)行狀態(tài)獲?。蝗纛愋蜑楂@取單個(gè)進(jìn)程運(yùn)行狀態(tài),依據(jù)進(jìn)程名稱在配置文件中找到該進(jìn)程的狀態(tài)獲取腳本,然后調(diào)用該腳本進(jìn)行狀態(tài)獲取;若類型為一鍵獲取集群所有進(jìn)程運(yùn)行狀態(tài)信息,依據(jù)定義的集群機(jī)器順序列表依次發(fā)送請(qǐng)求給每臺(tái)機(jī)器進(jìn)行進(jìn)程狀態(tài)獲取并將狀態(tài)結(jié)果依次返回給外部調(diào)用系統(tǒng)。
有益效果:本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點(diǎn)是:實(shí)現(xiàn)了對(duì)X86、ARM混合架構(gòu)的分布式集群軟硬件進(jìn)行監(jiān)控,降低了基于X86、ARM混合架構(gòu)的分布式集群監(jiān)控模塊部署及維護(hù)的復(fù)雜性。
附圖說明
圖1是本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)框圖。
具體實(shí)施方式
如圖1所示,本實(shí)施例的監(jiān)控代理安裝于混合架構(gòu)平臺(tái)中的X86服務(wù)器或ARM服務(wù)器中,該代理包括HTTP接口模塊、硬件資源運(yùn)行狀態(tài)獲取模塊、軟件進(jìn)程啟停模塊和軟件進(jìn)程運(yùn)行狀態(tài)獲取模塊。
HTTP接口模塊具體包括硬件狀態(tài)獲取接口、軟件進(jìn)程啟停接口和軟件進(jìn)程狀態(tài)獲取接口;其中,硬件狀態(tài)獲取接口、軟件進(jìn)程啟停接口和軟件進(jìn)程狀態(tài)獲取接口用于根據(jù)外部調(diào)用系統(tǒng)的請(qǐng)求參數(shù),分別調(diào)用硬件資源運(yùn)行狀態(tài)獲取模塊、軟件進(jìn)程啟停模塊和軟件進(jìn)程運(yùn)行狀態(tài)獲取模塊,并將調(diào)用的模塊返回的數(shù)據(jù)傳輸至外部調(diào)用系統(tǒng)。軟件進(jìn)程啟停接口請(qǐng)求的啟停類型包括一鍵啟停本機(jī)進(jìn)程、啟停單個(gè)進(jìn)程和一鍵啟停集群所有進(jìn)程;軟件進(jìn)程狀態(tài)獲取接口請(qǐng)求的類型包括一鍵獲取本機(jī)進(jìn)程狀態(tài)、獲取單個(gè)進(jìn)程運(yùn)行狀態(tài)和一鍵獲取集群所有進(jìn)程運(yùn)行狀態(tài)。
硬件資源運(yùn)行狀態(tài)獲取模塊用于按照硬件狀態(tài)獲取接口的請(qǐng)求,采用與當(dāng)前平臺(tái)結(jié)構(gòu)匹配的sigar動(dòng)態(tài)庫,獲取并返回當(dāng)前平臺(tái)硬件資源(CPU、內(nèi)存、磁盤和網(wǎng)卡)的運(yùn)行狀態(tài)信息。
軟件進(jìn)程啟停模塊用于按照軟件進(jìn)程啟停接口的請(qǐng)求,啟停止當(dāng)前平臺(tái)的軟件進(jìn)程。具體為:若接收到的啟停類型為一鍵啟停本機(jī)進(jìn)程,則依據(jù)定義的進(jìn)程啟停命令順序先后進(jìn)行進(jìn)程的啟停;若啟停類型為啟停單個(gè)進(jìn)程,則依據(jù)啟停的進(jìn)程名稱在配置文件中找到該進(jìn)程的啟停腳本,然后調(diào)用該腳本進(jìn)行進(jìn)程啟停;若啟停類型為一鍵啟停集群所有進(jìn)程,則依據(jù)定義的集群機(jī)器順序列表依次發(fā)送請(qǐng)求給每臺(tái)機(jī)器進(jìn)行進(jìn)程啟停。
軟件進(jìn)程運(yùn)行狀態(tài)獲取模塊用于按照軟件進(jìn)程狀態(tài)獲取接口的請(qǐng)求,獲取并返回當(dāng)前平臺(tái)的軟件進(jìn)程的運(yùn)行狀態(tài)信息。具體為:若接收的請(qǐng)求類型為一鍵獲取本機(jī)進(jìn)程狀態(tài),則依據(jù)定義的進(jìn)程狀態(tài)獲取命令的先后順序進(jìn)行狀態(tài)獲取;若類型為獲取單個(gè)進(jìn)程運(yùn)行狀態(tài),則依據(jù)進(jìn)程名稱在配置文件中找到該進(jìn)程的狀態(tài)獲取腳本,然后調(diào)用該腳本進(jìn)行狀態(tài)獲取;若類型為一鍵獲取集群所有進(jìn)程運(yùn)行狀態(tài)信息,則依據(jù)定義的集群機(jī)器順序列表依次發(fā)送請(qǐng)求給每臺(tái)機(jī)器進(jìn)行進(jìn)程狀態(tài)獲取并將狀態(tài)結(jié)果依次返回給外部調(diào)用系統(tǒng)。
基于上述的監(jiān)控代理的監(jiān)控方法的步驟為:
(1)使用Jetty作為內(nèi)嵌的Web服務(wù)器提供HTTP接口;
(2)在配置文件中定義集群機(jī)器啟停順序的IP地址,定義每臺(tái)機(jī)器部署的軟件進(jìn)程名稱、進(jìn)程啟停腳本、進(jìn)程狀態(tài)獲取腳本,通過HTTP接口發(fā)送至監(jiān)控代理;
(3)當(dāng)監(jiān)控代理收到硬件狀態(tài)獲取請(qǐng)求時(shí),根據(jù)當(dāng)前平臺(tái)架構(gòu)(X86或ARM)選擇匹配的sigar動(dòng)態(tài)庫進(jìn)行硬件狀態(tài)信息的獲取,并將結(jié)果返回給外部調(diào)用系統(tǒng);
(4)當(dāng)監(jiān)控代理收到軟件啟停請(qǐng)求時(shí),依據(jù)請(qǐng)求類型進(jìn)行相應(yīng)的操作,具體為:若啟停類型為一鍵啟停本機(jī)進(jìn)程,依據(jù)配置文件中定義的進(jìn)程啟停命令順序先后進(jìn)行進(jìn)程的啟停;若啟停類型為啟停單個(gè)進(jìn)程,依據(jù)啟停的進(jìn)程名稱在配置文件中找到該進(jìn)程的啟停腳本,然后調(diào)用該腳本進(jìn)行進(jìn)程啟停;若啟停類型為一鍵啟停集群所有進(jìn)程,依據(jù)定義的集群機(jī)器順序列表依次發(fā)送請(qǐng)求給每臺(tái)機(jī)器進(jìn)行進(jìn)程啟停;
(5)當(dāng)監(jiān)控代理收到軟件運(yùn)行狀態(tài)請(qǐng)求時(shí),依據(jù)請(qǐng)求類型進(jìn)行相應(yīng)的操作,具體為:若類型為一鍵獲取本機(jī)進(jìn)程狀態(tài),依據(jù)配置文件中定義的進(jìn)程狀態(tài)獲取命令的先后順序進(jìn)行狀態(tài)獲取;若類型為獲取單個(gè)進(jìn)程運(yùn)行狀態(tài),依據(jù)進(jìn)程名稱在配置文件中找到該進(jìn)程的狀態(tài)獲取腳本,然后調(diào)用該腳本進(jìn)行狀態(tài)獲取;若類型為一鍵獲取集群所有進(jìn)程運(yùn)行狀態(tài)信息,依據(jù)定義的集群機(jī)器順序列表依次發(fā)送請(qǐng)求給每臺(tái)機(jī)器進(jìn)行進(jìn)程狀態(tài)獲取并將狀態(tài)結(jié)果依次返回給外部調(diào)用系統(tǒng)。
以上所揭露的僅為本發(fā)明一種較佳實(shí)施例而已,不能以此來限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。