上下文:我們平臺的監(jiān)控系統(tǒng)用的是cacti+nagios。之前沒有加流量異常報警設(shè)置,cacti上到是有插件可以時間報警,但是無法使用我們自己的短信接口(nagios用的購買的短信接口),所以想自己寫一個腳本配合nagios實(shí)現(xiàn)基本的流量異常報警。
我們提供的服務(wù)有:成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、沈陽ssl等。為成百上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的沈陽網(wǎng)站制作公司腳本思路:/proc/net/dev取出當(dāng)前流經(jīng)網(wǎng)卡的(接收和發(fā)送)的kb總數(shù)量,在檢測間隔時間后再次讀取這兩個值,
相減既是間隔時間段內(nèi)的增量,再根據(jù)此增量做計算,算出間隔時間內(nèi)的平均流量,和基準(zhǔn)流量作比較,觸發(fā)nagios報警事件
局限性:我們只檢測外網(wǎng)卡的流量,且默認(rèn)em1網(wǎng)卡為外網(wǎng)卡(需根據(jù)各位實(shí)際情況自行調(diào)整)
#!/bin/bash #by ljk #默認(rèn)第一塊網(wǎng)卡為外網(wǎng)卡,檢查當(dāng)前系統(tǒng)是以eth0還是em1作為網(wǎng)卡一,后面會引用網(wǎng)卡名 interface=`ip a|grep -e "eth0" -e "em1"|awk '{print $NF}'|tail -1` #定義存儲結(jié)果的函數(shù),以便在任何異常/正常退出前都能保存最新的記錄 function tmp_store { chmod 777 /tmp/receive /tmp/transfer &> /dev/null #以防以root用戶驗證腳本時以root創(chuàng)建這兩個文件,等nagios以nagios用戶調(diào)用腳本的時候無法寫入新的記錄值,導(dǎo)致檢測結(jié)果不準(zhǔn) cat /proc/net/dev|grep "$interface"|sed 's/^ *//g'|awk -F'[ :]+' '{print $2}' > /tmp/receive cat /proc/net/dev|grep "$interface"|sed 's/^ *//g'|awk -F'[ :]+' '{print $10}' > /tmp/transfer } #將當(dāng)時流量統(tǒng)計記錄于tmp,然后由nagios調(diào)用腳本,定時(5分鐘,遇異常隔5分鐘再檢測)采集新的統(tǒng)計值, 做計算統(tǒng)計出時間段內(nèi)流量的平均值 RX_bytes_last=`cat /tmp/receive` TX_bytes_last=`cat /tmp/transfer` RX_bytes=`cat /proc/net/dev|grep "$interface"|sed 's/^ *//g'|awk -F'[ :]+' '{print $2}'` TX_bytes=`cat /proc/net/dev|grep "$interface"|sed 's/^ *//g'|awk -F'[ :]+' '{print $10}'` speed_RX=`echo "scale=0;($RX_bytes - $RX_bytes_last)*8/1024/1024/300"|bc` #300即5分鐘,nagios 每五分鐘檢測一次流量,統(tǒng)計出來的 單位為Mb speed_TX=`echo "scale=0;($TX_bytes - $TX_bytes_last)*8/1024/1024/300"|bc` if [ $speed_RX -gt 5 -a $speed_TX -gt 5 ];then #此處的5,是我們的基準(zhǔn)值,各位自行調(diào)整 echo "speed_RX=$speed_RX, speed_TX=$speed_TX. both great than normal" tmp_store; exit 2 elif [ $speed_RX -gt 5 -o $speed_TX -gt 5 ];then if [ $speed_RX -gt 5 ];then echo "receive is $speed_RX Mbps, great than 5Mbps" tmp_store; exit 2 else echo "transfer is $speed_TX Mbps, great than 5Mbps" tmp_store; exit 2 fi else echo "OK speed_RX=$speed_RX Mbps, speed_TX=$speed_TX Mbps" tmp_store; exit 0 fi
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。