多個數(shù)據(jù)表,其中,每個數(shù)據(jù)表中包括所對應(yīng)的監(jiān)控對象的OID和監(jiān)控數(shù)據(jù);
[0050]步驟S103,根據(jù)接收的需要訪問的多個目標(biāo)OID在預(yù)先生成的多個數(shù)據(jù)表中確定每個目標(biāo)OID所對應(yīng)的目標(biāo)數(shù)據(jù)表;
[0051 ] 步驟S105,在存在多個目標(biāo)OID對應(yīng)相同的目標(biāo)數(shù)據(jù)表的情況下,在目標(biāo)數(shù)據(jù)表中分別讀取多個目標(biāo)OID所分別對應(yīng)的監(jiān)控數(shù)據(jù)。
[0052]在一個實施例中,根據(jù)本發(fā)明實施例的服務(wù)器監(jiān)控方法包括:
[0053]其中,在根據(jù)接收的需要訪問的多個目標(biāo)OID在預(yù)先生成的多個數(shù)據(jù)表中確定每個目標(biāo)OID所對應(yīng)的目標(biāo)數(shù)據(jù)表時,可根據(jù)接收的需要訪問的目標(biāo)OID確定目標(biāo)監(jiān)控對象;然后,再在預(yù)先生成的多個數(shù)據(jù)表中確定目標(biāo)監(jiān)控對象所對應(yīng)的目標(biāo)數(shù)據(jù)表。
[0054]可選的,該服務(wù)器監(jiān)控方法進(jìn)一步包括:
[0055]在目標(biāo)數(shù)據(jù)表在預(yù)定時間內(nèi)被首次讀取監(jiān)控數(shù)據(jù)的情況下,可獲取目標(biāo)服務(wù)器的動態(tài)指標(biāo)的狀態(tài)信息;
[0056]并根據(jù)服務(wù)器的動態(tài)指標(biāo)的狀態(tài)信息對目標(biāo)數(shù)據(jù)表中的動態(tài)指標(biāo)的監(jiān)控數(shù)據(jù)進(jìn)行更新。
[0057]另外,在目標(biāo)數(shù)據(jù)表中讀取每個目標(biāo)OID所對應(yīng)的監(jiān)控數(shù)據(jù)之前,該服務(wù)器監(jiān)控方法進(jìn)一步包括:
[0058]對每個目標(biāo)OID所對應(yīng)的指標(biāo)的類型進(jìn)行判斷,在判斷該指標(biāo)為服務(wù)器的動態(tài)指標(biāo)的情況下,實時獲取服務(wù)器當(dāng)前該動態(tài)指標(biāo)的狀態(tài)信息;
[0059]基于當(dāng)前該動態(tài)指標(biāo)的狀態(tài)信息對目標(biāo)數(shù)據(jù)表中的該動態(tài)指標(biāo)的監(jiān)控數(shù)據(jù)進(jìn)行實時更新。
[0060]此外,在目標(biāo)數(shù)據(jù)表中讀取目標(biāo)OID所對應(yīng)的監(jiān)控數(shù)據(jù)時,可通過遍歷目標(biāo)數(shù)據(jù)表,來確定目標(biāo)OID所對應(yīng)的子監(jiān)控對象在目標(biāo)數(shù)據(jù)表中所對應(yīng)的數(shù)據(jù)行;再根據(jù)目標(biāo)OID所對應(yīng)的目標(biāo)數(shù)據(jù)表的列號,在數(shù)據(jù)行中確定該目標(biāo)OID所對應(yīng)的監(jiān)控數(shù)據(jù)。
[0061]可選的,該服務(wù)器監(jiān)控方法進(jìn)一步包括:
[0062]根據(jù)服務(wù)器的MIB文件預(yù)先生成服務(wù)器的動態(tài)庫文件;
[0063]其中,動態(tài)庫文件中包括對應(yīng)服務(wù)器的不同監(jiān)控對象的多個數(shù)據(jù)表。
[0064]根據(jù)本發(fā)明的實施例,還提供了一種基于SNMP的服務(wù)器監(jiān)控裝置。
[0065]為了更清楚的理解本發(fā)明的上述技術(shù)方案,下面以一具體實施例來對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)闡述。
[0066]請參照圖2所示,圖2示出了本發(fā)明方案的服務(wù)器監(jiān)控方法中的通過so庫擴(kuò)展snmp代理的示意性流程圖。
[0067]首先定義mib文件,根據(jù)mib文件編寫代碼,代碼中調(diào)用腳本和外部庫接口獲取服務(wù)器信息,然后對代碼進(jìn)行編譯生成so庫,so庫中包括對應(yīng)服務(wù)器的不同監(jiān)控對象的多個數(shù)據(jù)表,再配置snmpd.conf (net-snmp的代理配置文件,用于配置代理和管理端通信時的參數(shù))和加載so庫文件,重啟snmpd程序,就完成了 so擴(kuò)展snmp代理的過程。在此過程通過so擴(kuò)展實現(xiàn)數(shù)據(jù)表類型的指標(biāo)會簡化指標(biāo)值的獲取。
[0068]如圖3所示,在上述過中生成的數(shù)據(jù)表類型中的記錄是以鏈表的形式來保存的,根據(jù)本發(fā)明的一個實施例,數(shù)據(jù)表中每一行記錄的是目標(biāo)監(jiān)控對象(如服務(wù)器的風(fēng)扇)所對應(yīng)的每個子監(jiān)控對象(如風(fēng)扇I)的所有指標(biāo)(如溫度、轉(zhuǎn)速等),每一列記錄的是所有指標(biāo)的監(jiān)控數(shù)據(jù)(如溫度20°C、轉(zhuǎn)速5000r/min)。
[0069]當(dāng)然,數(shù)據(jù)表的類型中的記錄不僅僅可以是鏈表的形式,也可以是以其他的形式記錄。
[0070]為了更清楚的理解本發(fā)明的技術(shù)方案,請參照圖4,圖4示出了本發(fā)明的服務(wù)器監(jiān)控方法的整體流程。
[0071]根據(jù)本發(fā)明的實施例,首先初始化so庫,就可使so庫中對應(yīng)不同監(jiān)控對象(例如服務(wù)器的風(fēng)扇、CPU、存儲器等)的多個數(shù)據(jù)列表得到初始化;然后等待外部用戶對服務(wù)器信息的訪問,例如對前文提到的服務(wù)器的風(fēng)扇I的轉(zhuǎn)速(第一個0ID)和CPU的溫度(第二個0ID)的訪問,這里即為多個目標(biāo)OID ;然后在接收到外部訪問的第一個OID后,系統(tǒng)就會調(diào)用第三方庫的接口或腳本來獲取該服務(wù)器的軟硬件信息(即涉及外部訪問的OID的監(jiān)控對象的信息),并將該服務(wù)器的軟硬件信息(這里為服務(wù)器的風(fēng)扇的信息和服務(wù)器的CPU的信息)以圖3所示的鏈表的方式來組織每條記錄,從而生出對應(yīng)服務(wù)器的不同監(jiān)控對象(風(fēng)扇、CPU)的兩個數(shù)據(jù)表,其中,以風(fēng)扇的數(shù)據(jù)表為例,風(fēng)扇的鏈表中包括多條對應(yīng)該服務(wù)器的所有風(fēng)扇的記錄,其中,每條記錄中包含該風(fēng)扇的各種指標(biāo)(例如轉(zhuǎn)速、溫度等)的信息;
[0072]其中,由于這里外部訪問的第一個OID為風(fēng)扇I的轉(zhuǎn)速,那么系統(tǒng)會遍歷風(fēng)扇鏈表來取得與風(fēng)扇I對應(yīng)的記錄行,并根據(jù)上述第一個OID來從風(fēng)扇鏈表中取得與轉(zhuǎn)速對應(yīng)的列號,最后就可取得風(fēng)扇I的轉(zhuǎn)速所對應(yīng)的值。
[0073]由于上述過程僅僅完成了對一個OID的訪問處理過程,在前文中提到外部訪問的可能是多個0ID,那么在對第一個OID訪問完成后,會判斷一下OID的訪問是否完成(即是否還有需要訪問的0ID),如果沒有完成OID的數(shù)據(jù)訪問,則開始對第二個OID進(jìn)行訪問(即前文提到的CPU的溫度);如果完成了對所有需要訪問的OID的數(shù)據(jù)讀取,利用SNMP協(xié)議向外發(fā)布監(jiān)控信息,并繼續(xù)回到等待外部訪問的步驟。
[0074]其中,在一個實施例中,由于服務(wù)器的一些監(jiān)控對象的軟硬件指標(biāo)可能是不斷變化,那么在上述處理過程中,在讀取得到對應(yīng)記錄的列號前,因為需要對第一個OID所對應(yīng)的指標(biāo)的類型進(jìn)行判斷,例如這里的第一個OID為風(fēng)扇I的轉(zhuǎn)速,顯然該指標(biāo)為動態(tài)指標(biāo),那么系統(tǒng)就會實時獲取該服務(wù)器的風(fēng)扇I的當(dāng)前轉(zhuǎn)速的數(shù)值,并基于讀到的數(shù)值來實時修改風(fēng)扇數(shù)據(jù)鏈表中風(fēng)扇I所對應(yīng)的記錄中轉(zhuǎn)速指標(biāo)的字段值,實現(xiàn)對鏈表中該動態(tài)指標(biāo)的實時更新;然后系統(tǒng)讀取到的指標(biāo)值就會是最新的字段值,保證了讀取的目標(biāo)OID的監(jiān)控數(shù)據(jù)的時效性。
[0075]當(dāng)然上述溫度、轉(zhuǎn)速等指標(biāo)只是服務(wù)器中的監(jiān)控目標(biāo)中的示意性指標(biāo)而已,實際監(jiān)控中還可以是監(jiān)控對象的其他指標(biāo)。
[0076]此外,本發(fā)明不僅僅在訪問的目標(biāo)OID中涉及動態(tài)指標(biāo)時才會對該目標(biāo)OID所對應(yīng)的數(shù)據(jù)表中的動態(tài)字段進(jìn)行更新,在一個實施例中,根據(jù)本發(fā)明實施例的服務(wù)器監(jiān)控方法還可包括:
[0077]在目標(biāo)OID所對應(yīng)的數(shù)據(jù)表在一定時間內(nèi)被第一次訪問讀取監(jiān)控數(shù)據(jù)的情況下,就會對該數(shù)據(jù)表中的動態(tài)指標(biāo)的字段值進(jìn)行更新,具體的:例如前文中訪問的第二個OID (CPU的溫度),在CPU數(shù)據(jù)表10分鐘內(nèi)被第一次訪問記錄或讀取監(jiān)控數(shù)據(jù)的情況下,系統(tǒng)會獲取該服務(wù)器的CPU的所有動態(tài)指標(biāo)的狀態(tài)信息;并根據(jù)各個動態(tài)指標(biāo)的狀態(tài)信息來對CPU數(shù)據(jù)表中的各個動態(tài)指標(biāo)的監(jiān)控數(shù)據(jù)進(jìn)行及時更新。這樣就保證了 SO庫中各個數(shù)據(jù)表的監(jiān)控數(shù)據(jù)的動態(tài)加載,節(jié)省了 OID監(jiān)控數(shù)據(jù)的訪問時間。
[0078]另外,在上述實施例中,是以外部訪問的多個OID對應(yīng)的是不同監(jiān)控對象的數(shù)據(jù)表為例的,而根據(jù)本發(fā)明的又一實施例,還可能多個OID為對應(yīng)同一個數(shù)據(jù)表的情況,例如外部需要訪問風(fēng)扇I的溫度、風(fēng)扇I的轉(zhuǎn)速多個監(jiān)控目標(biāo)0ID,它們則對應(yīng)相同的目標(biāo)數(shù)據(jù)表(該服務(wù)器的風(fēng)扇數(shù)據(jù)表),那么只需在風(fēng)扇數(shù)據(jù)表中分別讀取多個監(jiān)控目標(biāo)OID分別對應(yīng)的監(jiān)控數(shù)據(jù),即風(fēng)扇I的溫度和風(fēng)扇I的轉(zhuǎn)速。這樣就可以調(diào)用腳本每次處理多個0ID,不需要多次調(diào)用腳本,提高了 snmp代理性能。同樣地,監(jiān)控目標(biāo)OID可以是服務(wù)器中任何可監(jiān)控的指標(biāo),風(fēng)扇的溫度和轉(zhuǎn)速只是本實施例中的監(jiān)控目標(biāo)0ID,并不限制本發(fā)明。
[0079]通過上述描述可以看出,借助于本發(fā)明的服務(wù)器監(jiān)控方法,不僅可以借助動態(tài)庫(例如so庫)來擴(kuò)展snmp代理功能,還能在so庫中調(diào)用腳本和庫接口獲取服務(wù)器信息,從而更加靈活和精確地獲得信息;并通過將OID在動態(tài)庫中以數(shù)據(jù)表的形式進(jìn)行組織,實現(xiàn)對數(shù)據(jù)表中所有指標(biāo)的服務(wù)器信息的一次性獲取,提高snmp代理的性能;同時