在工作中,我们经常需要查看服务器的实时网卡流量。通常,我们会通过这几种方式查看Linux服务器的实时网卡流量。
nload工具
nload用于实时查看网卡流量,默认系统都没有安装,首先安装方式如下:
1 2
$ yum install -y epel-release $ yum install -y nload
使用也非常简单,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
$ nload Device eth0 [192.168.0.110] (4/5): =================================================================================== Incoming: Curr: 5.21 kBit/s Avg: 4.09 kBit/s Min: 1.59 kBit/s Max: 12.51 kBit/s Ttl: 4.16 GByte Outgoing: Curr: 16.48 kBit/s Avg: 14.38 kBit/s Min: 6.73 kBit/s Max: 28.39 kBit/s
iftop工具
默认系统没有安装,需要安装,如下:
1 2 3
$ yum install -y epel-release $ yum install -y iftop
安装完成之后,输入iftop便可看到如下界面
其中,相关参数解释如下:
界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间的<= =>这两个左右箭头,表示的是流量的方向。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量
sar命令
sar命令包含在sysstat工具包中,提供系统的众多统计数据。其在不同的系统上命令有些差异,某些系统提供的sar支持基于网络接口的数据统计,也可以查看设备上每秒收发包的个数和流量。
另外,-n参数很有用,他有6个不同的开关:DEV | EDEV | NFS | NFSD | SOCK | ALL ,其代表的含义如下:
DEV显示网络接口信息。 EDEV显示关于网络错误的统计数据。 NFS统计活动的NFS客户端的信息。 NFSD统计NFS服务器的信息 SOCK显示套接字信息 ALL显示所有5个开关
1 2 3 4 5 6 7 8 9 10 11 12 13 14
$ sar -n DEV 1 2 Linux 3.10.0-514.26.2.el7.x86_64 (localhost) 08/31/2019 _x86_64_ (1 CPU) 09:52:28 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 09:52:29 AM eth0 2.02 1.01 0.13 0.16 0.00 0.00 0.00 09:52:29 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:52:29 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 09:52:30 AM eth0 1.02 1.02 0.07 0.23 0.00 0.00 0.00 09:52:30 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s Average: eth0 1.52 1.02 0.10 0.19 0.00 0.00 0.00 Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
参数说明: IFACE:LAN接口 rxpck/s:每秒钟接收的数据包 txpck/s:每秒钟发送的数据包 rxbyt/s:每秒钟接收的字节数 txbyt/s:每秒钟发送的字节数 rxcmp/s:每秒钟接收的压缩数据包 txcmp/s:每秒钟发送的压缩数据包 rxmcst/s:每秒钟接收的多播数据包 rxerr/s:每秒钟接收的坏数据包 txerr/s:每秒钟发送的坏数据包 coll/s:每秒冲突数 rxdrop/s:因为缓冲充满,每秒钟丢弃的已接收数据包数 txdrop/s:因为缓冲充满,每秒钟丢弃的已发送数据包数 txcarr/s:发送数据包时,每秒载波错误数 rxfram/s:每秒接收数据包的帧对齐错误数 rxfifo/s:接收的数据包每秒FIFO过速的错误数 txfifo/s:发送的数据包每秒FIFO过速的错误数
实时监控脚本(1)
ifconfig可以查看的是从连上网开始的流量总和,cat /proc/net/dev记录的值也是总流量,那么可以计算一下,实时流量=当前流量-上一秒的流量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
[[email protected] ~] ethn=$1 while true do RX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}' ) TX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}' ) sleep 1 RX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}' ) TX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}' ) clear echo -e "t RX `date +%k:%M:%S` TX" RX=$((${RX_next} -${RX_pre} )) TX=$((${TX_next} -${TX_pre} )) if [[ $RX -lt 1024 ]];then RX="${RX} B/s" elif [[ $RX -gt 1048576 ]];then RX=$(echo $RX | awk '{print $1/1048576 "MB/s"}' ) else RX=$(echo $RX | awk '{print $1/1024 "KB/s"}' ) fi if [[ $TX -lt 1024 ]];then TX="${TX} B/s" elif [[ $TX -gt 1048576 ]];then TX=$(echo $TX | awk '{print $1/1048576 "MB/s"}' ) else TX=$(echo $TX | awk '{print $1/1024 "KB/s"}' ) fi echo -e "$ethn t $RX $TX " done
执行结果如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[[email protected] ~] RX 20:23:38 TX eth0 66B/s 0B/s RX 20:23:39 TX eth0 132B/s 0B/s RX 20:23:40 TX eth0 186B/s 194B/s RX 20:23:41 TX eth0 240B/s 194B/s RX 20:23:42 TX eth0 132B/s 0B/s RX 20:23:43 TX eth0 240B/s 194B/s RX 20:23:44 TX eth0 396B/s 4.19727KB/s RX 20:23:45 TX eth0 276B/s 178B/s
实时监控脚本(2)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
$ cat network_flow.sh NIC=$1 while true ;do OLD_IN=`awk '$0~"' $NIC '"{print $2}' /proc/net/dev` OLD_OUT=`awk '$0~"' $NIC '"{print $10}' /proc/net/dev` sleep 1 NEW_IN=`awk '$0~"' $NIC '"{print $2}' /proc/net/dev` NEW_OUT=`awk '$0~"' $NIC '"{print $10}' /proc/net/dev` clear IN=$(printf "%.1f%s" "$(($NEW_IN-$OLD_IN) )" "B/s" ) OUT=$(printf "%.1f%s" "$(($NEW_OUT-$OLD_OUT) )" "B/s" ) echo " traffic in `date +%k:%M:%S` traffic out " echo "$NIC $IN $OUT " done
执行结果如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
$ ./network_flow.sh eth0 traffic in 11:15:02 traffic out eth0 732.0B/s 948.0B/s traffic in 11:15:03 traffic out eth0 132.0B/s 0.0B/s traffic in 11:15:04 traffic out eth0 132.0B/s 0.0B/s traffic in 11:15:05 traffic out eth0 132.0B/s 0.0B/s traffic in 11:15:06 traffic out eth0 186.0B/s 242.0B/s traffic in 11:15:07 traffic out eth0 132.0B/s 0.0B/s traffic in 11:15:08 traffic out eth0 132.0B/s 0.0B/s traffic in 11:15:09 traffic out eth0 132.0B/s 0.0B/s traffic in 11:15:10 traffic out eth0 240.0B/s 242.0B/s traffic in 11:15:11 traffic out eth0 132.0B/s 0.0B/s
近期评论