SNMP數(shù)據(jù)異常檢測(cè)系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)
SNMP工作在TCP/IP的無(wú)連接的數(shù)據(jù)報(bào)上,由SMI(Structure of Management Information,管理信息結(jié)構(gòu))、MIB(Management Information Base,管理信息庫(kù))和協(xié)議組成。MIB是一個(gè)樹(shù)形結(jié)構(gòu)的數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)中的每一個(gè)被管理的項(xiàng)目都有相應(yīng)的對(duì)象所對(duì)應(yīng),這些對(duì)象結(jié)構(gòu)化集合起來(lái)就是MIB。管理站通過(guò)讀取信息庫(kù)里的數(shù)據(jù)來(lái)獲得數(shù)據(jù),從而起到監(jiān)視作用,同時(shí)管理站還能夠修改信息庫(kù)里的數(shù)據(jù)來(lái)時(shí)實(shí)現(xiàn)對(duì)資源的控制。
基于SNMP數(shù)據(jù)異常檢測(cè)系統(tǒng)分為數(shù)據(jù)獲取模塊、數(shù)據(jù)處理模塊和數(shù)據(jù)分析模塊。其檢測(cè)流程是從MIB庫(kù)中獲取信息,再將信息存入到數(shù)據(jù)庫(kù)中。由數(shù)據(jù)處理模塊對(duì)數(shù)據(jù)進(jìn)行處理,最后由數(shù)據(jù)分析模塊,運(yùn)用K-means算法,對(duì)數(shù)據(jù)進(jìn)行分析,最后將分析結(jié)果存入到數(shù)據(jù)庫(kù)中,并能夠在界面顯示。
1 信息獲取模塊
信息獲取處理模塊是SNMP數(shù)據(jù)異常檢測(cè)系統(tǒng)開(kāi)發(fā)設(shè)計(jì)的基礎(chǔ)。信息獲取模塊實(shí)現(xiàn)的是獲取整個(gè)系統(tǒng)所需的數(shù)據(jù),數(shù)據(jù)獲取模塊采集本地pc機(jī)的數(shù)據(jù),還能夠獲取路由中的相關(guān)數(shù)據(jù)。數(shù)據(jù)獲取模塊,負(fù)責(zé)采集數(shù)據(jù),即從MIB庫(kù)中獲取數(shù)值信息,將其存入到數(shù)據(jù)庫(kù)中,供分析使用。本文所要獲取的數(shù)據(jù),在MIB庫(kù)中都是直接存在的,因此只需要根據(jù)其OID進(jìn)行獲取即可。其獲取過(guò)程包括以下幾個(gè)步驟。
由Get-Request讀對(duì)象值,管理站未獲得網(wǎng)絡(luò)設(shè)備的才輸或設(shè)備在網(wǎng)絡(luò)中的運(yùn)行數(shù)據(jù),向Agent發(fā)起的讀操作。
Get-Next-Request讀取當(dāng)前對(duì)象的下一個(gè)可讀取對(duì)象的值。
Set-Request:NMS更新Agent中的對(duì)象值。
Get-Response:Agent對(duì)Get-Request、Get-Next-Request和Set-Request三種操作的應(yīng)答。
Trap:Agent向NMS發(fā)送對(duì)象值。
2 數(shù)據(jù)處理模塊
采集的數(shù)據(jù)是一個(gè)時(shí)間段的數(shù)據(jù)。對(duì)此本文要對(duì)獲取的初始數(shù)據(jù)進(jìn)行初步的統(tǒng)計(jì)分析。統(tǒng)計(jì)分析過(guò)后的數(shù)據(jù),對(duì)分析網(wǎng)絡(luò)狀態(tài)更具有參考性。本文用來(lái)表示單位時(shí)間內(nèi)的差值,T來(lái)表示周期。
處理模塊實(shí)現(xiàn)的過(guò)程:從數(shù)據(jù)庫(kù)中取出所需要的數(shù)據(jù),取出相應(yīng)的數(shù)據(jù)后,將隊(duì)形行的上下兩條數(shù)據(jù)做差,從而算出變量,并將其復(fù)制給新的變量,以便于后期進(jìn)行進(jìn)一步的計(jì)算。做差后按照公式進(jìn)行計(jì)算,最后將計(jì)算出來(lái)的數(shù)值存入數(shù)據(jù)庫(kù)供分析使用。獲取的數(shù)據(jù)經(jīng)過(guò)數(shù)據(jù)的預(yù)處理存入MySql數(shù)據(jù)庫(kù)中。由于MIB庫(kù)中的信息過(guò)于繁瑣,本文只選取其中一部分信息進(jìn)行獲取,數(shù)據(jù)庫(kù)主要表結(jié)構(gòu)包括所屬的IP的CPU利用率、發(fā)出的字節(jié)總數(shù),包括組幀字符、收到的字節(jié)總數(shù),包括組幀字符、收到的被丟棄的分組數(shù)等。
當(dāng)本文獲取到初始數(shù)據(jù)后,要將其進(jìn)行處理,處理后的數(shù)據(jù)本文成為預(yù)處理數(shù)據(jù),本文將其存到SNMP_final表中,如下所示:
3 數(shù)據(jù)分析模塊
分析模塊是整個(gè)系統(tǒng)的核心。作用是分析數(shù)據(jù)庫(kù)中獲取的數(shù)據(jù),同時(shí),對(duì)于數(shù)據(jù)分析采用聚類(lèi)數(shù)據(jù)挖掘算法。數(shù)據(jù)挖掘是通過(guò)算法對(duì)大量數(shù)據(jù)進(jìn)行知識(shí)再發(fā)現(xiàn)的過(guò)程。常見(jiàn)的是聚類(lèi)算法和分類(lèi)算法。由于互聯(lián)網(wǎng)數(shù)據(jù)中的很大一部分是超文本數(shù)據(jù),這些數(shù)據(jù)可以看成是半文本數(shù)據(jù)。也就是說(shuō),在互聯(lián)網(wǎng)的數(shù)據(jù)挖掘中本文所要做的是在傳統(tǒng)的數(shù)據(jù)挖掘下增加對(duì)半結(jié)構(gòu)數(shù)據(jù)的挖掘。聚類(lèi)算法具有處理不同字段類(lèi)型、可伸縮性、處理高位數(shù)據(jù)、發(fā)現(xiàn)任意簇的形狀的聚類(lèi)、處理異常數(shù)據(jù)、對(duì)數(shù)據(jù)順序的不敏感性等特點(diǎn)。
系統(tǒng)的數(shù)據(jù)分析模塊采用的K-means算法。該算法是質(zhì)心聚類(lèi)算法,其算法特點(diǎn)是收斂速度較快、復(fù)雜度不高、數(shù)據(jù)處理效率高,廣泛應(yīng)用于多個(gè)領(lǐng)域。核心思想是:先把對(duì)象樣本分成k個(gè)類(lèi),然后隨機(jī)的從樣本中選出k個(gè)點(diǎn)作為假設(shè)中心點(diǎn)。將這些數(shù)據(jù)向離其最近的中心點(diǎn)歸類(lèi),直至每組內(nèi)的相似度最高而組與組之間的相似度最低。本文通常采用歐幾里得距離來(lái)衡量其相似性,評(píng)級(jí)劃分質(zhì)量的目標(biāo)函數(shù)J。
J就是各簇內(nèi)點(diǎn)到該簇中心的距離和。因此,當(dāng)J的值越小,聚類(lèi)越密集,效果就越好。本文就是通過(guò)K-means算法進(jìn)行不斷地優(yōu)化,使J的值變得越來(lái)越小,當(dāng)達(dá)到最小值時(shí)就是本文要的結(jié)果。
K-means算法一共有4個(gè)步驟:第一步,選取初始點(diǎn)為聚類(lèi)的假定中心點(diǎn);第二步,將要被聚類(lèi)樣本點(diǎn)進(jìn)行分類(lèi);第三步,根據(jù)分類(lèi)調(diào)整第一步所假定的中心點(diǎn);第四步,輸出結(jié)果。
算法K-means基于簇中對(duì)象平均值輸入簇的數(shù)目K和N個(gè)對(duì)象的數(shù)據(jù)庫(kù)輸出K個(gè)簇,滿足均方誤差函數(shù)值最小步驟如下:
任意選擇K個(gè)對(duì)象作為初始簇中心(初始平均值);
標(biāo)準(zhǔn)化K個(gè)對(duì)象數(shù)據(jù)度量值;
Repeat;
計(jì)算分配后每個(gè)簇中對(duì)象的平均值(第一次按初始狀態(tài)平均值);
根據(jù)簇中對(duì)象平均值,重新將每個(gè)對(duì)象賦給最類(lèi)似的簇;
Until對(duì)象的重新分配不再變化。
通過(guò)迭代的方法把數(shù)據(jù)對(duì)象劃分到不同的簇中,以求得最小化的目標(biāo)函數(shù),從而使得生成的簇盡可能緊湊和獨(dú)立。新的聚類(lèi)生成和確定算法的K值是聚類(lèi)算法的關(guān)鍵,通過(guò)多次迭代計(jì)算實(shí)現(xiàn)類(lèi)間相似度距離越小,類(lèi)內(nèi)相似度聚類(lèi)越大,從而獲得最優(yōu)結(jié)果。
(廣州華立科技職業(yè)學(xué)院王超)