在Linux中有很多的流量监控工具,它们可以监控、分类网络流量,以花哨的图形用户界面提供实时流量分析报告。大多数这些工具(例如:ntopng , iftop )都是基于libpcap 库的 ,这个函数库是用来截取流经网卡的数据包的,可在用户空间用来监视分析网络流量。尽管这些工具功能齐全,然而基于libpcap库的流量监控工具无法处理高速(Gb以上)的网络接口,原因是由于在用户空间做数据包截取的系统开销过高所致。

在本文中我们介绍一种简单的Shell 脚本,它可以监控网络流量而且不依赖于缓慢的libpcap库。这些脚本支持Gb以上规模的高速网络接口,如果你对“汇聚型”的网络流量感兴趣的话,它们可统计每个网络接口上的流量。

脚本主要是基于sysfs虚拟文件系统,这是由内核用来将设备或驱动相关的信息输出到用户空间的一种机制。网络接口的相关分析数据会通过“/sys/class/net/<ethX>/statistics”输出。

举个例子,eth0的网口上分析报告会输出到这些文件中:

  • /sys/class/net/eth0/statistics/rx_packets: 收到的数据包数据

  • /sys/class/net/eth0/statistics/tx_packets: 传输的数据包数量

  • /sys/class/net/eth0/statistics/rx_bytes: 接收的字节数

  • /sys/class/net/eth0/statistics/tx_bytes: 传输的字节数

  • /sys/class/net/eth0/statistics/rx_dropped: 收包时丢弃的数据包

  • /sys/class/net/eth0/statistics/tx_dropped: 发包时丢弃的数据包

这些数据会根据内核数据发生变更的时候自动刷新。因此,你可以编写一系列的脚本进行分析并计算流量统计。下面就是这样的脚本(感谢 joemiller 提供)。第一个脚本是统计每秒数据量,包含接收(RX)或发送(TX)。而后面的则是一个描述网络传输中的接收(RX)发送(TX)带宽。这些脚本中安装不需要任何的工具。

测量网口每秒数据包:

  1. #!/bin/bash

  2. INTERVAL="1"  # update interval in seconds

  3. if [ -z "$1" ]; then

  4. echo

  5. echo usage: $0 [network-interface]

  6. echo

  7. echo e.g. $0 eth0

  8. echo

  9. echo shows packets-per-second

  10. exit

  11. fi

  12. IF=$1

  13. while true

  14. do

  15. R1=`cat /sys/class/net/$1/statistics/rx_packets`

  16. T1=`cat /sys/class/net/$1/statistics/tx_packets`

  17. sleep $INTERVAL

  18. R2=`cat /sys/class/net/$1/statistics/rx_packets`

  19. T2=`cat /sys/class/net/$1/statistics/tx_packets`

  20. TXPPS=`expr $T2 - $T1`

  21. RXPPS=`expr $R2 - $R1`

  22. echo "TX $1: $TXPPS pkts/s RX $1: $RXPPS pkts/s"

  23. done

网络带宽测量:

  1. #!/bin/bash

  2. INTERVAL="1"  # update interval in seconds

  3. if [ -z "$1" ]; then

  4. echo

  5. echo usage: $0 [network-interface]

  6. echo

  7. echo e.g. $0 eth0

  8. echo

  9. exit

  10. fi

  11. IF=$1

  12. while true

  13. do

  14. R1=`cat /sys/class/net/$1/statistics/rx_bytes`

  15. T1=`cat /sys/class/net/$1/statistics/tx_bytes`

  16. sleep $INTERVAL

  17. R2=`cat /sys/class/net/$1/statistics/rx_bytes`

  18. T2=`cat /sys/class/net/$1/statistics/tx_bytes`

  19. TBPS=`expr $T2 - $T1`

  20. RBPS=`expr $R2 - $R1`

  21. TKBPS=`expr $TBPS / 1024`

  22. RKBPS=`expr $RBPS / 1024`

  23. echo "TX $1: $TKBPS kb/s RX $1: $RKBPS kb/s"

  24. done

下面的屏幕截图显示了上面的两个脚本的输出。

原文链接: Dan Nanni 翻译: 极客范 - 彭秦进

译文链接: http://www.geekfan.net/5558/

转载于:https://blog.51cto.com/lucifer119/1389384

