本發(fā)明涉及分布式系統(tǒng)技術(shù)領(lǐng)域,特別是涉及一種服務(wù)器監(jiān)控方法。
背景技術(shù):
分布式系統(tǒng)中的服務(wù)器集群,通常都有一定規(guī)模,從數(shù)臺(tái)、數(shù)十臺(tái)到成百上千臺(tái)。這些服務(wù)器的部署可以是同一機(jī)房中跨網(wǎng)段的,也可以是同一地區(qū)跨idc(互聯(lián)網(wǎng)數(shù)據(jù)中心)機(jī)房的,還可以是跨地域跨idc機(jī)房的,對(duì)于這種復(fù)雜網(wǎng)絡(luò)環(huán)境下的分布式系統(tǒng),如何對(duì)這些分布式的服務(wù)器進(jìn)行及時(shí)高效的在線狀態(tài)、運(yùn)行狀態(tài)和運(yùn)行任務(wù)狀態(tài)的監(jiān)控是當(dāng)前存在的難題之一。
對(duì)于分布式系統(tǒng)來(lái)說(shuō),它的服務(wù)器部署通常是跨網(wǎng)段、跨idc機(jī)房、跨地域的,這帶來(lái)了巨大的網(wǎng)絡(luò)環(huán)境的差異、網(wǎng)絡(luò)復(fù)雜性和網(wǎng)絡(luò)不穩(wěn)定性。對(duì)于要進(jìn)行高密度計(jì)算、存儲(chǔ)和i/o的分布式系統(tǒng)來(lái)說(shuō),如果高效地監(jiān)控服務(wù)器的在線狀態(tài)和運(yùn)行狀態(tài)(如cpu使用率、內(nèi)存使用率、網(wǎng)絡(luò)實(shí)時(shí)帶寬、關(guān)鍵的存儲(chǔ)空間占用量等)是必須的。
在分布式系統(tǒng)中,在運(yùn)行的任務(wù)量可以很多,任務(wù)的類型也很多樣化,對(duì)于這些任務(wù)的實(shí)時(shí)運(yùn)行狀態(tài)(如cpu使用率、內(nèi)存使用率、網(wǎng)絡(luò)使用情況、運(yùn)行日志等)的監(jiān)控也是必須的。
目前分布式系統(tǒng)監(jiān)控中,zabbix是應(yīng)用得比較多的一個(gè),它是一個(gè)企業(yè)級(jí)的開源分布式監(jiān)控解決方案,由一個(gè)國(guó)外的團(tuán)隊(duì)持續(xù)維護(hù)更新,軟件可以自由下載使用,運(yùn)作團(tuán)隊(duì)靠提供收費(fèi)的技術(shù)支持贏利。
zabbix功能:具備常見(jiàn)的商業(yè)監(jiān)控軟件所具備的功能(主機(jī)的性能監(jiān)控、網(wǎng)絡(luò)設(shè)備性能監(jiān)控、數(shù)據(jù)庫(kù)性能監(jiān)控、ftp等通用協(xié)議監(jiān)控、多種告警方式、詳細(xì)的報(bào)表圖表繪制)支持自動(dòng)發(fā)現(xiàn)網(wǎng)絡(luò)設(shè)備和服務(wù)器;支持分布式,能集中展示、管理分布式的監(jiān)控點(diǎn);擴(kuò)展性強(qiáng),server提供通用接口,可以自己開發(fā)完善各類監(jiān)控。
zabbix對(duì)大型的跨idc機(jī)房、跨地域的分布式系統(tǒng)的監(jiān)控有如下缺點(diǎn):
1、對(duì)于大型分布式系統(tǒng),特別是跨idc機(jī)房和跨地域的分布式系統(tǒng)來(lái)說(shuō),zabbix對(duì)這種復(fù)雜網(wǎng)絡(luò)的適用性不好,監(jiān)控能力弱,對(duì)服務(wù)器異常響應(yīng)不及時(shí),不能及時(shí)發(fā)現(xiàn)服務(wù)器的網(wǎng)絡(luò)異常和運(yùn)行異常。
2、zabbix只有單server端來(lái)收集和處理數(shù)據(jù),當(dāng)它的性能出現(xiàn)瓶頸時(shí),會(huì)導(dǎo)致整個(gè)zabbix系統(tǒng)添加主機(jī)不正常,代理端的數(shù)據(jù)無(wú)法正常收集或是zabbix服務(wù)端的服務(wù)器性能嚴(yán)重下降,錯(cuò)誤報(bào)告cpu占用過(guò)高或i/o占用過(guò)高等問(wèn)題
3、zabbix不支持對(duì)分布系統(tǒng)中運(yùn)行任務(wù)進(jìn)行定制化的狀態(tài)監(jiān)控
綜上,zabbix的缺點(diǎn)主要有三點(diǎn):對(duì)復(fù)雜網(wǎng)絡(luò)的適應(yīng)性不好,單server端是整個(gè)監(jiān)控系統(tǒng)的瓶頸,不支持定制化的任務(wù)運(yùn)行狀態(tài)監(jiān)控。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對(duì)現(xiàn)有技術(shù)存在的問(wèn)題和不足,提供一種服務(wù)器監(jiān)控方法。
本發(fā)明是通過(guò)下述技術(shù)方案來(lái)解決上述技術(shù)問(wèn)題的:
本發(fā)明提供一種服務(wù)器監(jiān)控方法,其特征在于,其包括與待監(jiān)控服務(wù)器一一對(duì)應(yīng)的節(jié)點(diǎn)監(jiān)控模塊、至少一服務(wù)器連接控制模塊、一數(shù)據(jù)處理模塊、一顯示模塊和一數(shù)據(jù)庫(kù),每一節(jié)點(diǎn)監(jiān)控模塊設(shè)置于對(duì)應(yīng)的待監(jiān)控服務(wù)器中,每一服務(wù)器連接控制模塊通信連接至少一個(gè)節(jié)點(diǎn)監(jiān)控模塊,包括以下步驟:
s1、每一服務(wù)器連接控制模塊通過(guò)對(duì)應(yīng)的節(jié)點(diǎn)監(jiān)控模塊與對(duì)應(yīng)的待監(jiān)控服務(wù)器建立長(zhǎng)連接;
s2、每一節(jié)點(diǎn)監(jiān)控模塊監(jiān)控對(duì)應(yīng)的待監(jiān)控服務(wù)器的服務(wù)器運(yùn)行狀態(tài)數(shù)據(jù)和任務(wù)狀態(tài)數(shù)據(jù),并將該服務(wù)器運(yùn)行狀態(tài)數(shù)據(jù)、任務(wù)狀態(tài)數(shù)據(jù)以及該待監(jiān)控服務(wù)器的識(shí)別信息上報(bào)給對(duì)應(yīng)的服務(wù)器連接控制模塊,其中,每一待監(jiān)控服務(wù)器均具備一唯一的識(shí)別信息;
s3、每一服務(wù)器連接控制模塊將接收的該服務(wù)器運(yùn)行狀態(tài)數(shù)據(jù)、任務(wù)狀態(tài)數(shù)據(jù)及對(duì)應(yīng)的識(shí)別信息上報(bào)給該數(shù)據(jù)處理模塊;
s4、每一服務(wù)器連接控制模塊不斷發(fā)送和接收該節(jié)點(diǎn)監(jiān)控模塊反饋的心跳數(shù)據(jù)或服務(wù)器運(yùn)行狀態(tài)數(shù)據(jù)和任務(wù)狀態(tài)數(shù)據(jù),并將該待監(jiān)控服務(wù)器的在線狀態(tài)數(shù)據(jù)上報(bào)給該數(shù)據(jù)處理模塊;
s5、該數(shù)據(jù)處理模塊處理每一服務(wù)器連接控制模塊上報(bào)的服務(wù)器運(yùn)行狀態(tài)數(shù)據(jù)、任務(wù)狀態(tài)數(shù)據(jù)、在線狀態(tài)數(shù)據(jù)及對(duì)應(yīng)的識(shí)別信息,并分析出每一待監(jiān)控服務(wù)器的服務(wù)器運(yùn)行狀態(tài)、任務(wù)狀態(tài)以及在線狀態(tài);
s6、該顯示模塊顯示每一待監(jiān)控服務(wù)器的服務(wù)器運(yùn)行狀態(tài)、任務(wù)狀態(tài)以及在線狀態(tài);
s7、該數(shù)據(jù)庫(kù)存儲(chǔ)每一待監(jiān)控服務(wù)器的服務(wù)器運(yùn)行狀態(tài)、任務(wù)狀態(tài)以及在線狀態(tài)。
較佳地,該服務(wù)器監(jiān)控方法還包括一中央管理模塊,該中央管理模塊在接收一需新增待監(jiān)控服務(wù)器的請(qǐng)求時(shí),調(diào)用一致性哈希算法為該新增的待監(jiān)控服務(wù)器分配一對(duì)應(yīng)的服務(wù)器連接控制模塊;
該分配的服務(wù)器連接控制模塊創(chuàng)建與該新增待監(jiān)控服務(wù)器上的新增的節(jié)點(diǎn)監(jiān)控模塊的長(zhǎng)連接;
該新增的節(jié)點(diǎn)監(jiān)控模塊通過(guò)建立的長(zhǎng)連接發(fā)送心跳數(shù)據(jù)和服務(wù)器運(yùn)行數(shù)據(jù)至該分配的服務(wù)器連接控制模塊;
該分配的服務(wù)器連接控制模塊收到數(shù)據(jù)后調(diào)用該數(shù)據(jù)處理模塊對(duì)該些數(shù)據(jù)進(jìn)行處理,并記錄在數(shù)據(jù)庫(kù)中;
該數(shù)據(jù)處理模塊根據(jù)該新增待監(jiān)控服務(wù)器的在線狀態(tài)數(shù)據(jù)和運(yùn)行狀態(tài)數(shù)據(jù)判定該新增待監(jiān)控服務(wù)器的在線狀態(tài)和運(yùn)行狀態(tài)。
較佳地,該服務(wù)器監(jiān)控方法還包括一用于供用戶設(shè)置需要增加或刪除某一待監(jiān)控服務(wù)器上的運(yùn)行任務(wù)的設(shè)置界面;
該中央管理模塊在接收到該設(shè)置界面?zhèn)鬏攣?lái)的需增加或刪除某一待監(jiān)控服務(wù)器上的運(yùn)行任務(wù)的指令時(shí),查詢?cè)摂?shù)據(jù)庫(kù),查詢出所有該運(yùn)行任務(wù)對(duì)應(yīng)的服務(wù)器連接控制模塊,并將該指令解析后通過(guò)長(zhǎng)連接發(fā)給運(yùn)行該運(yùn)行任務(wù)的待監(jiān)控服務(wù)器對(duì)應(yīng)的節(jié)點(diǎn)監(jiān)控模塊,該對(duì)應(yīng)的節(jié)點(diǎn)監(jiān)控模塊收到該指令后將啟動(dòng)或停止對(duì)該運(yùn)行任務(wù)的監(jiān)控。
在符合本領(lǐng)域常識(shí)的基礎(chǔ)上,上述各優(yōu)選條件,可任意組合,即得本發(fā)明各較佳實(shí)例。
本發(fā)明的積極進(jìn)步效果在于:
1、實(shí)現(xiàn)了復(fù)雜網(wǎng)絡(luò)下對(duì)待監(jiān)控服務(wù)器的在線狀態(tài)和運(yùn)行狀態(tài)的實(shí)時(shí)監(jiān)控;
2、能夠?qū)崟r(shí)添加被監(jiān)控服務(wù)器;
3、支持任意個(gè)服務(wù)器連接控制模塊的server端,實(shí)現(xiàn)了動(dòng)態(tài)的負(fù)載均衡策略來(lái)支持大型分布式系統(tǒng)的大量服務(wù)器的監(jiān)控;
4、可以對(duì)服務(wù)器中的運(yùn)行的任務(wù)進(jìn)行定制化狀態(tài)監(jiān)控。
附圖說(shuō)明
圖1為本發(fā)明較佳實(shí)施例的服務(wù)器監(jiān)控方法的流程圖。
圖2為本發(fā)明較佳實(shí)施例的添加待監(jiān)控服務(wù)器的時(shí)序圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
如圖1所示,本實(shí)施例提供一種服務(wù)器監(jiān)控方法,其包括與待監(jiān)控服務(wù)器一一對(duì)應(yīng)的節(jié)點(diǎn)監(jiān)控模塊、至少一服務(wù)器連接控制模塊、一數(shù)據(jù)處理模塊、一顯示模塊和一數(shù)據(jù)庫(kù),每一節(jié)點(diǎn)監(jiān)控模塊設(shè)置于對(duì)應(yīng)的待監(jiān)控服務(wù)器中,每一服務(wù)器連接控制模塊通信連接至少一個(gè)節(jié)點(diǎn)監(jiān)控模塊,包括以下步驟:
步驟101、每一服務(wù)器連接控制模塊通過(guò)對(duì)應(yīng)的節(jié)點(diǎn)監(jiān)控模塊與對(duì)應(yīng)的待監(jiān)控服務(wù)器建立長(zhǎng)連接;
步驟102、每一節(jié)點(diǎn)監(jiān)控模塊監(jiān)控對(duì)應(yīng)的待監(jiān)控服務(wù)器的服務(wù)器運(yùn)行狀態(tài)數(shù)據(jù)和任務(wù)狀態(tài)數(shù)據(jù),并將該服務(wù)器運(yùn)行狀態(tài)數(shù)據(jù)、任務(wù)狀態(tài)數(shù)據(jù)以及該待監(jiān)控服務(wù)器的識(shí)別信息上報(bào)給對(duì)應(yīng)的服務(wù)器連接控制模塊,其中,每一待監(jiān)控服務(wù)器均具備一唯一的識(shí)別信息;
步驟103、每一服務(wù)器連接控制模塊將接收的該服務(wù)器運(yùn)行狀態(tài)數(shù)據(jù)、任務(wù)狀態(tài)數(shù)據(jù)及對(duì)應(yīng)的識(shí)別信息上報(bào)給該數(shù)據(jù)處理模塊;
步驟104、每一服務(wù)器連接控制模塊不斷發(fā)送和接收該節(jié)點(diǎn)監(jiān)控模塊反饋的心跳數(shù)據(jù)或服務(wù)器運(yùn)行狀態(tài)數(shù)據(jù)和任務(wù)狀態(tài)數(shù)據(jù),并將該待監(jiān)控服務(wù)器的在線狀態(tài)數(shù)據(jù)上報(bào)給該數(shù)據(jù)處理模塊;
步驟105、該數(shù)據(jù)處理模塊處理每一服務(wù)器連接控制模塊上報(bào)的服務(wù)器運(yùn)行狀態(tài)數(shù)據(jù)、任務(wù)狀態(tài)數(shù)據(jù)、在線狀態(tài)數(shù)據(jù)及對(duì)應(yīng)的識(shí)別信息,并分析出每一待監(jiān)控服務(wù)器的服務(wù)器運(yùn)行狀態(tài)、任務(wù)狀態(tài)以及在線狀態(tài);
步驟106、該顯示模塊顯示每一待監(jiān)控服務(wù)器的服務(wù)器運(yùn)行狀態(tài)、任務(wù)狀態(tài)以及在線狀態(tài);
步驟107、該數(shù)據(jù)庫(kù)存儲(chǔ)每一待監(jiān)控服務(wù)器的服務(wù)器運(yùn)行狀態(tài)、任務(wù)狀態(tài)以及在線狀態(tài)。
如圖2所示,以下為本實(shí)施例一個(gè)完整的新增一個(gè)待監(jiān)控服務(wù)器的流程:
1、假設(shè)有一臺(tái)新的被監(jiān)控節(jié)點(diǎn)(待監(jiān)控服務(wù)器),為該待監(jiān)控服務(wù)器安裝監(jiān)控agent程序和對(duì)應(yīng)的配置文檔,并啟動(dòng)該待監(jiān)控服務(wù)器;
2、監(jiān)控agent程序?qū)⒆x取和該待監(jiān)控服務(wù)器對(duì)應(yīng)配置文檔,并依據(jù)配置文檔中的url地址,訪問(wèn)中央管理模塊;
3、當(dāng)中央管理模塊收到有新的監(jiān)控agent程序的請(qǐng)求時(shí),就調(diào)用一致性哈希算法為該待監(jiān)控服務(wù)器分配一個(gè)對(duì)應(yīng)的服務(wù)器連接控制模塊,并將這些數(shù)據(jù)寫入到數(shù)據(jù)庫(kù)的host表中;
4、分配的服務(wù)器連接控制模塊收到中央管理模塊的指令后,創(chuàng)建一個(gè)和新的監(jiān)控agent程序下的節(jié)點(diǎn)監(jiān)控模塊的長(zhǎng)連接;
5、節(jié)點(diǎn)監(jiān)控模塊和服務(wù)器連接控制模塊建立長(zhǎng)連接后,將通過(guò)建立的長(zhǎng)連接發(fā)送心跳數(shù)據(jù)和服務(wù)器運(yùn)行數(shù)據(jù)到服務(wù)器連接控制模塊;
6、服務(wù)器連接控制模塊收到數(shù)據(jù)后會(huì)調(diào)用數(shù)據(jù)處理模塊,對(duì)這些數(shù)據(jù)進(jìn)行處理,并記錄在數(shù)據(jù)庫(kù)的node表中;
7、當(dāng)服務(wù)器掉線(如宕機(jī),網(wǎng)絡(luò)斷開)時(shí),長(zhǎng)連接會(huì)斷開,或者心跳數(shù)據(jù)包異常時(shí)(無(wú)數(shù)據(jù)包發(fā)送、數(shù)據(jù)包間隔時(shí)間增加)服務(wù)器連接控制模塊能實(shí)時(shí)收到,從而判斷服務(wù)器是否在線和連接的網(wǎng)絡(luò)質(zhì)量;
8、數(shù)據(jù)處理模塊根據(jù)待監(jiān)控服務(wù)器的在線狀態(tài)數(shù)據(jù)和運(yùn)行狀態(tài)數(shù)據(jù),可以判斷出待監(jiān)控服務(wù)器的在線狀態(tài)和運(yùn)行狀態(tài)。
重復(fù)以上步驟,即可添加多個(gè)待監(jiān)控服務(wù)器。
以下為本實(shí)施例一個(gè)完整的為被監(jiān)控服務(wù)器添加/刪除一個(gè)運(yùn)行任務(wù)的流程:
1、在web管理程序的html界面上設(shè)置要增加/刪除指定被監(jiān)控服務(wù)器上的運(yùn)行任務(wù);
2、web管理程序?qū)?huì)把需增加或刪除某一待監(jiān)控服務(wù)器上的運(yùn)行任務(wù)的指令發(fā)送給中央管理模塊;
3、中央管理模塊會(huì)查找數(shù)據(jù)庫(kù),查詢到所有該運(yùn)行任務(wù)所對(duì)應(yīng)的服務(wù)器連接控制模塊,并將該指令解析后通過(guò)長(zhǎng)連接發(fā)給運(yùn)行這個(gè)運(yùn)行任務(wù)的被監(jiān)控服務(wù)器的節(jié)點(diǎn)監(jiān)控模塊;
4、節(jié)點(diǎn)監(jiān)控模塊收到指令后將啟動(dòng)/停止對(duì)任務(wù)的監(jiān)控,并上報(bào)數(shù)據(jù);
5、數(shù)據(jù)經(jīng)長(zhǎng)連接發(fā)送到數(shù)據(jù)處理模塊后,會(huì)記錄在數(shù)據(jù)庫(kù)的nodetask
表中。
重復(fù)以上步驟,即為被監(jiān)控服務(wù)器添加/刪除多個(gè)運(yùn)行任務(wù)。
雖然以上描述了本發(fā)明的具體實(shí)施方式,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,這些僅是舉例說(shuō)明,本發(fā)明的保護(hù)范圍是由所附權(quán)利要求書限定的。本領(lǐng)域的技術(shù)人員在不背離本發(fā)明的原理和實(shí)質(zhì)的前提下,可以對(duì)這些實(shí)施方式做出多種變更或修改,但這些變更和修改均落入本發(fā)明的保護(hù)范圍。