国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于SNMP和WMI的網(wǎng)絡設備監(jiān)控管理系統(tǒng)

2016-07-04 06:20:35張華

張華

摘 要:網(wǎng)絡設備監(jiān)控系統(tǒng)在保證企業(yè)信息化系統(tǒng)穩(wěn)定運行的過程中起到了至關(guān)重要的作用。文章結(jié)合windows平臺的WMI標準接口和通用的SNMP協(xié)議,設計并實現(xiàn)了一個對網(wǎng)絡設備實行自動監(jiān)控及預警的設備監(jiān)控系統(tǒng)。本系統(tǒng)無需安裝客戶端,配置簡單,使用方便靈活。

關(guān)鍵詞:WMI;SNMP;網(wǎng)絡設備監(jiān)控

中圖分類號:TP393.07 文獻標識碼:A 文章編號:1006-8937(2016)02-0060-03

隨著企業(yè)信息化的深入發(fā)展,越來越多的企業(yè)購買了大量的網(wǎng)絡設備(包括服務器、電腦、交換機等)用以承載自身信息化的建設,隨之而來的是多數(shù)網(wǎng)絡設備由于缺少監(jiān)控導致業(yè)務系統(tǒng)經(jīng)常中斷,不僅影響了企業(yè)業(yè)務的正常運作,也給維護人員帶來了不小的壓力;此外,來自不同廠商的網(wǎng)絡設備中不可避免地包括各種異構(gòu)系統(tǒng)平臺,給統(tǒng)一監(jiān)控帶來了一定的困難。因此,本文旨在設計并實現(xiàn)一個基于B/S架構(gòu)的基于SNMP和WMI的網(wǎng)絡設備監(jiān)控系統(tǒng),基本覆蓋各異構(gòu)網(wǎng)絡設備,當設備出現(xiàn)故障或征兆后能及時、自動地向網(wǎng)管人員發(fā)出預警。

1 SNMP、WMI概述

SMNP是Simple Network Management Protocol的縮寫,意為簡單網(wǎng)絡管理協(xié)議。 SNMP是最早提出的網(wǎng)絡管理協(xié)議之一,目前已得到了廣泛的應用和支持,其中包括IBM、HP、SUN等大公司和廠商。如今SNMP已成為網(wǎng)絡管理領(lǐng)域中事實上的工業(yè)標準,大多數(shù)網(wǎng)絡管理系統(tǒng)和平臺都是基于SNMP協(xié)議的[1]。

WMI(Windows Management Instrumentation,Windows管理規(guī)范)是管理Windows設備的一種基礎規(guī)范和標準方法。Windows系統(tǒng)用戶可以借助WMI對本地或遠程計算機進行管理,WMI允許通過一系列公共接口訪問操作系統(tǒng)各個組件,WMI幫助系統(tǒng)管理員更加高效的完成計算機系統(tǒng)的管理[2][3]。

2 系統(tǒng)設計

2.1 網(wǎng)絡設備對象分析

目前在企業(yè)信息化系統(tǒng)的實際應用和管理中,存在各種操作系統(tǒng)的服務器和各大廠商的網(wǎng)絡互聯(lián)設備,導致管理困難。本文結(jié)合本企業(yè)的網(wǎng)絡設備現(xiàn)狀,設計了一套基于Web的網(wǎng)絡設備監(jiān)控管理系統(tǒng)。本企業(yè)多數(shù)服務器、PC采用Windows系統(tǒng),由于微軟已將WMI作為系統(tǒng)管理的核心,因此,服務器類設備已基本滿足基于WMI組件的數(shù)據(jù)采集;其次是公司內(nèi)各種交換器、路由器等設備,為滿足該類設備的監(jiān)控,采用基于SNMP協(xié)議進行采集。最終,本文所實現(xiàn)的監(jiān)控系統(tǒng)將基本覆蓋企業(yè)內(nèi)網(wǎng)絡設備的監(jiān)控和管理。

2.2 系統(tǒng)框架設計

通過對基于SNMP協(xié)議和WMI組件的研究,設計架構(gòu)了基于B/S結(jié)構(gòu)的三層網(wǎng)絡設備監(jiān)控管理系統(tǒng)模型,如圖1所示,分別是數(shù)據(jù)采集層、數(shù)據(jù)處理層和數(shù)據(jù)展現(xiàn)層。

2.3 系統(tǒng)基本功能

2.3.1 系統(tǒng)配置功能

本系統(tǒng)為適應多種異構(gòu)系統(tǒng)的數(shù)據(jù)采集,開放了基于SNMP和WMI兩種數(shù)據(jù)采集模式,用戶可根據(jù)采集設備能夠匹配的數(shù)采模式進行設置。一般而言,Windows系統(tǒng)服務器都采用WMI模式,數(shù)據(jù)的實時性更好;而其他網(wǎng)絡設備,本文采用了基于SNMP的采集模式,該模式數(shù)據(jù)穩(wěn)定性更好;此外,本模塊配置了對所檢測網(wǎng)絡設備各系統(tǒng)參數(shù)(CPU利用率、內(nèi)存利用率、網(wǎng)絡負載、磁盤使用率等)的預警閾值設置,用戶可根據(jù)日常運行情況對設備預警閾值進行設定,若系統(tǒng)監(jiān)測到采集數(shù)據(jù)超過了設定的閾值,可向指定用戶發(fā)送郵件及短信提醒。

2.3.2 數(shù)據(jù)采集與處理功能

該功能分別基于SNMP和WMI兩種數(shù)據(jù)獲取方式進行采集,根據(jù)用戶在配置模塊中所做設置,自動采集網(wǎng)絡設備運行數(shù)據(jù)并存于SQL Server數(shù)據(jù)庫,通過對數(shù)據(jù)進行不同的處理以滿足如觸發(fā)報警事件和展現(xiàn)多種形式數(shù)據(jù)的要求。

