Zabbix 監控思科交換機3750 端口流量

 俗話說的好,師傅帶徒弟,徒弟碼文檔,是吧.? 肥肥兄,最近弄了不少東西。解決了幾

個歷史遺留問題,當然全靠這個肥肥師傅咯。

 進入正題,這次講2 個小小知識點,一個關於監控交換機端口流量,一個關於store value。


一.監控交換機端口流量

 目前互聯網上生產環境當中的交換機監控文檔。故此做一個完整,中間在穿插講其中一個重點知識。算是還zabbix 一個清白吧。!!!本次我拿生產環境Cisco 3750 交換機做演示!!!(只有3750,,沒有其他產品)


配置步驟:

1.配置交換機SNMP

#configure terminal
(config)#snmp-server community test ro 建立一個用戶爲test,權限爲只讀
(config)#snmp-server traps enable 允許將所有SNMP Trap 信息發送
(config)#snmp-server host 10.0.0.1 version 2c test 10.0.0.1 接受交換機所發送過來
的SNMPTrap 信息
(config)#snmp-server trap-source loopback0 使用loopback0 接口的IP 地址作爲SNMP
Traps發送源地址


2.創建自定義模板

首先是需要獲取Cisco 3750 SNMP 對應OID,OID 這個我就放在文檔最下面了。

這裏我就講端口進出流量監控,舉1 個端口例子,其他照搬即可。


打個比方我現在想監控G1/0/5 端口進出流量,該這麼做呢。?

先要獲取根據對應OID 直接獲取數據,同時去判斷獲得數據單位。

G1/0/5 端口進流量

snmpwalk -v 2c -c test 10.0.0.254 1.3.6.1.2.1.2.2.1.10.10105
IF-MIB::ifInOctets.10105 = Counter32: 1663553768

G1/0/5 端口出流量

snmpwalk -v 2c -c test 10.0.0.254 1.3.6.1.2.1.2.2.1.16.10105
IF-MIB::ifOutOctets.10105 = Counter32: 2288654478


這裏開始講第一個問題,之前羣裏有人提出zabbix 監控交換機端口流量不行。不建議使用zabbix 監控交換機流量。而是採用cacti,其實cacti 也有問題,只是你沒碰見而已!!!原因在於cacti 監控的數據比zabbix 監控的數據大。兩邊不一致。回到正題


其實監控交換機端口流量,注意2 個細節就好。

1.抽取出來數據單位,是bit 還是bytes。

 這關心到創建items 配置問題。咿,上面的數據沒有單位,你讓我咋找呢。? 我這裏單位默認是bytes。這樣就涉及到單位換算問題了。

在cacti 一般採用單位是bit/sec(bps),如果在zabbix 裏設置單位也是bps。而不經過計算。那麼毫無意外zabbix 數據比cacti 相差8倍+。


 爲什麼這樣呢。? 因爲單位不對等!!!Bytes 和bit 完全不對等。如果想要對等,在bytes

基礎上乘以8,這樣就對了。爲什麼乘以8 呢。?因爲bytes = 8bit怎麼讓zabbix 取出來的數據而乘以8 呢。? 在創建items 裏有個選項是Use custom multiplier。你在這裏面添上8 即可。等下回貼個items 圖。方便大家更明白。


2.store value 問題

 上面做好,還需要修改store value,就是Delta(speed per second),這個值對應cacti 裏的counter,這樣問題就解決了。

 具體算法是:(當前取值- 上一次取值)/ (當前時間- 上一次時間)

 上面得到的結果然後存儲在數據庫中,然後WEB 端展現。。


 這裏順便講下我之前遇到的問題。某天老大對我提出一個要求,nginx 請求圖做的更好點,而不是顯示上次是1W 請求,這次取值是2W 請求。而是顯示當前與上次值之差,也就是變化部分。當時,不知道怎麼搞呀。愁啊。造成的影響就是zabbix 細節方面沒cacti 好啊。其實不然,是俺沒學到家!!! 泥煤,自從有了store value,和煩惱說北北啊!!


 回到主題,剛那個小故事,就是我們可以利用store value 裏的Delta(speed per second),實現兩次取值之間變化部分。達到cacti 那種效果。關於store value 大家還是詳細看下官方解釋:https://www.zabbix.com/documentation/2.0/manual/config/items/item  扯了這麼多。來實際的吧。直接創建items


wKiom1MxMOaiZt3VAALv3dpKauM767.jpg

基於上面創建items 設置,基本上流量不會出現問題了。其他端口照葫蘆畫瓢就好了。

好吧,我還漏了一個問題。細心看文檔的,有沒有發現SNMP 取出來的值是否有問題呢。?


在回顧下

IF-MIB::ifOutOctets.10105 = Counter32: 2288654478

這裏所說的問題呢?不是值不對,而是Counter32 的問題。爲什麼它是問題呢。?


Counter32 是交換機的一個計數器,這個計數器是32 位。是一個從0 開始不斷累加,那麼它最大爲多少呢。? 2^32 次方=4294967296 當計數器達到4294967296 就會重新從0 開始

累加。這裏就出現了一個問題。計數器溢出!!

計數器溢出實際就是當zabbix 取值時,當前值如果比上一次值小的話,那麼就是計數器溢出了,當出現這個問題Zabbix 根據speed per second 就會忽略這個值,然後再取一個值。然後在利用speed per second 計算方式計算,存儲在數據庫在展現。


最前面講過cacti也有問題,歸根究底其實是交換機的32位計數器搞的鬼,32 位計數器最大能表示流量爲4G,如果計數器在採集時間之內溢出一次,上一次採集值與當前採集值之差超過4G,而且當流量達到109.225Mbps 流量就會有問題。4G/300*8=109.225Mbps 300=5*60 同時cacti和zabbix認爲在溢出之後,上一次與當前採集差值是正常的,並不會認爲是差值是溢出導致。


解決方法:

1.把取值間隔調快點,比如1 分鐘取一次。這樣就不會存在問題。

2.使用64 位計數器。大家可以查下交換機手冊,是否支持64 位計數器,新一代交換機全支持64 位計數器。如果當前生產環境不支持64 位計數器,那麼就使用第一種方法咯。加快取值間隔時間。。

針對上面這個問題呢,肥肥兄實際碰到過這個問題。- -


好了,到這裏文檔碼完了。希望對大家有幫助。Thank you !!!!!

噢,對了,還差OID 列表


獲取端口列表及描述

snmpwalk -v 2c -c test IP 1.3.6.1.2.1.2.2.1.2

獲取端口UP/DOWN 情況

snmpwalk -v 2c -c test IP 1.3.6.1.2.1.2.2.1.8

獲取端口入流量(byte)

snmpwalk -v 2c -c test IP 1.3.6.1.2.1.2.2.1.10

獲取端口出流量(byte)

snmpwalk -v 2c -c test IP 1.3.6.1.2.1.2.2.1.16

獲取過去5 秒內的cpu load(百分比)

snmpwalk -v 2c -c test IP 1.3.6.1.4.1.9.2.1.56.0

獲取過去10 秒內的cpu load(百分比)

snmpwalk -v 2c -c test IP 1.3.6.1.4.1.9.2.1.57.0

獲取過去15 秒內的cpu load(百分比)

snmpwalk -v 2c -c test IP 1.3.6.1.4.1.9.2.1.58.0

獲取內存使用情況

snmpwalk -v 2c -c test IP 1.3.6.1.4.1.9.9.48.1.1.1.5

獲取內存空閒情況

snmpwalk -v 2c -c test IP 1.3.6.1.4.1.9.9.48.1.1.1.6


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章