打算開始學習有關監控方面的知識,但是現在很多監控系統都是根據SNMP進行的。而SNMP監控的性能指標很多都是通過snmpwalk采集設備的OID信息得到的,所以今天就來先介紹下,如何通過snmpwalk來采集設備的OID信息。
要使用snmpwalk采集設備的OID信息,需要以下幾個步驟:
1、 理解snmpwalk的原理
2、 安裝snmpwalk
3、 snmpwalk參數說明
4、 snmpwalk的使用方法
5、 使用snmpwalk采集設備OID信息
6、 生產環境中設備OID信息注意事項
一、理解snmpwalk的原理
snmpwalk是SNMP的一個工具,它使用SNMP的GETNEXT請求查詢指定OID(SNMP協議中的對象標識)入口的所有OID樹信息,並顯示給用戶。通過snmpwalk也可以查看支持SNMP協議(可網管)的設備的一些其他信息,比如cisco交換機或路由器IP地址、內存使用率等,也可用來協助開發SNMP功能。
二、安裝snmpwalk
要使用snmpwalk,我們首先要安裝snmpwalk。snmpwalk沒有單獨的安裝包,它被包含在net-snmp軟件包中的,所以我們只需要安裝net-snmp軟件包就可以得到snmpwalk。而net-snmp的安裝又分為linux環境和windows環境,下面我們來一一進行介紹。
2.1 linux下安裝net-snmp
在linux下使用snmpwalk工具,我們必須要安裝net-snmp-utils這個軟件包。
注意:如果linux只安裝net-snmp的話,則不包含snmpwalk工具,如下:
yum -y install net-snmp-utils
snmpwalk -h
2.2 windows安裝下net-snmp
windows下安裝net-snmp,我們可以去net-snmp官網進行下載。
現在我們安裝的是net-snmp-5.6.1.1-1.x86.exe這個軟件包。如下:
以上是一種方法,還有另外一種方法就是直接使用,已經制作好的免安裝包。
免安裝包的制作很簡單,就是先在本地安裝net-snmp軟件包,然后把安裝目錄下的bin目錄復制到其他服務器就可以正常了。如下:
這樣就可以把bin目錄,復制到其他機器上使用。注意在使用的過程中為了更方便的使用snmpwalk工具,我們可以把該目錄所在的路徑加入系統的環境變量中,如下:
這樣我們就把net-snmp安裝完畢。關於snmpwalk免安裝包可以在這個地址下載《爛泥snmpwalk5.6.1.1免安裝包》。
三、snmpwalk參數說明
snmpwalk的用法,我們可以通過幫助信息進行查看,如下:
snmpwalk -h
通過上圖,我們可以看到snmpwalk的參數比較多,但是我們比較常用的就只有-v和-c參數。如下:
–h:顯示幫助。
–v:指定snmp的版本, 1或者2c或者3。
–c:指定連接設備SNMP密碼。
–V:顯示當前snmpwalk命令行版本。
–r:指定重試次數,默認為0次。
–t:指定每次請求的等待超時時間,單為秒,默認為3秒。
–l:指定安全級別:noAuthNoPriv|authNoPriv|authPriv。
–a:驗證協議:MD5|SHA。只有-l指定為authNoPriv或authPriv時才需要。
–A:驗證字符串。只有-l指定為authNoPriv或authPriv時才需要。
–x:加密協議:DES。只有-l指定為authPriv時才需要。
–X:加密字符串。只有-l指定為authPriv時才需要。
四、snmpwalk的使用方法及實例
snmpwalk使用方法很簡單,如下:
snmpwalk -v 1或2c(代表SNMP版本) -c SNMP密碼 IP地址 OID(對象標示符)
–v:指定snmp的版本, 1或者2,該參數必須有。
–c:指定連接設備SNMP讀密碼,該參數必須有。
IP:指定要walk的設備的IP地址,該參數必須有。
OID:代表要獲取設備的指標oid,該參數不是必須的。
五、使用snmpwalk獲取設備OID信息
下面我們開始使用snmpwalk開始獲取設備的一些OID信息,注意現在獲取的都是windows系統,沒有涉及到linux系統。
注意:在此我們還使用了iReasoning MIB Browser這個MIB瀏覽軟件以配合我們的實驗。
5.1獲取windows系統進程數
snmpwalk -v 1 -c public 192.168.1.200 .1.3.6.1.2.1.25.1.6
這條命令的意思是:使用v1版本,共同體為public,來對192.168.1.200的.1.3.6.1.2.1.25.1.6分支進行walk。
5.2獲取windows系統用戶數
snmpwalk -v 1 -c public 192.168.1.200 .1.3.6.1.2.1.25.1.5
我們也可以通過以下命令獲得:
snmpwalk -v 1 -c public 192.168.1.200 hrSystemNumUsers
注意:hrSystemNumUsers與.1.3.6.1.2.1.25.1.5是等效的。
5.1和5.2其實我們完全可以通過一條命令獲得,如下:
snmpwalk -v 1 -c public 192.168.1.200 .1.3.6.1.2.1.25.1
獲取的信息中包含系統的運行時間、系統的用戶數、系統的進程數、系統當前的時間。
5.3獲取windows系統總內存
snmpwalk -v 1 -c public 192.168.1.200 .1.3.6.1.2.1.25.2.2
5.4獲取windows系統的IP地址
snmpwalk -v 1 -c public 192.168.1.200 .1.3.6.1.2.1.4.20.1.1
5.5獲取windows系統信息
snmpwalk -v 1 -c public 192.168.1.200 system
5.6獲取windows系統的網卡信息
snmpwalk -v 1 192.168.1.200 -c public ifDescr
六、生產環境中設備OID信息注意事項
6.1獲取的目標與保存說明
針對研發需要設備MIB信息進行調試的情況,一般需要設備的完整MIB(包含公有OID和私有OID),因此在進行設備的MIB獲取時,使用使用.1作為目標mib分支(即完整mib文件)。並且一般需要將輸出使用>重定向符,輸出到一個指定的文件中,以方便傳輸。
6.2參數選項說明
一般需要使用-Cc,來指定允許OID不重復。
如果設備較容易超時,需要使用-t與-r參數,來指定超時時間與重試次數。
6.3 MIB信息的完整性
完整walk到一個MIB,在MIB末尾,都會輸出“End Of Mib”的字樣。否則可能為Response timeout等錯誤,此時請根據錯誤消息及時調整參數。
一般來說使用snmpwalk -v 1/2c -c community IP .1>IP.mib命令采集設備MIB信息后,文件IP.mib應該包含該設備的所有MIB信息。
但是從實際反應的情況來看,某些設備產商由於SNMP實現支持不是很標准,故存在只能獲取到公有MIB信息(即1.3.6.1.2.1開頭的信息)的情況,此時請再使用命令snmpwalk -v 1/2c -c community IP .1.3.6.1.4.1>IP.private.mib采集設備私有MIB信息,並和前面采集到的IP.mib一同發給研發。
小結:所謂MIB信息的完整性,即判斷snmpwalk命令輸出的文件信息中是否包含iso.3.6.1.2.1開頭的OID信息(公有MIB信息),又是否包含iso.3.6.1.4.1開頭的OID信息(私有MIB信息),甚至還可能包含iso.3.6.1.6.1開頭的OID信息(該部分信息可有可無,目前暫時未用到)。