SNMPV3是簡單網絡管理協議的第三版,因為其安全性更高,現在的中低端交換機已普遍支持該協議,所以在生產環境中我們應該采用SNMPV3對交換機、路由器進行管理。
首先在交換機上要配置SNMPV3協議,設置好認證算法及密碼,加密算法及密碼,用戶名,具體操作需要查看華為交換機操作手冊。
然后在zabbix服務器上安裝net-snmp安裝包。安裝完成后我們就可以通過snmpwalk或snmpget命令獲取交換機上面我們需要監控的信息了。
snmpwalk我們只是作調試使用,如果編譯安裝zabbix時使用了--with-snmp的話,zabbix就自帶這個功能了。
snmpwalk --help SNMP Version 3 specific -a PROTOCOL 指定認證協議算法 (MD5|SHA) -A PASSPHRASE 指定認證密碼 -l LEVEL 指定安全認證模式 (noAuthNoPriv|authNoPriv|authPriv) -u USER-NAME 指定用戶名 (e.g. bert) -x PROTOCOL 指定加密協議算法 (DES|AES) -X PASSPHRASE 指定加密協議密碼
獲取交換機端口號及對應的端口名稱(IF-MIB::ifDescr)
snmpwalk -v 3 -u Securityname -a sha -A xxxxxxx -x AES -X xxxxxxx -l authPriv 192.168.1.177 IF-MIB::ifDescr
獲取交換機所有端口的進入流量(IF-MIB::ifHCInOctets)
snmpwalk -v 3 -u Securityname -a sha -A xxxxxxxx -x AES -X xxxxxxx -l authPriv 192.168.1.177 IF-MIB::ifHCInOctets
獲取交換機49端口的進入流量(IF-MIB::ifHCInOctets.49)
snmpwalk -v 3 -u Securityname -a sha -A xxxxxxxxx -x AES -X xxxxxxxx -l authPriv 192.168.1.177 IF-MIB::ifHCInOctets.49
我做的監控只監控了三項,一個進入流量,一個跑出流量,一個端口當前狀態。
進入流量可以取兩個OID:
ifInOctets;
ifHCInOctets;
他們唯一的區別是后者是64位存儲,前者是32位存儲,如果一個端口的進入流量超出4G,前者就會溢出清零,所以監控項的OID我選的ifHCInOctets
跑出流量OID取:ifHCOutOctets
端口狀態OID取:ifOperstatus
關於什么是OID,建議讀一讀rfc1573,這是一個協議標准,里面介紹了諸如ifDescr這些項的含義,在附件里有。
簡單一句話就是:路徑和值
注意:在zabbix中,基於SNMP的發現規則(LLD)會把OID中的路徑映射為宏{#SNMPINDEX}把OID中的值映射為宏{#SNMPVALUE}
所以我們不必為一個交換機逐個添加端口,我們可以定義發現規則,自動發現端口。
為安全考慮,在創建的SNMPV3模板中我們應該把所有的密碼映射為宏變量,然后在主機宏里添加對應值。例如:
Security name:{$SNMP_SECNAME}
Authentication passphrase:{$SNMP_AUTH}
Privacy passphrase:{$SNMP_PRIV}
關注SNMP的兩種取值方式:
GetNext 單線程支持v1,v2;
GetBulk 后者是多線程,支持v2,v3;
如果我們使用SNMPV3取值,在添加交換機時應當選擇Bulk
下面開始制作SNMPV3模板
-
創建模板,在模板中定義自動發現規則
-
定義監控項
-
添加交換機,交換機關聯SNMPV3模板,配置宏的值
到此就完成了對交換機的監控,但是監控中發現取值斷斷續續,斷圖很多,zabbix的日志顯示連接超時Timeout。我就增加了取值間隔為5分鍾一次,將zabbix_server的配置文件中的Timeout修改為30秒,效果好多了,但是沒有徹底解決交換機斷圖的現象。我google了應該是net-snmp的數據傳輸機制和zabbix的會話等待機制產生了沖突,造成了不可調和的Bug,所以這個問題從zabbix1.0到現在3.0都沒有很好的解決。期待以后的版本能夠得到解決。