背景:Linux 系统下如果服务器带宽跑满了,查看跟哪个 IP 通信占用带宽比较多,可以通过 iftop 命令进行查询。

安装

CentOS 系统运行:yum install iftop -y

Debian 系统运行:apt-get install iftop -y

使用 ifconfig |grep eth 查看网卡。

使用

安装好后在服务器执行 iftop -i eth1 就可以查看服务器公网网卡带宽使用情况(如果只执行 iftop 默认检测第一块网卡使用情况,这样查的会是内网网卡 eth0)。

1
2
# -P 参数会将请求服务的端口显示出来,也就是说是通过服务器哪个端口建立的连接,看内网流量执行 iftop -i eth0 -P 命令
iftop -i eth0 -P

iftop 的相关参数

1
2
3
4
5
6
7
8
9
10
11
-i :设定监测的网卡,如:# iftop -i eth1
-B : 以 bytes 为单位显示流量,默认是 bits,如:# iftop –B
-n :使 host 信息默认直接都显示 IP,如:# iftop –n
-N :使端口信息默认直接都显示端口号,如: # iftop –N
-F :显示特定网段的进出流量,如 # iftop -F 10.10.1.0/24 或 # iftop -F 10.10.1.0/255.255.255.0
-h :(display this message),帮助,显示参数信息
-p :使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的 IP 信息
-b :使流量图形条默认就显示
-f :这个不常用,用于过滤计算包
-P :使 host 信息及端口信息默认就都显示
-m :设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M

iftop 工具界面相关简要说明

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

iftop 界面含义如下

1
2
3
4
5
6
7
8
9
10
11
12
13
第一行:带宽显示

中间部分:外部连接列表,即记录了哪些 IP 正在和本机的网络连接

中间部分右边:实时参数分别是该访问 IP 连接到本机 2 秒,10 秒和 40 秒的平均流量 => 代表发送数据,<= 代表接收数据

底部三行:表示发送,接收和全部的流量

底部三行第二列:为你运行 iftop 到目前流量

底部三行第三列:为高峰值

底部三行第四列:为平均值

通过 iftop 的界面很容易找到哪个 IP 在占用网络流量,这个是 ifstat 做不到的。不过 ift的流量显示单位是 Mb,这个 b 是 bit,是位,不是字节,而 ifstat 的 KB,这个 B 就是字节了,byte 是 bit 的 8 倍。

进入 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 可以向上或向下滚动屏幕显示的连接记录
  • 123 可以根据右侧显示的三列流量数据进行排序
  • < 根据左边的本机名或 IP 排序
  • > 根据远端目标主机的主机名或 IP 排序
  • o 切换是否固定只显示当前的连接
  • f 可以编辑过滤代码
  • ! 可以使用 shell 命令
  • q 退出监控