iftop监控网络流量命令详解

简介

最近遇到了一个问题,使用Tcp通信时,数据接收端有较大的时延。使用的是一个发送端,多个接收端的广播模式。

加入了时间戳调试,发现send发送后,当数据量较大时,过了好几秒rcv端才接收到。

一开始怀疑是客户端处理数据较慢导致的,加入了多线程处理,依然无效。

而且观察了rcv端的数据处理线程,cpu并不高。而且send端内存在一直增大,才怀疑是网络堵塞造成的。

为了验证这个猜想,需要监控各个网卡的流量,于是这用了这个工具iftop

最后发现,果然是由于网络带宽不足引起的阻塞。

这里做一记录。

iftop命令用于查看网络上的流量情况,包括实时速率、总流量、平均流量等,是一款实时流量监控工具。

在调试网络通信的程序中可能会用得上。

注意,iftop命令不记录历史数据,无报表,且只能显示从程序启动到现在的总流量。它的运行需要root权限。

关于Linux的更多系统命令,请参考查看Linux系统内核、发行版、cpu、磁盘、内存、网络、端口使用信息。

安装

以CentOS7下安装为例。

命令行安装:

yum install -y epel-release && yum install -y iftop

如果安装源没有找到这个包,那就只能源码安装了。

源码安装也很简单,步骤如下:

  1. 安装依赖包:yum -y install flex byacc libpcap ncurses ncurses-devel libpcap-devel
  2. 下载iftop代码:wget http://www.ex-parrot.com/pdw/iftop/download/iftop-1.0pre4.tar.gz
  3. 解压:tar zxf iftop-1.0pre4.tar.gz
  4. 常规安装:
cd iftop-1.0pre4
./configure
make -j4
make install # 必须是root

中间如果报错,如:

configure: error: can't find pcap.h
You're not going to get very far without libpcap.

应该是依赖包安装失败了,重新安装再试一下就好了。

使用

直接运行iftop即可启动流量监控。如下图所示:

iftop监控网络流量命令详解_第1张图片

其中:

  • 第一行,是带宽,下面带有标尺,用来标示每个连接上的实时流量占用的带宽
  • 中间部分,是所有的连接,默认显示的是主机名,可以通过参数显示ip,箭头表示数据方向
  • 中间右侧三列,分别是该连接2s、10s、40s的平均流量
  • 底部三行,分别表示发送、接收、汇总的流量
  • 底部三行第2列,为iftop启动到现在的流量汇总
  • 底部三行第3列,为峰值速率
  • 第4列,为平均值
  • 注意,流量单位为bit,非Byte

可以看到,通过iftop可以很容易看到各个连接的流量使用情况。

参数介绍

在启动iftop时,可以指定监控的网卡,默认为第一块网卡:

iftop -i eth1

其他常用命令:

iftop -n # 直接显示IP, 不进行DNS反解析
iftop -N # 直接显示连接埠编号, 不显示服务名称
iftop -F 192.168.1.0/24 or 192.168.1.0/255.255.255.0 # 显示某个网段进出包流量

一般情况下,使用 iftop -nN启动即可。

在进入iftop界面后,直接输入以下参数进行调节控制:

  • h:显示帮助开关
  • n: 显示主机名/主机ip开关
  • s:显示本机host开关
  • d:显示远端主机host开关
  • t:切换显示格式为2行/1行/只显示发送流量/只显示接收流量
  • N:显示端口号或端口服务名称开关
  • S:显示本机的端口信息开关
  • D:显示远端目标主机的端口信息开关
  • p:显示端口信息开关
  • P:切换暂停/继续显示
  • b:显示平均流量图形条开关,以界面第一行带宽为标尺,上图中的白条状图即是
  • B:切换计算2秒或10秒或40秒内的平均流量
  • T:显示每个连接的总流量开关
  • l:打开屏幕过滤功能,输入要过滤的字符,比如ip, 按回车后,屏幕就只显示这个IP相关的流量信息
  • L:切换显示画面上边的刻度; 刻度不同,流量图形条会有变化
  • j或k:可以向上或向下滚动屏幕显示的连接记录
  • 1或2或3:可以根据右侧显示的三列流量数据进行排序
  • <:根据左边的本机名或IP排序
  • >:根据远端目标主机的主机名或IP排序
  • o:切换是否固定只显示当前的连接
  • f:可以编辑过滤代码
  • !: 可以使用shell命令
  • q: 退出

我一般都是使用iftop -nN -i eth0启动,然后再辅助各种参数来调整。

扩展

iftop使用比较简单,通过各种参数也能很快找到自己想要的数据。

也有一些其他流量监控工具,如:

  • ip:查看网卡上的总流量
    • 来自 iproute2util 包,在大多数系统上都已经默认安装,也可通过 yum install -y iproute 安装
  • nload:查看各个网络设备的当前网络速率
    • 来自EPEL软件库,安装:yum install -y epel-release && yum install -y nload
  • iptraf-ng:可以输出网卡的tcp、udp等各种数据,和各个网卡的实时网速
    • 默认未安装,可使用 yum install -y iptraf-ng 安装
  • stat:用来替换vmstat、iostat、netstat、nfsstat和ifstat的全能系统信息统计工具,支持数据实时刷新,输出直观易懂
    • 默认没有安装,安装命令为:yum install -y dstat
  • sar:System Activity Report的缩写,是一款全面的Linux系统运行状态统计和性能分析工具,可从磁盘IO、CPU负载、内存使用等多个维度对系统活动进行报告
    • 来自 sysstat 包,安装:yum install -y sysstat
  • ss 和 netstat:查看活动链接/监听端口的常用命令。ss 是 netstat 的替代,性能更好,建议使用
    • ss 是 iproute2util 包的一部分,netstat 来自 net-tools 包,新版系统上需要自行安装:yum install -y net-tools
  • nethogs:查看单个进程流量而设计的工具,按照进程进行带宽分组
    • 来自EPEL软件库,安装命令是:yum install -y epel-release && yum install -y nethogs
  • tcpdump:用来抓包,保存的数据可以用wireshark打开和查看

你可能感兴趣的:(Linux基础学习,iftop,详解,流量监控)