我们在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手册上去找。