说明:监控服务器流量的方法,有很多种
1)iftop工具
2)ifconfig中会显示发送总流量(TX)和接收总流量(RX)
3)通过查看/proc/net/dev可以获取到流量
每种方法大同小异,ifconfig大家都很熟悉,这里不做介绍(思路和方法三一致,都是通过计算差值,取得平均值),简单介绍下iftop流量监控工具和方法三脚本监控
iftop是一个工具,如果没有安装下
yum install iftop -y
iftop界面关键字说明:
TX:发送流量
RX:接收流量
TOTAL:总流量
cumn:运行iftop到目前的总流量
peak:流量峰值
rates:每2s,10s,40s的平均流量
iftop工具好处效果直观,一目了然
方法三脚本显示平局流量
思路:通过查看/proc/net/dev,指定网卡,获取出入和接收流量值,然后休息3秒,重新获取,取2者之差计算每秒的平局流量
扩展:你可以当流量进行监控,当系统流量超过多少,进行邮件预警(服务器上装mailx客户端即可)
脚本内容如下:
#通过外部传参的形式,获取指定网卡的流量
Net=$1
echo "IN-------------------------------OUT"
#通过函数获取每秒流入和流出的流量
function net_work {
IN_NET=`awk -F " +" '/'$Net'/{print $2}' /proc/net/dev`
OUT_NET=`awk -F " +" '/'$Net'/{print $10}' /proc/net/dev`
sleep 3
IN_NEW_NET=`awk -F " +" '/'$Net'/{print $2}' /proc/net/dev`
OUT_NEW_NET=`awk -F " +" '/'$Net'/{print $10}' /proc/net/dev`
IN_CHA=$(((IN_NEW_NET-IN_NET)/3))
OUT_CHA=$(((OUT_NEW_NET-OUT_NET)/3))
}
#通过调用函数三次,获取三次的流入和流出流量,然后计算均值,这样误差较小
net_work
IN1=$IN_CHA
OUT1=$OUT_CHA
sleep 1
net_work
IN2=$IN_CHA
OUT2=$OUT_CHA
sleep 1
IN3=$IN_CHA
OUT3=$OUT_CHA
sleep 1
IN_AVG=$(((IN1+IN2+IN3)/3))
OUT_AVG=$(((OUT1+OUT2+OUT3)/3))
echo "$IN_AVG $OUT_AVG"