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