使用NET-SNMP和MRTG監測Windows伺服器(zt)

tonykorn97發表於2007-07-06
看到網路管理員經常用MRTG來分析網路裝置的流量,覺得挺實用的,也在網上看到過許多UNIX的管理員寫指令碼抓取系統資源的資料給MRTG來繪製系統資源(CPU/Memory)的曲線圖,來監控UNIX伺服器的。後來想想既然可以用SNMP協議抓取網路裝置的資訊,那麼Windows伺服器如果開啟 SNMP服務是不是也可以被遠端監控呢。經過測試以後,發現是可以實現的,而且很簡單。

首先在Windows的服務裡開啟SNMP服務,如果沒有這個服務,則到新增/刪除Windows元件裡新增SNMP服務。

在服務裡開啟SNMP服務的屬性,在Agent選項中,勾選所有的選項(也就是開啟所有的Agent)。在Trap選項中,輸入一個Communication的名稱,一般用預設值public,他的許可權是READ ONLY的。

開啟 SNMP 服務後,就可以在安裝有NET-SNMP和MRTG的機器上監控了。

先用snmpwalk命令看看是否能夠得到遠端伺服器的資料。

# snmpwalk -c public -v 1 10.5.13.17

如果一切順利,應該得到類似下面的資訊(因為資訊太長,下面只列出一部分)
SNMPv2-MIB::sysDescr.0 = STRING: Hardware: x86 Family 15 Model 2 Stepping 7 AT/AT COMPATIBLE - Software: Windows 2000 Version 5.0 (B
uild 2195 Multiprocessor Free)
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.311.1.1.3.1.2
SNMPv2-MIB::sysUpTime.0 = Timeticks: (14610418) 1 day, 16:35:04.18
SNMPv2-MIB::sysContact.0 = STRING: wellswang {at} auo {dot} com
SNMPv2-MIB::sysName.0 = STRING: AUSMS1
SNMPv2-MIB::sysLocation.0 = STRING: AUS-T1-5F
SNMPv2-MIB::sysServices.0 = INTEGER: 79

現在就可以用MRTG繪製系統的資源圖片了

用cfgmaker建立基本的配置檔案

# cfgmaker --global "WorkDir: /var/www/mrtg/10.5.13.17" --global "Options[_]: growright, bits" --global "Language: GB2312" --output=10.5.13.17.cfg

在這裡 --global引數設定了生成頁面的全域性值,WorkDir是生成的HTML頁面的存放目錄,Options指定了圖片中的曲線從右端生成,用bit作為單位,Language指定了HTML的編碼方式。--output是指定配置檔案的檔名。最後的則是遠端伺服器的IP和communication。

這條命令執行完後,就會生成一個10.5.13.17.cfg的配置檔案,別急,這只是一個基本的配置檔案,一般來說,只能繪製遠端伺服器的網路流量的圖形。我們要修改這個檔案,才能讓它繪製出CPU和Memory的曲線。

要監控CPU的負載,在這個cfg檔案的中新增:
LoadMIBs: /usr/share/snmp/mibs/HOST-RESOURCES-MIB.txt

Target[cpu1]: hrProcessorLoad.1&hrProcessorLoad.2:public@10.5.13.17
RouterUptime[cpu1]:
MaxBytes[cpu1]: 100
Title[cpu1]: CPU #1 & #2 LOADING (PERCENTAGE)
PageTop[cpu1]:

CPU #1 & #2 Load %


Unscaled[cpu1]: ymwd
ShortLegend[cpu1]: %
YLegend[cpu1]: CPU Utilization
Legend1[cpu1]: CPU #1 Loading in % (Load)
Legend2[cpu1]: CPU #2 Loading in % (Load)
LegendI[cpu1]: CPU #1 Loading
LegendO[cpu1]: CPU #2 Loading
Options[cpu1]: growright,nopercent,gauge

(注:我的伺服器是雙CPU的,如果你只有單CPU,把hrProcessorLoad.1&hrProcessorLoad.2 改成 hrProcessorLoad.1&hrProcessorLoad.1)

要檢測Memory,Windows 自帶的SNMP服務做不到,必須在遠端的Windows伺服器上安裝一個新的MIB包,去 下載一個免費的SNMP Informant Standard版就可以,安裝完後,不需要重起就可以了。然後,在剛才的cfg檔案中新增入夏配置就可以繪製記憶體曲線圖了:

Target[memory]: 1.3.6.1.4.1.9600.1.1.2.1.0&1.3.6.1.4.1.9600.1.1.2.4.0:public@10.5.13.17:::::2 / 1024
MaxBytes[memory]: 3000000000
Title[memory]: Memory usage
PageTop[memory]:

Free and Used Memory


kMG[memory]: k,M,G,T,P,X
YLegend[memory]: Memory
ShortLegend[memory]: bytes
LegendI[memory]: Free Memory
LegendO[memory]: Commited Memory
Options[memory]: growright,nopercent,gauge

還可以監測系統執行的程式數和使用者個數,在cfg檔案中新增:

Target[process]: hrSystemProcesses.0&hrSystemNumUsers.0:public@10.5.13.17
RouterUptime[process]:
MaxBytes[process]: 150
Title[process]: Processes and Users
PageTop[process]:

Processes and Users


Unscaled[process]: ymwd
ShortLegend[process]:.
YLegend[process]: Numbers
Legend1[process]: Process Numbers
Legend2[process]: System Users
LegendI[process]: Process Numbers
LegendO[process]: System Users
Options[process]: growright,nopercent,gauge

其他的監測,例如磁碟空間等也一樣新增,反正只要給MRTG的Target兩個數值,它就能畫出曲線了。

改完配置檔案後,就用mrtg生成頁面了:

# mrtg 10.5.13.17.cfg

第一次執行會報錯,原因是沒有歷史資料,連續執行三次就不應該報錯了。

設定一個cronjob,讓系統自動每5分鐘更新一次遠端伺服器的狀態:

# crontab -e
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/bin/mrtg /root/10.5.13.17.cfg

子頁面生成後就要用indexmaker來生成首頁了。

# indexmaker --output=/var/www/mrtg/10.5.13.17/index.html 10.5.13.17.cfg

--output引數指定了生成的檔案。

現在,你就可以去/var/www/mrtg/10.5.13.17這個目錄中開啟index.html檔案,檢視遠端伺服器的資訊了。如果你安裝了apache,你也可以釋出這個目錄,這樣,只要你有瀏覽器,不管你在任何地方,你都能瞭解到遠端伺服器的狀態了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245710/,如需轉載,請註明出處,否則將追究法律責任。

相關文章