2.3.3 數(shù)據(jù)展現(xiàn)模塊功能

該模塊主要包含單個網(wǎng)絡設備狀態(tài)查詢、所有被采集設備每日數(shù)據(jù)采樣一覽、歷史監(jiān)測數(shù)據(jù)分析等界面;界面主要以圖形化形式展示網(wǎng)絡設備、服務器等運行情況。

3 系統(tǒng)實現(xiàn)

3.1 實現(xiàn)平臺

本系統(tǒng)基于微軟.NET平臺開發(fā),優(yōu)勢在于基于Windows系統(tǒng)的服務器、PC設備已有成熟的基于.NET的WMI API,開發(fā)時只需要引入System.Management命名空間,主要使用到的類為;對于非Windows系統(tǒng)平臺的網(wǎng)絡設備,本系統(tǒng)引入了目前使用較為廣泛且開源的SnmpSharpNet包[4]進行基于SNMP協(xié)議的開發(fā)。

3.2 軟件主要實體類結(jié)構(gòu)及關(guān)系

軟件所設計實體,如圖2所示,Device類作為Router類、Server類和Computer類的抽象父類, 各個具體設備實體類包含獲取各設備基本信息的屬性或方法。如Server類具有獲取各個進程(ProcessStat)和硬盤(DiskStat)信息的相關(guān)方法,Router類具有獲取網(wǎng)絡(NetworkStat)相關(guān)信息的方法,這些信息都會包含在具體數(shù)據(jù)結(jié)構(gòu)中。最后的工具類(WMI+SnmpService)將負責具體連接設備并獲取相應指定信息。

3.3 關(guān)鍵技術(shù)實現(xiàn)

通過WMI和SNMP方式采集網(wǎng)絡設備數(shù)據(jù)過程比較相似且獲取進程數(shù)據(jù)較為復雜,因此,以下實現(xiàn)關(guān)鍵技術(shù)的代碼將以獲取進程信息為例,獲取其他信息可仿照以下代碼。

3.3.1 WMI和SNMP連接及執(zhí)行查詢語句代碼

①WMI方式:

public ManagementConnectPool(string mpusername, string mppwd, string mpspace, string mpserver)

{

// 初始化wmi連接對象,設置用戶名、密碼、命名空間、機器地址

System.Management.ConnectionOptions Conn = new Conne

ctio Options();

ManagementObjectSearcher mos = new ManagementObject

Searcher();

this.username = mpusername;

this.pwd = mppwd;

this.space = mpspace;

this.server = mpserver;

Conn.Username = mpusername;

Conn.Password = mppwd;

Conn.Authority = "ntlmdomain:"+ConfigurationManager.App

Settings["domain"];

string scopestring = "http://" + mpserver + mpspace;

System.Management.ManagementScope Ms = new Managem

entScope(scopestring);

Ms.Connect();

mos.Scope = Ms;

}

②Snmp方式:

///

/// 通過此方法可以向snmp服務發(fā)起一個請求,獲取該oid下所有信息

///

public static DictionarygetWalkValue(string host, string community, string irootOid)

{

Dictionary

foreach (ManagementObject mo in moc1)

{

N0 = Decimal.Parse(mo.GetPropertyValue("PercentProcessor

Time").ToString());

D0 = Decimal.Parse(mo.GetPropertyValue("TimeStamp_Sys

100NS").ToString());

break;

}

Thread.Sleep(1000);

ManagementObjectCollection moc2 = mcp.getQueryResult("Select * from Win32_PerfRawData_PerfProc_Process where IDProcess = '" + pid + "'");

foreach (ManagementObject mo in moc2)

{

N1 = Decimal.Parse(mo.GetPropertyValue("PercentProcessor

Time").ToString());

D1 = Decimal.Parse(mo.GetPropertyValue("TimeStamp_Sys

100NS").ToString());

break;

}

cpuUsagePerProcess=((D1 - D0)==0?0:((N1 - N0)/(D1 - D0))*100);

return cpuUsagePerProcess;

}

②Snmp方式: 本文以windows系統(tǒng)的MIB庫為例,因此采用了MIB中hrSWRunPerfCPU 的cputime作為計算單個進程cpu占用率的參數(shù)。以間隔一定時間分兩次獲取各進程(hrSWRunPerfCPU:cputime)數(shù)據(jù),第一個參數(shù)為cputime1,并累加此時cpu總時間為total_cputime1,第二個即為cputime2,cpu總時間為total_cputime2,因此單個進程cpu占用率計算公式為:

[(cputime2 - cputime1)/( total_cputime2- total_cputime1)]x100%,具體計算代碼如下:

public ListGetCpuUsagePerProcess(string oid,string community,string hostIp)

{

Decimal cputime1 = 0, cputime2 = 0, total_cputime1=0,total_cputime2=0;

SnmpService snmpService1 = new SnmpNet.SnmpService(community, hostIp);

var result1 = snmpService1.getWalkValue(oid);

List

泽普县| 梨树县| 常宁市| 鹤峰县| 永安市| 神池县| 昭觉县| 集贤县| 防城港市| 克什克腾旗| 岳阳县| 赞皇县| 饶阳县| 徐汇区| 修水县| 增城市| 怀化市| 白水县| 灵山县| 汉源县| 万盛区| 普定县| 祁连县| 贵南县| 贵德县| 鹤山市| 大丰市| 观塘区| 永仁县| 东至县| 中宁县| 上杭县| 类乌齐县| 宁阳县| 白城市| 屏山县| 怀仁县| 天门市| 元谋县| 宜宾市| 丰宁|