在 Linux 上监控网络,命令行工具非常实用。常见的工具包括 nethogs、ntopng、nload、iftop、iptraf、bmon、slurm、tcptrack、cbm、netwatch、collectl、trafshow、etherape、vnstat、tcpdump 等。它们各有特点,但归根结底都是监控网络流量,只是方式不同:nethogs 按进程展示带宽,iftop 按套接字连接展示带宽,nload 展示整体带宽。
下面逐个介绍。
nethogs
按进程分组带宽(而非按协议或子网),用于找出哪个 PID 消耗了网络流量。支持 IPv4/IPv6,可显示每个进程的 TCP 上下行速率:
nethogs eth0 # 监控指定设备
nethogs -p wlan0 # 混杂模式嗅探
nload
控制台实时监控网络流量和带宽,用两个图表可视化,支持左右箭头切换设备。
slurm
网络负载监控工具,以 ASCII 图显示结果,支持多种按键交互:c 切换经典模式,s 切换分图模式,r 重绘屏幕,L 启用 TX/RX 灯(TX 发送、RX 接收),m 在经典/大图模式间切换,q 退出。
sudo apt-get install slurm
iftop
显示连接到网卡上的各主机带宽使用情况,在一个指定接口(或第一个找到的对外接口)上监听流量:
sudo apt-get install iftop
collectl
收集描述当前系统状态的数据,支持两种模式:
- 记录模式:从运行中的系统读取数据,显示到终端或写入文件/套接字;
- 回放模式:从记录模式生成的数据文件读取。
sudo apt-get install collectl
netstat
监控传入/传出网络数据包统计、TCP 连接(上传/下行)、路由表及网络接口统计。包含在 net-tools 包中:
sudo apt-get install net-tools
netstat
netload
只展示当前网络荷载和自程序运行后传输的总字节数,是 netdiag 的一部分。运行时需指定网络接口名:
sudo apt-get install netdiag
netload wlan2
nagios
功能强大的开源监控系统,可在单一窗口监控远程 Linux/Windows 主机、交换机、路由器、打印机等,在问题影响主要事务前发现并解决。提供 Web 界面(http://localhost/nagios/)。
etherApe
针对 Unix 的图形化网络监控工具,支持链路层/IP/TCP 模式及以太网、FDDI、令牌环、ISDN、PPP、SLIP、WLAN 等接口。主机和连接随流量和协议改变尺寸和颜色。
sudo apt-get install etherape
sudo etherape
tcpflow
命令行工具,捕捉 TCP 连接(流)的部分传输数据,重构数据流并按流存储到不同文件,可识别 TCP 序列号、正确处理重发和乱序:
sudo apt-get install tcpflow
sudo tcpflow -i eth0 port 8000 # 在空目录中运行
IPTraf
基于控制台的网络统计应用,生成 TCP 连接包/字节计数、接口信息、TCP/UDP 流量故障等图形:
sudo apt-get install iptraf
sudo iptraf wlan2
iptraf -g # 常规接口统计
iptraf -d eth0 # 接口详细统计
iptraf -z eth0 # TCP/UDP 监控
speedometer
小巧的工具,绘制给定端口上下行流量的图表:
sudo apt-get install speedometer
speedometer -r wlan2 -t wlan2
netwatch
netdiag 工具集的一部分,显示当前主机与其他主机的连接情况及每连接的传输速率:
sudo apt-get install netdiag
sudo netwatch -e wlan2 -nt
trafshow
报告当前活动连接的协议和传输速率,支持 pcap 过滤器筛选特定连接:
sudo apt-get install trafshow
sudo trafshow -i wlan2
sudo trafshow -i wlan2 tcp # 只监控 tcp
vnstat
与其他工具不同,它运行后台守护进程持续记录传输数据,可生成网络使用历史报告:
sudo apt-get install vnstat
vnstat # 显示传输总量
vnstat -l # 实时监控带宽
tcptrack
展示 TCP 连接状态,输出排序且不断更新的列表(类似 top),包含来源/目标地址、带宽等信息:
sudo apt-get install tcptrack
sudo tcptrack -i wlan2
tcptrack -i wlan2 port 80 # 监控特定端口
CBM
展示当前所有网络设备的流量使用情况:
sudo apt-get install cbm
cbm
bmon
调试和实时监控带宽的工具,检索各种输入模块统计,提供 curses 界面、HTML 输出、ASCII 输出等:
sudo apt-get install bmon
bmon
tcpdump
网络监控和数据获取工具,打印某网络接口上与布尔表达式匹配的数据包描述,用于调试网络/服务器问题:
sudo apt-get install tcpdump
sudo tcpdump -i wlan2
sudo tcpdump -i wlan2 'port 80' # 只监控 80 端口
ntopng
ntop 的下一代版本,展示网络使用情况的网络探头。基于 libpcap 可移植重写。需先安装依赖再编译:
sudo apt-get install libpcap-dev libglib2.0-dev libgeoip-dev redis-server wget libxml2-dev build-essential checkinstall
sudo wget http://sourceforge.net/projects/ntop/files/ntopng/ntopng-1.1_6932.tgz/download
sudo tar zxfv ntopng-1.1_6932.tgz
cd ntopng-1.1_6932
sudo ./configure
sudo make
sudo make install
注:文中
wlan2、eth0等均为示例接口名,请替换为你机器上实际的网络接口名(可用ip link show查看)。