如何在Linux下统计高速网络中的流量相关推荐

  1. linux 网络流量如何计算,如何在Linux下统计高速网络中的流量

    在Linux中有很多的流量监控工具,它们可以监控.分类网络流量,以花哨的图形用户界面提供实时流量分析报告.大多数这些工具(例如:ntopng , iftop )都是基于libpcap 库的 ,这个函数 ...

  2. ubuntu linux下测试实时网络网速流量监控的几种小工具命令方法

    总结了ubuntu下常用的网络查看/监控工具,包括nethogs,ethstatus,bmon,Netspeed. 1. nethogs nethogs可以查看实时进程网络占用.  安装: sudo ...

  3. linux下统计log文件中某个字段的值,并计算出平均值

    测试场景:统计log文件output.txt中字段"framesPerSecond"的所有值的平均值 分成两个步骤: 进入对应点log文件所在目录下 第一步:统计出字符串出现的次数 ...

  4. windows和linux通用的压缩,如何在linux下实现Windows中winrar和winzip等压缩软件所提供的打包压缩分割功能?...

    (如何在linux下实现Windows中winrar和winzip等压缩软件所提供的打包压缩分割功能) 将大文件或目录打包.压缩并分割成制定大小的文件,这在将数据备份到容量有限的移动储存设备时是必须的 ...

  5. 如何在linux下用rsync同步文件以及它的用法和scp的用法

    如何在linux下用rsync同步文件以及它的用法和scp的用法 2010年06月06日 root@legend-laptop:/home/legend/httpd~/cgi-bin# rsync - ...

  6. 如何在Linux下使用rsync

    如何在Linux下使用rsync 对于各种组织和公司,数据对他们是最重要的,即使对于电子商务,数据也是同样重要的.Rsync是一款通过网络备份重要数据的工具/软件.它同样是一个在类Unix和Windo ...

  7. 如何在Linux下安装Docker

    如何在Linux下安装Docker Docker概念: Docker包括三个基本概念: l  镜像(Image) l  容器(Container) l  仓库(Repository) 理解了这三个概念 ...

  8. Linux下监控磁盘io,如何在Linux下监控磁盘IO?

    [51CTO.com快译]iostat用于获取存储设备和分区的I/O统计信息.iostat是sysstat软件包的一部分.使用iostat,你可以监控存储设备(比如硬驱和SSD)以及分区(磁盘分区)的 ...

  9. linux下构建Zabbix网络监控平台

    linux下构建Zabbix网络监控平台 由于图片过多,本人不想一张一张上传,请下载我的详细文章: linux下构建zabbix网络监控平台[技术文档](河南-清小小)-下载地址: http://do ...

最新文章

  1. InetAddress类的一些方法
  2. ssh_config sshd_config 详解
  3. ECCV 2020 | 可解释和泛化的行人再辨识
  4. C++直接修改std::set元素的方法
  5. hadoop的部署以及应用
  6. RecyclerView学习(二)之缓存探索
  7. 利用计算机辅助管理档案说明,计算机辅助档案管理
  8. 机器人与matlab——Robotics Toolbox—02建立机器人模型
  9. mysql 删库跑路_如何避免删库跑路呢?mysql使用bin
  10. 人生的意义无非就是在平淡中活着
  11. 中国巧克力生产线及解决方案市场趋势报告、技术动态创新及市场预测
  12. 新宝盘面简述12.24
  13. 王峻涛: 传统B2C企业(指纯网络型B2C企业)错过黄金时期,传统企业将是电子商务未来赢家
  14. qq家园文字版二战风云的建筑类型
  15. 爬山虎采集实战-站长之家网站排行榜
  16. 2023年华为HCIE-Dacom认证题库(H12-891)
  17. Linux九阴真经之九阴白骨爪残卷2(SSH)
  18. jsp中无法识别EL表达式问题
  19. c++ 纯 opencv 实现电表数字识别(车牌类似)
  20. [转]OKapi BM25 算法

热门文章

  1. c++代码小游戏_用Python编写一个打乒乓球小游戏
  2. Python之web开发(四):python使用django框架搭建网站之主页搭建
  3. python 之GUI设计:Entry组件
  4. 全球及中国工业水性涂料行业销售前景与竞争态势研究报告2022年
  5. 中国无烟煤市场需求规模与未来发展形势分析报告2022版
  6. 全球及中国综艺节目产业营销策略分析及创新格局规划建议报告2021-2027年
  7. js 为什么0.1+0.2不等于0.3
  8. 体验Windows Azure的Access Control Service
  9. python各种模块的使用
  10. docker进阶-搭建私有企业级镜像仓库Harbor