iftop
Install on Ubuntu: apt-get install iftop
.
最简用法(监控所有网络流量):sudo iftop -n
.
监控与指定主机的交互:
iftop -n -i eth0 -f "host 10.0.2.47" // 监测 47 与自己的双向传输数据
iftop -n -i eth0 -f "dst host 10.0.2.47" // 监测从自己流向 47 的传输数据
iftop -n -i eth0 -f "src host 10.0.2.47" // 监测从 47 流向自己的数据
目前看来iftop显示的信息最全,但需要好好看手册,每个值都是什么意思;使用它需要root权限;
参考:https://sickbits.net/iftop-finding-traffic-hogs/
sar
Install with sudo apt install sysstat
.
Modify ENABLED
in file /etc/default/sysstat to true
.
Restart sysstat service: sudo service sysstat restart
.
Now you can use this tool: sar -r 2 20
.
Set the display language to English: LC_ALL="en_US.UTF-8" sar -r 2 2
.
Ref: How to configure sysstat/sar on Ubuntu/Debian
2014-7-14更新:
-
nethogs 按进程查看流量占用:
sudo nethogs wlan0
; -
iptraf-ng 按连接/端口查看流量:
sudo iptraf-ng
; -
ifstat 按设备(网卡接口)查看流量:
ifstat
; -
nload 按设备(网卡接口)查看流量:
nload
,用左/右键切换网卡接口; -
nmon 包含CPU, Memory, Disk, Network等各项指标监控 (aptitude install);
-
glances: 包含CPU, Memory, Disk, Network等各项指标监控 (pip install glances);
-
slurm 按设备(网卡接口)查看流量:
slurm -i wlan0
; -
collectl 监控主机的CPU, Disk和Network总体使用情况:
collectl
; -
ethtool: 诊断工具
-
tcpdump: 抓包工具
2014-8-25更新:
iptraf-ng用于监测网络流量很好用,在ArchLinux和Mint中可以直接安装。 其中的"Ip traffic monitor"可以监测网卡的实时接收/发送 (RX/TX) 数据, 可以显示对端IP地址和端口,本方接收IP地址和端口,但不能显示实时传输速率, "General interface statistics" 可以显示所有网卡实时发送/接收数据的速率, 但不能显示对端IP和端口,二者互为补充。
今天测试在同一网段中的两台机器之间用scp传送大文件,速率稳定在99MB/s, 比较靠谱的一个结果, 间接说明scp传大文件可以用来检测网络的最大传输速率。
Ref: 20 Command Line Tools to Monitor Linux Performance
参考:Bandwidth Monitoring Tools For Linux
实时流量监控:pv
OS: Ubuntu Server 12.04.
netcat & pv
apt-get install pv
监控端口5555上的实时网络流量:
nc -l 5555 | pv > /dev/null
向服务器113上发送数据:
nc 10.31.1.113 5555
ifstat
Homepage: http://gael.roualland.free.fr/ifstat/
使用
ifstat -i eth0 1 5 // 监测网口eth0的流量,每一秒测试一次,共测试5次
该工具不需要root权限
安装
Ubuntu可以用apt-get直接装,官网上的ifstat-1.1.tar.gz包是源码包,在RedHat上安装需要编译,过程很简单,根据INSTALL文档的说明:
./configure
make
make install
atsar
atsar(Unix的sar指令的Linux移植版,可以用apt-get安装)也有几个选项是用来监控网络情况的,例如每隔2秒显示一次系统当前TCP流量:
atsar -t 2 5
trafshow
Ubuntu: apt-get install trafshow
监控与47的交互:trafshow -n -i eth0 host 10.0.2.47
;
网络带宽测试:iperf
又叫bandwidth或者throughput测试,用来测试Server和Client间的最大传输速率。
iperf是命令行工具,还有一个基于Java的图形界面jperf可运行在Windows和linux上;
安装:Ubuntu用apt-get install iperf安装,Redhat需要在"http://pkgs.repoforge.org/iperf/"上根据操作系统的版本和架构选择一个rpm下载(47服务器系统为Redhat 5.4, x86_64,下载的是iperf-2.0.4-1.el5.rf.x86_64.rpm),然后用rpm -ivh
用法
-
启动服务端:iperf -s;
-
启动客户端:iperf -c 10.0.2.47 -i 1 -f M(-c后面跟服务器IP地址,-i表示发送的时间间隔,-f M表示返回结果以MByte为单位);
或者启动图像客户端jperf,点击"Run IPerf"按钮就可以测网络带宽了。给出的结果是笔记本电脑与113服务器之间单向单流(1 stream)带宽为1.8MB/s左右;
iperf作为客户端还有两个比较有用的选项分别是-d和-d -r,前者表示测试同时双向传输的速率,后者表示先进行client to server的单向传输测试,完毕后互换角色,反过来进行server to client的单向传输测试,过程如下:
server: iperf -s
client: iperf -c 10.0.2.47 -i 1 -f M -d(或者iperf -c 10.0.2.47 -i 1 -f M -d -r)
参考:
http://www.smallnetbuilder.com/lanwan/lanwan-howto/30408-measuring-network-performance-jperf
http://openmaniak.com/iperf.php