监控进程的网络IO使用情况
1、vnstat
由于 vnstat 依赖于内核提供的信息,因此执行以下命令来验证内核是否提供了 vnStat 所期望的所有信息:
# vnstat --testkernel
This test will take about 60 seconds.
Everything is ok.
不带任何参数的 vnstat 将为您提供包含以下信息的快速摘要:
- 上次更新位于 /var/lib/vnstat/ 下的 vnstat 数据库时
- 从它开始收集特定接口的统计信息开始
- 过去两个月和过去两天的网络统计数据(传输的字节数、接收的字节数)。
# vnstat
Database updated: Sat Oct 15 11:54:00 2011
eth0 since 10/01/11
rx: 12.89 MiB tx: 6.94 MiB total: 19.82 MiB
monthly
rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
Sep '11 12.90 MiB | 6.90 MiB | 19.81 MiB | 0.14 kbit/s
Oct '11 12.89 MiB | 6.94 MiB | 19.82 MiB | 0.15 kbit/s
------------------------+-------------+-------------+---------------
estimated 29 MiB | 14 MiB | 43 MiB |
daily
rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
yesterday 4.30 MiB | 2.42 MiB | 6.72 MiB | 0.64 kbit/s
today 2.03 MiB | 1.07 MiB | 3.10 MiB | 0.59 kbit/s
------------------------+-------------+-------------+---------------
estimated 4 MiB | 2 MiB | 6 MiB |
注意:如果刚刚安装了 vnStat,它将给出以下消息“eth0:还没有足够的数据可用。”。等待一段时间,然后再次尝试该命令。
显示实时网络统计:
使用vnstat -l显示实时网络统计信息,按 Ctrl-C 停止它后,vnstat 将显示实时监
$ vnstat -l
Monitoring eth0... (press CTRL-C to stop)
rx: 2 kbit/s 5 p/s tx: 2 kbit/s 4 p/s
2、ftop
界面说明
=>代表发送数据,<= 代表接收数据
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量
常用参数
-i 指定需要检测的网卡, 如果有多个网络接口,则需要注意网络接口的选择,如:# iftop -i eth1
-B 将输出以byte为单位显示网卡流量,默认是bit
-n 将输出的主机信息都通过IP显示,不进行DNS解析
-N 只显示连接端口号,不显示端口对应的服务名称
-F 显示特定网段的网卡进出流量 如iftop -F 192.168.85.0/24
-h 帮助,显示参数信息
-p 以混杂模式运行iftop,此时iftop可以用作网络嗅探器 ;
-P 显示主机以及端口信息
-m 设置输出界面中最上面的流量刻度最大值,流量刻度分5个大段显示 如:# iftop -m 100M
-f 使用筛选码选择数据包来计数 如iftop -f filter code
-b 不显示流量图形条
-c 指定可选的配置文件 如iftop -c config file
-t 使用不带ncurses的文本界面,
以下两个是只和-t一起用的:
-s num num秒后打印一次文本输出后退出,-t -s 60组合使用,表示取60秒网络流量输出到终端
-L num 打印的行数
-f 参数支持tcpdump的语法,可以使用各种过滤条件。
进入界面后的操作
一般参数
P 切换暂停/继续显示
h 在交互界面/状态输出界面之间切换
b 切换是否显示平均流量图形条
B 切换显示2s 10s和40s内的平均流量
T 切换是否显示每个连接的总流量
j/k 向上或向下滚动屏幕显示当前的连接信息
f 编辑筛选码
l 打开iftop输出过滤功能 ,如输入要显示的IP按回车键后屏幕就只显示与这个IP相关的流量信息
L 切换显示流量刻度范围,刻度不同,流量图形条也会不同
q 退出iftop
主机参数
n 使iftop输出结果以IP或主机名的方式显示
s 切换是否显示源主机信息
d 切换是否显示远端目标主机信息
t 切换输出模式,一行或多行
端口显示参数
N 切换显示端口号/端口号对应服务名称
S 切换是否显示本地源主机的端口信息
D 切换是否显示远端目标主机的端口信息
p 切换是否显示端口信息
输出排序参数
1/2/3 通过第一列/第二列/第三列排序
< 根据左边的本地主机名或IP地址进行排序
> 根据远端目标主机的主机名或IP地址进行排序
o 切换是否固定显示当前的连接
使用示例
1、显示网卡eth0的信息,主机通过ip显示
iftop -i eth0 -n
2、显示端口号(添加-P参数,进入界面可通过p参数关闭)
iftop -i eth0 -n -P
3、显示将输出以byte为单位显示网卡流量,默认是bit
iftop -i eth0 -n -B
4、显示流量进度条
iftop -i eth0 -n(进入界面后按下L)
5、显示每个连接的总流量
iftop -i eth0 -n(进入界面后按下T)
6、显示指定ip 172.17.1.158的流量
iftop -i eth0 -n(进入界面后按下l,输入172.17.1.158回车)
实战-找出最费流量的ip和端口号:
3、nethogs
语法
nethogs(选项)(参数)
选项
usage: nethogs [-V] [-h] [-b] [-d seconds] [-v mode] [-c count] [-t] [-p] [-s] [device [device [device ...]]]
-V : 打印版本。
-h : 打印此帮助。
-b : bughunt模式 - 暗示tracemode。
-d : 延迟更新刷新率(以秒为单位)。 默认值为1。
-v : 视图模式(0 = KB / s,1 =总KB,2 =总B,3 =总MB)。 默认值为0。
-c : 更新次数。 默认为0(无限制)。
-t : tracemode.
-p : 煽动混乱模式(不推荐)。
-s : 按发送列排序输出。
-a : 监控所有设备,甚至环回/停止。
device : 要监控的设备。 默认是所有接口启动和运行,不包括环回
当nethogs运行时,按:
q:退出
s:按SENT流量排序
r:按RECEIVE流量排序
m:在总(KB,B,MB)和KB / s模式之间切换
其他参数和用法
-d : 刷新间隔
-h : 帮助
-p : promiscious 模式
-t : trace模式
-V : 版本
NetHogs 命令行参数
用-d来添加刷新频率参数,device name 用来检测给定的某个或者某些设备的带宽(默认是eth0)。
例如:设置5秒钟的刷新频率,键入如下命令即可:
nethogs -d 5
如果只用来监视设备(eth0)的网络带宽可以使用如下命令:
nethogs eth0
如果要同时监视eth0和eth1接口,使用以下命令即可:
nethogs eth0 eth1
效果如图所示: