zl程序教程

您现在的位置是:首页 >  云平台

当前栏目

nagios监控流量脚本

监控 脚本 流量 Nagios
2023-09-14 08:59:40 时间

需求是我们需要对服务器上的流量进行监控,网络上有个流传的check_traffic.sh,它需要被监控机开启snmp。但是感觉都使用上了nagios还要开snmp。。。有点斧子剪刀一起用的感觉,所以就动手写了个监控流量的shell:

复制代码
#!/bin/sh

usage() { echo "Usage: $0 [-n eth0 ] [-w tx rx ] [-c tx rx ]" 1 2; exit 1; }

foundw=0;

foundc=0;

foundn=0;

for item in $@ ; do

 if [[ $foundn == 1 ]]; then

 n=$item;

 foundn=2;

 continue;

 if [[ $foundw == 1 ]]; then

 w1=$item;

 foundw=2;

 continue;

 if [[ $foundw == 2 ]]; then

 w2=$item;

 foundw=3;

 continue;

 if [[ $foundc == 1 ]]; then

 c1=$item;

 foundc=2;

 continue;

 if [[ $foundc == 2 ]]; then

 c2=$item;

 foundc=2;

 continue;

 if [[ "$item" == "-w" ]]; then

 foundw=1;

 continue;

 if [[ "$item" == "-c" ]]; then

 foundc=1;

 continue;

 if [[ "$item" == "-n" ]]; then

 foundn=1;

 continue;

if [ -z "${w1}" ] || [ -z "${w2}" ] || [ -z "${c1}" ] || [ -z "${c2}" ] || [ -z "${n}" ]; then

 usage

R1=`cat /sys/class/net/$n/statistics/rx_bytes`

T1=`cat /sys/class/net/$n/statistics/tx_bytes`

sleep 1

R2=`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;

if [[ $TMBPS -ge $w1 ]] || [[ $RMBPS -ge $w2 ]] ; then

 echo "WARNING - current is ${TMBPS}, ${RMBPS}";

 exit 1;

echo "OK - current is ${TMBPS}, ${RMBPS}";

exit 0;
复制代码

其中的w和c的数值单位都是Mb。