当前位置:   article > 正文

详解实时查看网卡流量的几款工具

网卡流量的平均值怎么计算

点击上方“朱小厮的博客”,选择“设为星标”

后台回复"书",获取推荐书籍

来源:dazhuanlan.com

nload工具

nload用于实时查看网卡流量,默认系统都没有安装,首先安装方式如下:

  1. $ yum install -y epel-release
  2. $ yum install -y nload

使用也非常简单,如下:

  1. $ nload
  2. Device eth0 [192.168.0.110] (4/5):
  3. ===================================================================================
  4. Incoming:
  5. Curr: 5.21 kBit/s # Incoming:进来的流量
  6. Avg: 4.09 kBit/s # Outgoing:出去的流量
  7. Min: 1.59 kBit/s # Curr:当前的流量值
  8. Max: 12.51 kBit/s # Avg:平均值的流量值
  9. Ttl: 4.16 GByte # Min:最小的流量值
  10. Outgoing: # Max:最大的流量值
  11. Curr: 16.48 kBit/s # Ttl:总的流量值
  12. Avg: 14.38 kBit/s
  13. Min: 6.73 kBit/s
  14. Max: 28.39 kBit/s

iftop工具

默认系统没有安装,需要安装,如下:

  1. # 需要epel环境
  2. $ yum install -y epel-release
  3. $ yum install -y iftop

安装完成之后,输入iftop便可看到如下界面

其中,相关参数解释如下:

1.界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。2.中间的<= =>这两个左右箭头,表示的是流量的方向。3.TX:发送流量4.RX:接收流量5.TOTAL:总流量6.Cumm:运行iftop到目前时间的总流量7.peak:流量峰值8.rates:分别表示过去 2s 10s 40s 的平均流量

sar命令

sar命令包含在sysstat工具包中,提供系统的众多统计数据。其在不同的系统上命令有些差异,某些系统提供的sar支持基于网络接口的数据统计,也可以查看设备上每秒收发包的个数和流量。

  1. # DEV显示网络接口信息
  2. # 命令后面1 2 意思是:每一秒钟取1次值,取2次
  3. $ sar –n DEV 1 2

另外,-n参数很有用,他有6个不同的开关:DEV | EDEV | NFS | NFSD | SOCK | ALL ,其代表的含义如下:

DEV显示网络接口信息。EDEV显示关于网络错误的统计数据。NFS统计活动的NFS客户端的信息。NFSD统计NFS服务器的信息 SOCK显示套接字信息 ALL显示所有5个开关

  1. $ sar -n DEV 1 2
  2. Linux 3.10.0-514.26.2.el7.x86_64 (localhost) 08/31/2019 _x86_64_ (1 CPU)
  3. 09:52:28 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
  4. 09:52:29 AM eth0 2.02 1.01 0.13 0.16 0.00 0.00 0.00
  5. 09:52:29 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  6. 09:52:29 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
  7. 09:52:30 AM eth0 1.02 1.02 0.07 0.23 0.00 0.00 0.00
  8. 09:52:30 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  9. Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
  10. Average: eth0 1.52 1.02 0.10 0.19 0.00 0.00 0.00
  11. 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. [root@localhost ~]# cat network.sh
  2. # 传入网卡参数
  3. ethn=$1
  4. while true
  5. do
  6. RX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')
  7. TX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}')
  8. sleep 1
  9. RX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')
  10. TX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}')
  11. clear
  12. # echo -e激活转义符
  13. # 输出时间的标题
  14. echo -e "t RX `date +%k:%M:%S` TX"
  15. RX=$((${RX_next}-${RX_pre}))
  16. TX=$((${TX_next}-${TX_pre}))
  17. if [[ $RX -lt 1024 ]];then
  18. RX="${RX}B/s"
  19. elif [[ $RX -gt 1048576 ]];then
  20. RX=$(echo $RX | awk '{print $1/1048576 "MB/s"}')
  21. else
  22. RX=$(echo $RX | awk '{print $1/1024 "KB/s"}')
  23. fi
  24. if [[ $TX -lt 1024 ]];then
  25. TX="${TX}B/s"
  26. elif [[ $TX -gt 1048576 ]];then
  27. TX=$(echo $TX | awk '{print $1/1048576 "MB/s"}')
  28. else
  29. TX=$(echo $TX | awk '{print $1/1024 "KB/s"}')
  30. fi
  31. # 输出流量
  32. echo -e "$ethn t $RX $TX "
  33. done

执行结果如下:

  1. [root@localhost ~]# ./network.sh eth0
  2. RX 20:23:38 TX
  3. eth0 66B/s 0B/s
  4. RX 20:23:39 TX
  5. eth0 132B/s 0B/s
  6. RX 20:23:40 TX
  7. eth0 186B/s 194B/s
  8. RX 20:23:41 TX
  9. eth0 240B/s 194B/s
  10. RX 20:23:42 TX
  11. eth0 132B/s 0B/s
  12. RX 20:23:43 TX
  13. eth0 240B/s 194B/s
  14. RX 20:23:44 TX
  15. eth0 396B/s 4.19727KB/s
  16. RX 20:23:45 TX
  17. eth0 276B/s 178B/s

实时监控脚本2

  1. $ cat network_flow.sh
  2. # 监控实时网卡流量
  3. # $1 接收所传第一个参数 即要监控的网卡
  4. NIC=$1
  5. # echo -e "traffic in --- traffic out"
  6. while true;do
  7. # $0 命令输出结果 ~ 匹配模式
  8. OLD_IN=`awk '$0~"'$NIC'"{print $2}' /proc/net/dev`
  9. OLD_OUT=`awk '$0~"'$NIC'"{print $10}' /proc/net/dev`
  10. sleep 1
  11. NEW_IN=`awk '$0~"'$NIC'"{print $2}' /proc/net/dev`
  12. NEW_OUT=`awk '$0~"'$NIC'"{print $10}' /proc/net/dev`
  13. clear
  14. # printf不换行 %s占位符
  15. IN=$(printf "%.1f%s" "$(($NEW_IN-$OLD_IN))" "B/s")
  16. OUT=$(printf "%.1f%s" "$(($NEW_OUT-$OLD_OUT))" "B/s")
  17. echo " traffic in `date +%k:%M:%S` traffic out "
  18. echo "$NIC $IN $OUT"
  19. done

执行结果如下:

  1. $ ./network_flow.sh eth0
  2. traffic in 11:15:02 traffic out
  3. eth0 732.0B/s 948.0B/s
  4. traffic in 11:15:03 traffic out
  5. eth0 132.0B/s 0.0B/s
  6. traffic in 11:15:04 traffic out
  7. eth0 132.0B/s 0.0B/s
  8. traffic in 11:15:05 traffic out
  9. eth0 132.0B/s 0.0B/s
  10. traffic in 11:15:06 traffic out
  11. eth0 186.0B/s 242.0B/s
  12. traffic in 11:15:07 traffic out
  13. eth0 132.0B/s 0.0B/s
  14. traffic in 11:15:08 traffic out
  15. eth0 132.0B/s 0.0B/s
  16. traffic in 11:15:09 traffic out
  17. eth0 132.0B/s 0.0B/s
  18. traffic in 11:15:10 traffic out
  19. eth0 240.0B/s 242.0B/s
  20. traffic in 11:15:11 traffic out
  21. eth0 132.0B/s 0.0B/s
  1. 想知道更多?扫描下面的二维码关注我扫描上面微信,备注"书",获取推荐书籍
  2. 点个赞+在看,少个 bug ????
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/182807
推荐阅读
相关标签
  

闽ICP备14008679号