公司新上了一個新的數據中心,需要用zabbix監控華三交換機的網絡流量。
配好snmp協議之後,正常都能識別,但慢慢的發現一個問題,電信的接口經常出現少數據的情況,但聯通和鐵通都沒有什麼問題。
zabbix繪的圖斷斷續續的,有時更神奇的是,流量突然下降,下降的還很離譜,從500多Mbps一下掉到40多Mbps,一度以爲是交換機返回的數據有問題了。
後來在zabbix機器上抓包,發現數據包沒有丟,數據也沒有什麼異常,不過抓的包裏面,有個counter32引起注意。
然後仔細閱讀snmp的文檔,發現snmp協議返回的ifInOctets和ifOutOctets都是流量的總量,而我們都是取兩次的差值,然後除以取樣的間隔時間,得出的平均值。
而counter32的數據類型計數的最大值是2的32次方減1,當超過4G的時候,計數器就會清零。
後來分析zabbix的snmp interface的模板,發現zabbix取樣時間是1分鐘,在我們由於流量大,很快就清零了,並且有時計數清零之後新增的數值,比上一次的計數還要大,zabbix還以爲沒清過零,直接相減除以了時間間隔,就造成了“網絡流量陡降的假象”。
找到原因之後,剩下的就好辦了,我們需要的是,使用counter64的oid數據。
在zabbix中導出template snmp interfaces模板,然後修改一下名字,重新導入。修改這個新的模板:
在“探索規則”中找到“項目原型”,點擊“Incoming traffic on interface {#SNMPVALUE}”,
將其“鍵值”中的ifInOctets[{#SNMPVALUE}]修改爲ifHCInOctets[{#SNMPVALUE}]
將“SNMP OID”中的IF-MIB::ifInOctets.{#SNMPINDEX}修改爲IF-MIB::ifHCInOctets.{#SNMPINDEX}
同樣:“項目原型”中的“Outgoing traffic on interface {#SNMPVALUE}”也做類似修改。
也就是將ifInOctets和ifOutOctets替換爲ifHCInOctets和ifHCOutOctets。
然後把主機刪除,重新添加主機,這次一切都清爽了,繪的圖都是連續的,也沒再出現陡增陡降的問題。