標籤:
需求是我們需要對伺服器上的流量進行監控,網路上有個流傳的check_traffic.sh,它需要被監控機開啟snmp。但是感覺都使用上了nagios還要開snmp。。。有點斧子剪刀一起用的感覺,所以就動手寫了個監控流量的shell:
#!/bin/shusage() { echo "Usage: $0 [-n <eth0>] [-w <tx rx>] [-c <tx rx>]" 1>&2; exit 1; }foundw=0;foundc=0;foundn=0;for item in [email protected] ; do if [[ $foundn == 1 ]]; then n=$item; foundn=2; continue; fi if [[ $foundw == 1 ]]; then w1=$item; foundw=2; continue; fi if [[ $foundw == 2 ]]; then w2=$item; foundw=3; continue; fi if [[ $foundc == 1 ]]; then c1=$item; foundc=2; continue; fi if [[ $foundc == 2 ]]; then c2=$item; foundc=2; continue; fi if [[ "$item" == "-w" ]]; then foundw=1; continue; fi if [[ "$item" == "-c" ]]; then foundc=1; continue; fi if [[ "$item" == "-n" ]]; then foundn=1; continue; fidoneif [ -z "${w1}" ] || [ -z "${w2}" ] || [ -z "${c1}" ] || [ -z "${c2}" ] || [ -z "${n}" ]; then usagefiR1=`cat /sys/class/net/$n/statistics/rx_bytes`T1=`cat /sys/class/net/$n/statistics/tx_bytes`sleep 1R2=`cat /sys/class/net/$n/statistics/rx_bytes`T2=`cat /sys/class/net/$n/statistics/tx_bytes`TBPS=`expr $T2 - $T1`RBPS=`expr $R2 - $R1`TMBPS=`expr $TBPS / 1024 / 128`RMBPS=`expr $RBPS / 1024 / 128`if [[ $TMBPS -ge $c1 ]] || [[ $RMBPS -ge $c2 ]] ; then echo "Critical - current is ${TMBPS}, ${RMBPS}"; exit 2;fiif [[ $TMBPS -ge $w1 ]] || [[ $RMBPS -ge $w2 ]] ; then echo "WARNING - current is ${TMBPS}, ${RMBPS}"; exit 1;fiecho "OK - current is ${TMBPS}, ${RMBPS}";exit 0;
其中的w和c的數值單位都是Mb。
nagios監控流量指令碼