ifconfig与网络流量监控

2012年5月30日 发表评论 阅读评论

我们在linux/unix下最常用的工具莫过于ifconfig了。ifconfig的输出中有两项,分别是:

RX==receive,接收,从开启到现在接收封包的情况,是下行流量。

TX==Transmit,发送,从开启到现在发送封包的情况,是上行流量。

[root@test etc]# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 00:26:B9:58:19:88
          inet addr:192.168.0.46  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6049782538 errors:0 dropped:2373 overruns:0 frame:0
          TX packets:7415059121 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2611876455455 (2.3 TiB)  TX bytes:6028598337794 (5.4 TiB)
          Interrupt:114 Memory:d8000000-d8012800 

RX和TX输出的值使有的单位参数是bytes,而利用该命令,我们也可以配置脚本进行流量检测。大名鼎鼎的nagios就有一个插件check_traffic,通过ifconfig的输出的RX、TX值通过之间的差,再除去中间间隔的时间算出流量大小的。该插件的下载页为:https://github.com/cloved/check_traffic/downloads 。

现摘录其中部分关于度量值转换的部分如下:

#to K
uIn=`echo "$ctbpsIn / 1024" | bc`
uOut=`echo "$ctbpsOut / 1024" | bc`
#to M
if [ "$isM" = "True" ]; then
	uIn=`echo "scale=$Scale; $uIn / 1024" | bc`
	uOut=`echo "scale=$Scale; $uOut / 1024" | bc`
fi
#to B
if [ "$isB" = "True" ]; then
	uIn=`echo "scale=$Scale; $uIn / 8" | bc`
	uOut=`echo "scale=$Scale; $uOut / 8" | bc`

即所得的结果如果想要转换成Kb需要除以1024,转换成Mb要在kbit的基础上再除以1024,而后面所跟的单位如果是B,就是KB或MB,需要要再除以8。所以我们在nagios监控中对于参数的设置也要根据实际情况进行变动。

command[check_traffic]=/App/nagios/libexec/check_traffic -i eth1 -w 90000 -c 120000

如我的nrpe.cfg中的关于该项的配置如上面所示。前两天实然流量告警,去查看该配置时,竟然忘了所使用的计量单位是什么,只好又去脚本里去查看。想想蛮搞笑的。关于ifconfig另外一些基础的东西可以去百度百科或man手册上去找。




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

分类: Linux/unix/mac 标签: ,
  1. 本文目前尚无任何评论.