專利名稱:一種基于事件機(jī)制的分布式網(wǎng)絡(luò)監(jiān)控方法
技術(shù)領(lǐng)域:
本發(fā)明涉及到計算機(jī)網(wǎng)絡(luò)監(jiān)控技術(shù),具體涉及到一種基于事件機(jī)制的分布式網(wǎng)絡(luò)監(jiān)控系統(tǒng)中服務(wù)器端監(jiān)控的方法。
背景技術(shù):
21世紀(jì)已進(jìn)入計算機(jī)網(wǎng)絡(luò)時代。計算機(jī)網(wǎng)絡(luò)極大普及,計算機(jī)應(yīng)用已進(jìn)入更高層次,計算機(jī)網(wǎng)絡(luò)成了計算機(jī)行業(yè)的一部分。新一代的計算機(jī)已將網(wǎng)絡(luò)接口集成到主板上,網(wǎng)絡(luò)功能已嵌入到操作系統(tǒng)之中,智能大樓的興建已經(jīng)和計算機(jī)網(wǎng)絡(luò)布線同時、同地、同方案施工。隨著通信和計算機(jī)技術(shù)緊密結(jié)合和同步發(fā)展,我國計算機(jī)網(wǎng)絡(luò)技術(shù)飛躍發(fā)展。網(wǎng)絡(luò)管理就是通過某種方式對網(wǎng)絡(luò)進(jìn)行管理,使網(wǎng)絡(luò)能正常高效地運(yùn)行。其目的很明確,就是使網(wǎng)絡(luò)中的資源得到更加有效的利用。網(wǎng)絡(luò)管理包括對硬件、軟件和人力的使用、綜合與協(xié)調(diào),以便對網(wǎng)絡(luò)資源進(jìn)行監(jiān)視、測試、配置、分析、評價和控制,這樣就能以合理的價格滿足網(wǎng)絡(luò)的一些需求,如實時運(yùn)行性能、服務(wù)質(zhì)量等。網(wǎng)絡(luò)管理經(jīng)過一段時間的發(fā)展,已經(jīng)有了長足的進(jìn)步,各種各樣的監(jiān)控管理工具正在滿足著不同的網(wǎng)絡(luò)監(jiān)控需求,其中,分布式網(wǎng)絡(luò)監(jiān)控是其中重要的一份子。分布式網(wǎng)絡(luò)監(jiān)控是將地理上分布的網(wǎng)絡(luò)管理客戶機(jī)與一組網(wǎng)絡(luò)管理服務(wù)器相互作用,共同完成網(wǎng)絡(luò)監(jiān)控管理功能。在以前,由于網(wǎng)絡(luò)環(huán)境中客戶機(jī)比較少,相應(yīng)的監(jiān)控資源也比較少,采用的監(jiān)控手段也比較簡單,沒有統(tǒng)一的規(guī)劃,通常是通過多個進(jìn)程分別對硬件和遠(yuǎn)程主機(jī)的軟件資源進(jìn)行監(jiān)控;但是,隨著自動辦公化的發(fā)展,現(xiàn)在的企業(yè),網(wǎng)絡(luò)環(huán)境中客戶機(jī)越來越多,網(wǎng)絡(luò)環(huán)境越來越復(fù)雜,原有的監(jiān)控系統(tǒng)已經(jīng)不能滿足增長的辦公環(huán)境, 由于監(jiān)控的隨意性、網(wǎng)絡(luò)環(huán)境的復(fù)雜性等原因,監(jiān)控服務(wù)器上運(yùn)行的監(jiān)控進(jìn)程越來越多,資源消耗越來越大,導(dǎo)致監(jiān)控服務(wù)器運(yùn)行速度越來越慢,造成監(jiān)控系統(tǒng)不能及時響應(yīng)客戶機(jī)請求,監(jiān)控系統(tǒng)不能及時獲得客戶機(jī)資源狀態(tài)變化的情況,影響企業(yè)的正常運(yùn)營。這個時候,如果還要繼續(xù)使用原有的監(jiān)控系統(tǒng),企業(yè)只能增加監(jiān)控服務(wù)器以分散每個監(jiān)控服務(wù)器的的壓力,或者重新購買監(jiān)控軟件以提高監(jiān)控能力,而這兩種方法都會給企業(yè)運(yùn)營帶來額外的成本。
發(fā)明內(nèi)容
針對以上問題,本發(fā)明提供了一種基于監(jiān)控服務(wù)器端的采用事件機(jī)制的通用分布式網(wǎng)絡(luò)監(jiān)控方法。所謂事件機(jī)制,是將所有的操作(主要分為兩類,監(jiān)控操作包括硬件設(shè)備監(jiān)控、應(yīng)用服務(wù)監(jiān)控等;管理操作包括監(jiān)控結(jié)果回收、日志記錄等)通過統(tǒng)一的事件結(jié)構(gòu)來表示,將所有的操作統(tǒng)一化,并通過事件優(yōu)先級隊列的方式使得監(jiān)控進(jìn)一步優(yōu)化,使監(jiān)控和管理一體化,實現(xiàn)對網(wǎng)絡(luò)中硬件設(shè)備、操作系統(tǒng)、應(yīng)用服務(wù)等軟硬件設(shè)備的統(tǒng)一監(jiān)控;并通過并行服務(wù)檢查,按需調(diào)用監(jiān)控進(jìn)程,大大降低了監(jiān)控服務(wù)器的負(fù)載,提高了單臺監(jiān)控服務(wù)器的監(jiān)控性能,解決了增長的網(wǎng)絡(luò)環(huán)境中服務(wù)器監(jiān)控性能瓶頸問題,在不需要增加監(jiān)控服務(wù)器數(shù)量、不需要重新購買新的監(jiān)控軟件的前提下,仍然能夠?qū)W(wǎng)絡(luò)中的各種軟硬件設(shè)備進(jìn)行監(jiān)控而不會出現(xiàn)遺漏或響應(yīng)不及時的問題,大大提高了原有監(jiān)控環(huán)境的生命周期。為了實現(xiàn)以上目標(biāo),本發(fā)明提供了以下技術(shù)方案
1)讀取配置文件,加載事件處理模塊;
2)監(jiān)控初始化,創(chuàng)建各個事件,按照事件執(zhí)行時間構(gòu)建兩個優(yōu)先級的事件隊列高優(yōu)先級事件(檢查事件以外的所有事件)隊列,低優(yōu)先級事件(檢查事件)隊列;
3)進(jìn)入監(jiān)控循環(huán),根據(jù)優(yōu)先級處理各個事件首先處理高優(yōu)先級隊列中的事件,其次處理低優(yōu)先級隊列事件;
4)監(jiān)控系統(tǒng)收到停止信號,退出。本發(fā)明適用于分布式監(jiān)控管理系統(tǒng),跟傳統(tǒng)的分布式監(jiān)控系統(tǒng)相比,有以下兩方面的優(yōu)勢
1)監(jiān)控流程使用單進(jìn)程循環(huán)方式,減少了系統(tǒng)中運(yùn)行的進(jìn)程數(shù),降低了系統(tǒng)負(fù)載,提高了單機(jī)監(jiān)控能力;
2)采用統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)——事件,簡化了監(jiān)控管理操作,節(jié)省了管理所需的系統(tǒng)資源,主要是存儲空間。
圖1是本發(fā)明適用的監(jiān)控系統(tǒng)結(jié)構(gòu)示意圖; 圖2是本發(fā)明分布式網(wǎng)絡(luò)監(jiān)控方法實現(xiàn)的流程圖; 圖3是本發(fā)明監(jiān)控循環(huán)的流程圖。
具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。下面結(jié)合圖1、圖2和圖3,通過具體實施方式
對本發(fā)明作進(jìn)一步的詳細(xì)描述
圖1是本發(fā)明適用的分布式網(wǎng)絡(luò)監(jiān)控系統(tǒng)結(jié)構(gòu)示意圖。本方法主要針對監(jiān)控服務(wù)器端,主要由兩個部分構(gòu)成事件處理模塊和基于優(yōu)先級的事件隊列,事件處理模塊用于對事件隊列中的事件進(jìn)行處理,而優(yōu)先級隊列則用于存儲所有的事件。圖2是本發(fā)明分布式網(wǎng)絡(luò)監(jiān)控方法實現(xiàn)的總流程圖,圖3是監(jiān)控循環(huán)的流程圖,具體的流程如下
1)讀取配置文件,加載事件處理模塊
在該方法中,首先要讀取配置文件,配置文件主要用于定義所有監(jiān)控內(nèi)容和監(jiān)控選項, 包括監(jiān)控對象(分為主機(jī)host和服務(wù)service兩類)、監(jiān)控選項(主要包括檢查間隔、結(jié)果回收間隔、日志記錄間隔等內(nèi)容)。主機(jī)是以實體存在的客戶機(jī),可以是硬件設(shè)備,也可以是一個操作系統(tǒng);而服務(wù)則是存在于實體上的各個具體應(yīng)用。讀取配置文件的過程就是獲取所有已經(jīng)定義好的主機(jī)和服務(wù),并讀取所有的監(jiān)控選項。此外,還需要初始化并加載事件處理模塊,事件處理模塊是一系列事件處理操作的集合,包括事件檢查處理(參考步驟4)、外部命令處理(步驟3中針對EVENT_C0MMAND_ CHECK的處理)、結(jié)果回收(步驟3中針對EVENT_CHECK_REAPER的處理)以及日志處理(步驟3中針對EVENT_L0G_R0TATI0N的處理)等。2)監(jiān)控初始化(init_event_l00p),根據(jù)配置文件內(nèi)容創(chuàng)建事件,構(gòu)建不同優(yōu)先級的事件隊列;
本發(fā)明所述的方法以事件機(jī)制為核心,因此所有的操作都是由事件觸發(fā)器觸發(fā)的。 init_event_loop用于創(chuàng)建事件并進(jìn)行初始化工作,主要包括
利用從配置文件中讀取的信息建立SChedulingjnfo表,該表的內(nèi)容包括總的host 數(shù)、總的service數(shù)、單個host平均service數(shù)、平均service檢查間隔、host檢查總間隔、 service檢查總間隔等;
為了降低系統(tǒng)負(fù)載,需要調(diào)整兩個主機(jī)或者兩個服務(wù)之間的檢查間隔,以避免同一時間出現(xiàn)多個檢查事件,本發(fā)明中采用平均值法計算得到最優(yōu)的檢查間隔,計算公式為最優(yōu) host 檢查間隔(host_inter_check_delay)=總 host 檢查間隔 / 總的 host 數(shù),最優(yōu) service 檢查間隔(service_inter_check_delay)=總 service 檢查間隔 / 總的 service 數(shù)。創(chuàng)建事件,構(gòu)建事件優(yōu)先級隊列。事件按照功能分為檢查事件和非檢查事件。檢查事件分為兩類
#define EVENT_SERVICE_CHECK 0 // 服務(wù)檢查事件 #define EVENT_H0ST_CHECK 1 // 主機(jī)檢查事件非檢查事件包括所有檢查事件之外的其他事件,主要事件定義如下 #define EVENT_C0MMAND_CHECK 3 //外部命令事件 #define EVENT_L0G_R0TATI0N 4 // 日志記錄事件 #define EVENT_CHECK_REAPER 5 // 結(jié)果回收事件根據(jù)以上定義創(chuàng)建事件(event),定義如下。typedef struct event—struct{
int event_type; //事件類型,參考前面的事件類型定義 time_t run_time; //執(zhí)行時間
int recurring; //是否安排下一次執(zhí)行,檢查事件一般都會重復(fù)執(zhí)行 unsigned long event_interval ; //同一事件兩次檢查間隔,值來自配置文件 void *event_data; //事件數(shù)據(jù)內(nèi)容
struct event_struct *next; struct event_struct *prev; } event; //事件定義
根據(jù)檢查事件和非檢查事件的分類,構(gòu)建兩種優(yōu)先級隊列高優(yōu)先級隊列(用于存放非檢查事件)和低優(yōu)先級隊列(檢查事件)。構(gòu)建高優(yōu)先級隊列的邏輯計算得到非檢查事件的執(zhí)行事件(非檢查事件的執(zhí)行時間=當(dāng)前時間+該事件的檢查間隔),按照執(zhí)行時間插入到隊列中,并修改隊列執(zhí)行時間為隊列首事件的執(zhí)行時間;構(gòu)建低優(yōu)先級隊列邏輯如下 初始化間隔基數(shù)(mult_factor)為0,讀取最優(yōu)主機(jī)檢查間隔host_inter_check_delay, 依次讀取各個已經(jīng)定義好的主機(jī),對于每個主機(jī)檢查事件,其檢查時間=當(dāng)前時間+(host_ inter_check_delay*(mult_factor++));服務(wù)檢查事件同樣如此,讀取最優(yōu)服務(wù)檢查間隔 (service_inter_check_delay),依次讀取服務(wù)定義,其檢查時間=當(dāng)前時間+ (service,
5inter_check_delay* (mult_factor++)),根據(jù)檢查時間的先后次序?qū)⑺袡z查事件插入到低優(yōu)先級隊列中,并修改低優(yōu)先級執(zhí)行事件為隊列首事件的執(zhí)行時間。通過這樣的方式,可以將檢查時間平均化,避免某一個時間段內(nèi)檢查事件過多,造成系統(tǒng)負(fù)載過高而影響檢查效率。3)進(jìn)入監(jiān)控流程eVent_l00p,根據(jù)優(yōu)先級處理各個事件,參考圖3
事件隊列創(chuàng)建之后,僅需監(jiān)控流程eVent_l00p,event_loop以單個進(jìn)程循環(huán)方式執(zhí)行,流程如下
(1)高優(yōu)先級隊列判斷,見圖3中的Si。如果隊列空或者當(dāng)前時間小于隊列執(zhí)行時間, 則說明當(dāng)前沒有事件要執(zhí)行,轉(zhuǎn)入步驟(5);否則,轉(zhuǎn)入步驟O)。(2)處理高優(yōu)先級隊列首事件,見圖3中的S2。根據(jù)事件類型分別進(jìn)行相應(yīng)的處理,列舉主要的非檢查事件處理方法
針對EVENT_COMMAND_CHECK的處理檢查調(diào)用的外部命令是否存在,如果存在,則調(diào)用相應(yīng)的命令進(jìn)行處理。主要的外部命令包括停止檢測、調(diào)整下一次檢查時間、啟用或者禁用主機(jī)/服務(wù)通知等,這些外部命令都是可以根據(jù)自己的需求定義的; 針對EVENT_L0G_R0TATI0N的處理寫日志記錄到日志文件中; 針對EVENT_CHECK_REAPER的處理檢查結(jié)果回收處理,包括將檢查結(jié)果保存到文本文件中以及將結(jié)果通過數(shù)據(jù)庫讀寫模塊保存到數(shù)據(jù)庫中。處理完之后,將該事件從隊列中移除,并修改隊列執(zhí)行時間為當(dāng)前隊列首事件的執(zhí)行時間。(3)檢查是否需要安排下一次執(zhí)行,見圖3中的S3,如果不需要安排下一次執(zhí)行, 轉(zhuǎn)入步驟(1)繼續(xù)執(zhí)行下次循環(huán);如果需要安排下一次執(zhí)行,轉(zhuǎn)入步驟G)。(4)安排下一次執(zhí)行,見圖3中的S4。修改事件執(zhí)行時間為本次檢查時間+檢查間隔,按照事件執(zhí)行時間插入到相對應(yīng)的優(yōu)先級隊列中,并修改隊列執(zhí)行時間為當(dāng)前隊列首事件的執(zhí)行時間。(5)低優(yōu)先級隊列判斷,見圖3中的S5。如果隊列空或者當(dāng)前時間小于隊列執(zhí)行時間,則說明當(dāng)前沒有事件要執(zhí)行,轉(zhuǎn)入步驟(1);否則,轉(zhuǎn)入步驟(6)。(6)低優(yōu)先級隊列處理,見圖3中的S6。從隊列中取出首個檢查事件進(jìn)行處理,考慮到同一時間可能有多個檢查事件,因此采取并發(fā)方式進(jìn)行,主線程fork出一個子線程執(zhí)行該次檢查事件,見步驟(7)和步驟(8);之后,將該事件從隊列中移除,修改低優(yōu)先級隊列執(zhí)行時間為當(dāng)前隊列首事件的執(zhí)行時間,轉(zhuǎn)入步驟(3)。(7)子線程處理1,見圖3中的S7。子線程從事件內(nèi)容中獲取檢查內(nèi)容(包括檢查命令、檢查對象等),根據(jù)檢查內(nèi)容設(shè)置超時并向相應(yīng)主機(jī)發(fā)送監(jiān)控命令,之后等待客戶機(jī)反饋結(jié)果。(8)子線程處理2,見圖3中的S8。如果超時或者收到客戶機(jī)反饋結(jié)果,子線程創(chuàng)建回收事件,該事件的執(zhí)行時間為當(dāng)前時間,并將該事件按照執(zhí)行時間的順序插入到高優(yōu)先級隊列中,并結(jié)束該次檢查。4)退出
監(jiān)控過程會在幻中循環(huán),直到收到用戶發(fā)送來的結(jié)束信號,監(jiān)控系統(tǒng)退出,監(jiān)控過程結(jié)束。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于事件機(jī)制的分布式網(wǎng)絡(luò)監(jiān)控方法,其特征在于,包括以下步驟1)讀取配置文件,加載事件處理模塊;2)監(jiān)控初始化,創(chuàng)建監(jiān)控事件,構(gòu)建不同優(yōu)先級的事件隊列;3)進(jìn)入監(jiān)控循環(huán),根據(jù)優(yōu)先級處理各個事件首先處理高優(yōu)先級隊列中的事件,其次通過并發(fā)方式處理低優(yōu)先級隊列事件;4)退出。
2.如權(quán)利要求1所述的方法,其特征在于步驟1)中需要從配置文件中獲得創(chuàng)建事件所需要的監(jiān)控對象內(nèi)容以及監(jiān)控選項。
3.如權(quán)利要求1所述的方法,其特征在于步驟2)中的初始化工作包括得到監(jiān)控對象的信息內(nèi)容,通過計算得到各個數(shù)據(jù)信息,創(chuàng)建核心數(shù)據(jù)結(jié)構(gòu)事件,并在此基礎(chǔ)上構(gòu)建不同優(yōu)先級的事件隊列。
4.如權(quán)利要求1所述的方法,其特征在于步驟3)要中的高優(yōu)先級隊列中的事件是指監(jiān)控事件以外的其他事件,包括監(jiān)控回收事件、日志處理事件;低優(yōu)先級事件是指所有的監(jiān)控事件,包括主機(jī)監(jiān)控事件以及服務(wù)監(jiān)控事件兩類。
全文摘要
本發(fā)明實現(xiàn)了一種基于事件機(jī)制的分布式網(wǎng)絡(luò)監(jiān)控方法,包括各種初始化操作;構(gòu)建基于優(yōu)先級的事件隊列;根據(jù)優(yōu)先級對事件進(jìn)行處理;獲取網(wǎng)絡(luò)中客戶機(jī)的狀態(tài)信息等。本發(fā)明適用于當(dāng)前流行的分布式遠(yuǎn)程監(jiān)控系統(tǒng)架構(gòu),采用統(tǒng)一的事件機(jī)制,節(jié)省了存儲空間,優(yōu)化了管理方式;通過并行檢查機(jī)制,提高了監(jiān)控系統(tǒng)的監(jiān)控能力,最終提高了原有分布式監(jiān)控系統(tǒng)在增長的網(wǎng)絡(luò)環(huán)境下的使用壽命,可以有效減少企業(yè)硬件成本,較好地保證了正常的網(wǎng)絡(luò)環(huán)境。
文檔編號H04L29/08GK102457578SQ201110422600
公開日2012年5月16日 申請日期2011年12月16日 優(yōu)先權(quán)日2011年12月16日
發(fā)明者蘭雨晴, 劉艷彬, 夏穎, 張永軍, 王建慧 申請人:中標(biāo)軟件有限公司