更新时间:2021-02-22 18:18:06
Linux 中有各种查看网卡流量的工具,比如 sar、iftop、nethogs 等。它们可以从不同的角度来分析系统中流量信息,本文对这三种工具进行简要介绍。
sar 可以从网络接口层面来分析数据包的收发情况、错误信息等等。
使用 sar 来监控网络流量的常用命令为:
sar -n DEV [interval] [count] //参数 interval 是统计间隔,count 是统计次数。
示例
使用以下命令,可以使用 sar 每一秒统计一次网络接口的活动状况,连续报告 4 次。
sar -n DEV 1 4
回显结果主要字段说明
iftop 命令常见用法如下。
iftop [-i interface]
参数-i
后跟的 interface 表示网络接口名,比如 eth0、eth1 等等。如果不通过-i
参数指定接口名,则默认检测第一块网卡的使用情况,对于云服务器通常为内网网卡 eth0。
示例
使用iftop -i eth0
指令可以查看云服务器公网网卡的带宽使用情况。
示例输出如下图所示。
回显结果说明
注意:iftop 的流量显示单位是Mb,这里的 b 是比特(bit),不是字节(byte)。而 ifstat 显示的单位是 KB 中的 B 是字节。1 byte = 8 bit。
另外,进入 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
退出。
Nethogs 是一款开源的网络流量监控工具,可用于显示每个进程的带宽占用情况。这样可以更直观定位异常流量的来源。Nethogs 支持 IPv4 和 IPv6协议,支持本地网卡及 PPP 连接。
安装完毕,直接输入 nethogs 启动工具即可。不带任何参数时,nethogs 默认监控 eth0。用户可以通过 ifconfig 等指令核实具体哪个网络接口(比如 eth1、eth0)对应公网网卡。
示例输出结果如下所示。
回显结果说明
PID
列表示相应流量关联程序的进程号。
USER
列表示相应进程的所属用户。
PROGRAM
列表示程序的具体执行路径。
DEV
列当前监控的网络接口名称。
Sent
列表示相应进程已经发送的数据流量。
Received
列表示程序已经接收的数据流量。
在 nethogs 监控界面,按下 s
可以按 Sent 列进行排序,按下r
可以按 Received 列进行排序,按下m
可以切换不同的统计单位显示 (kb/s, kb, b,mb)。
nethogs 默认的监控间隔是 1 秒,用户可以通过-d
参数来设定监控间隔。例如设定监控间隔为3秒,可以输入:nethogs -d 3
。