如何在Linux下统计高速网络中的流量?

标签: linux 统计 网络 | 发表时间:2014-02-19 15:06 | 作者:david_je
出处:http://www.iteye.com

如何在Linux下统计高速网络中的流量?

2014-01-22 11:04 彭秦进  极客范 字号: T |  T

在Linux中有很多的流量监控工具,它们可以监控、分类网络流量,以花哨的图形用户界面提供实时流量分析报告。本文中我们介绍一种简单的Shell 脚本,它可以监控网络流量而且不依赖于缓慢的libpcap库。

AD: 2013云计算架构师峰会课程资料下载

 

nethogs2

在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 

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

152940zdJ

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

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



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [linux 统计 网络] 推荐:

如何在Linux下统计高速网络中的流量?

- - 操作系统 - ITeye博客
如何在Linux下统计高速网络中的流量. 2014-01-22 11:04 彭秦进 . 在Linux中有很多的流量监控工具,它们可以监控、分类网络流量,以花哨的图形用户界面提供实时流量分析报告. 本文中我们介绍一种简单的Shell 脚本,它可以监控网络流量而且不依赖于缓慢的libpcap库. 2013云计算架构师峰会课程资料下载.

如何在Linux下统计高速网络中的流量

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

NetHogs——Linux下按进程实时统计网络带宽利用率

- - 极客范 - GeekFan.net
网上有很多适用于Linux操作系统的开源网络监视工具.比如说,你可以用命令iftop来检查带宽使用情况. netstat用来查看接口统计报告,还有top监控系统当前运行进程.但是如果你想要找一个能够按进程实时统计网络带宽利用率,那么NetHogs就是你所需要的唯一工具.. NetHogs – 网络带宽监控.

Oracle 管理之 Linux 网络基础

- - CSDN博客数据库推荐文章
1、TCP/IP 网络配置文件. TCP/IP 网络配置文件. IP配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0. 网管配置文件:/etc/sysconfig/network. 域名解析:/etc/host.conf. 主机配置:/etc/hosts.

网络会议软件 Mikogo 发布 Linux 版

- Lambda - Wow! Ubuntu
免费网络会议及远程桌面控制软件 Mikogo 正式通告发布首个 Linux 平台上的 Beta 版本,完全原生的 Linux 程序. Mikogo 是一款与 TeamViewer 类似的远程控制及网络会议软件,来自德国,原先只能运行于 Windows 及 Mac 平台下. 其最大特点是体积非常小巧、可一次连接10人、传输效果好速度快,可限定共享的程序,并且能穿透局域网、防火墙.

Linux下网络抓包命令tcpdump详解(在wireshark中看包)

- - 开心平淡对待每一天。热爱生活
tcpdump采用命令行方式,它的命令格式为:.       tcpdump[ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ].           [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ].           [ -T 类型 ] [ -w 文件名 ] [表达式 ]   .

用 NetHogs 监控 Linux 每个进程的网络情况

- - vpsee.com
有时候我们客户会发现服务器或 VPS 网络慢,进一步发现大量带宽被占用,一些客户到这里为止就不知道怎么办了. 能不能有简单办法找出哪个程序(或者进程)占用了流量呢. Linux 下提供了很多监控流量的小工具,比如 iftop, iptraf, ifstat, darkstat, bwm-ng, vnstat 等,今天介绍的 NetHogs 正是我们需要的工具,nethogs 可以监控每个进程的网络带宽占用情况,为我们进一步分析问题提供了帮助.

Linux上的基础网络设备详解

- - 博客园_知识库
  网络虚拟化是 Cloud 中的一个重要部分. 作为基础知识,本文详细讲述 Linux 抽象出来的各种网络设备的原理、用法、数据流向. 您通过此文,能够知道如何使用 Linux 的基础网络设备进行配置以达到特定的目的,分析出 Linux 可能的网络故障原因.   Linux 抽象网络设备简介.   和磁盘设备类似,Linux 用户想要使用网络功能,不能通过直接操作硬件完成,而需要直接或间接的操作一个 Linux 为我们抽象出来的设备,既通用的 Linux 网络设备来完成.

提升 Linux 网络性能,应付 100 GB的网卡

- - 极客521 | 极客521
贾斯玻.布鲁勒在2015年澳大利亚Linux研讨会(LCA)的有关内核的小型研讨会上提到:100GB的网卡即将来临( 见幻灯片,PDF格式的). 对Linux内核来说,要以最大的速度驱动这样的适配器将是巨大的挑战. 应对这一挑战是目前和未来一段时间内工作的重心. 好消息是Linux网络通信速度已经有了很大的提高-不过还有一些问题有待解决.

Linux蠕虫将路由器变成社交网络机器人

- - Solidot
安全公司ESET Canada Research的研究人员发现了一个取名为Linux/Moose的恶意程序. 它针对的是调制解调器、家用路由器和其它嵌入式计算机,将这些设备变成一个代理网络,用于创建伪造的社交网络账号和展开欺诈. 该蠕虫还能劫持路由器的DNS服务,将DNS请求路由到一个恶意服务器,窃取未加密的社交媒体cookies如Instagram,利用Cookie去follow虚假账户.