前文(通過SNMP統(tǒng)計網(wǎng)絡資產(chǎn))介紹了SNMPWALK的安裝及簡單使用。SNMP的功能還是十分強大的,,幾乎所有設(shè)備上支持查看的信息通過SNMP協(xié)議都能讀取到,,甚至有些命令中不能查看的SNMP協(xié)議也能讀取。今天就再簡單介紹一下SNMP的其他用法,。 vFW和很多V7設(shè)備一樣,,不支持直接讀取接口的瞬時速率,只有過去300秒的速率統(tǒng)計,,對于精度要求比較高的用戶,,肯定是不滿足要求的。 但是接口的瞬時速率也就是對接口的總報文數(shù)進行微分,,比如我們可以5秒鐘采集一次總報文數(shù),,然后用后一個數(shù)值減去前一個數(shù)值,再除以5,,就可以得到這5秒內(nèi)平均的bytes/s,,也就是Bps了。 上次介紹到數(shù)據(jù)可以用snmpwalk來進行讀取,,首先找到出入方向總報文數(shù)所對應的MIB節(jié)點,。查看接口報文總數(shù): 查到接口入方向報文總數(shù)MIB節(jié)點值為IF-MIB::ifInOctets.17,出方向報文總數(shù)MIB節(jié)點值為IF-MIB::ifOutOctets.17,。 然后用Shell寫一段腳本,,來計算接口下5秒的瞬時速率。 運行效果如下: 對腳本命令做個簡單解釋,,方便大家進行變形,。 while true do sleep 5 done #循環(huán)結(jié)構(gòu),循環(huán)執(zhí)行任務內(nèi)容,,間隔時間為5秒,。 lastallin=$(tail -n 1 ifInAll.txt) lastallout=$(tail -n 1 ifOutAll.txt) #定義兩個變量,用于讀取存放于文件中的上一次的總字節(jié)數(shù)。 allout=$(snmpwalk -v 2c -c guotiejun 192.168.1.200 IF-MIB::ifOutOctets.17 |awk '{print $4}' ) allin=$(snmpwalk -v 2c -c guotiejun 192.168.1.200 IF-MIB::ifInOctets.17 |awk '{print $4}' ) #定義兩個變量,,用于存放通過命令讀取到的當前的總字節(jié)數(shù) inspeed1=$[allin-lastallin] inspeed=$(expr $inspeed1 / 5) outspeed1=$[allout-lastallout] outspeed=$(expr $outspeed1 / 5) #速率計算,。因為循環(huán)任務的執(zhí)行周期為5秒1次,所以將兩個數(shù)值相減,,再除以5,,即得到過去5秒的平均速率。 date #打印系統(tǒng)時間,,標記速率對應的時間點,。 echo 'lastInput = $lastallin' echo 'CurInput = $allin' echo 'CurInSpeed = $inspeed' echo '$allin' >>ifInAll.txt #打印入方向流量情況,并將當前的總字節(jié)數(shù)寫入文件,,供下次任務調(diào)用。 echo 'lastOutput = $lastallout' echo 'CurOutput = $allout' echo 'CurOutSpeed= $outspeed' echo '$allout' >>ifOutAll.txt #打印出方向流量情況,,并將當前的總字節(jié)數(shù)寫入文件,,供下次任務調(diào)用。 那怎么做成圖表呢,?做成圖表主要需要兩個數(shù)據(jù),,一個是時間軸,還有一個是速率值,。所以要想辦法把數(shù)據(jù)導到一個文件中,,并按照“時間 出方向速率 入方向速率”進行排列。 time=$(date +%T) date=$(date +%Y%m%d) #增加兩個變量,,分別記錄日期和時間(24小時制),。 echo '$date $time $outspeed $inspeed' >> speedRcd.txt #將結(jié)果按照“日期 時間 出方向速率 入方向速率”的形式輸出到speedRcd.txt文件中。 運行后文件記錄數(shù)據(jù)如下: 如果我們想讓他一直記錄,,但又不影響前臺操作,,則可以使用&使命令讓腳本在后臺運行,執(zhí)行后會顯示進程ID,;此時可以使用ps命令查看進程狀態(tài),,使用kill命令可以結(jié)束腳本運行。 這個時候離用圖表顯示就差一步了,。那就是導出speedRcd.txt,,然后再導入到Excel中,制成圖表即可,。(PS:如果你熟悉js,,就可以在瀏覽器中直接以圖表進行動態(tài)展示了,就像Zabbix那樣) 選中數(shù)據(jù),,插入圖表,,選擇折線圖樣式。 得到的表格如下,是不是和Zabbix差不多,? 下圖為Zabbix上的監(jiān)控圖表截圖: 最終代碼如下: 這種通過計算得到最終結(jié)果的方法實際還是用的比較少,,如果是像CPU、內(nèi)存這類可以直接讀取數(shù)據(jù)的監(jiān)控項,,大段的計算就省去了,。水平有限,代碼不夠簡潔,,歡迎大家拍磚,! |
|
來自: 新用戶0118F7lQ > 《微信文章》