Linux服务器上监控网络带宽的18个常用命令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux服务器上监控⽹络带宽的18个常⽤命令
本⽂介绍了⼀些可以⽤来监控⽹络使⽤情况的Linux命令⾏⼯具。
这些⼯具可以监控通过⽹络接⼝传输的数据,并测量⽬前哪些数据所传输的速度。
⼊站流量和出站流量分开来显⽰。
这些⼯具使⽤不同的机制来制作流量报告。
nload等⼀些⼯具可以读取"proc/net/dev"⽂件,以获得流量统计信息;⽽⼀些⼯具使⽤pcap库来捕获所有数据包,然后计算总数据量,从⽽估计流量负载。
下⾯是按功能划分的命令名称。
监控总体带宽使⽤――nload、bmon、slurm、bwm-ng、cbm、speedometer和netload
监控总体带宽使⽤(批量式输出)――vnstat、ifstat、dstat和collectl
每个套接字连接的带宽使⽤――iftop、iptraf-ng、tcptrack、pktstat、netwatch和trafshow
每个进程的带宽使⽤――nethogs
nagiosweb------nagios
1. nload
nload是⼀个命令⾏⼯具,让⽤户可以分开来监控⼊站流量和出站流量。
它还可以绘制图表以显⽰⼊站流量和出站流量,视图⽐例可以调整。
⽤起来很简单,不⽀持许多选项。
所以,如果你只需要快速查看总带宽使⽤情况,⽆需每个进程的详细情况,那么nload⽤起来很⽅便。
结果是bit/s
1. $ nload
安装nload:Fedora和Ubuntu在默认软件库⾥⾯就有nload。
CentOS⽤户则需要从Epel软件库获得nload。
2. iftop
iftop可测量通过每⼀个套接字连接传输的数据;它采⽤的⼯作⽅式有别于nload。
iftop使⽤pcap库来捕获进出⽹络适配器的数据包,然后汇总数据包⼤⼩和数量,搞清楚总的带宽使⽤情况。
虽然iftop报告每个连接所使⽤的带宽,但它⽆法报告参与某个套按字连接的进程名称/编号(ID)。
不过由于基于pcap库,iftop能够过滤流量,并报告由过滤器指定的所选定主机连接的带宽使⽤情况。
1. $ sudo iftop -n
n选项可以防⽌iftop将IP地址解析成主机名,解析本⾝就会带来额外的⽹络流量。
安装iftop:Ubuntu/Debian/Fedora⽤户可以从默认软件库获得它。
CentOS⽤户可以从Epel获得它。
3. iptraf
iptraf是⼀款交互式、⾊彩鲜艳的IP局域⽹监控⼯具。
它可以显⽰每个连接以及主机之间传输的数据量。
下⾯是屏幕截图。
1. $ sudo iptraf
4. nethogs
nethogs是⼀款⼩巧的"net top"⼯具,可以显⽰每个进程所使⽤的带宽,并对列表排序,将耗⽤带宽最多的进程排在最上⾯。
万⼀出现带宽使⽤突然激增的情况,⽤户迅速打开nethogs,就可以找到导致带宽使⽤激增的进程。
nethogs可以报告程序的进程编号(PID)、⽤户和路径。
1. $ sudo nethogs
安装nethogs:Ubuntu、Debian和Fedora⽤户可以从默认软件库获得。
CentOS⽤户则需要Epel。
5. bmon
bmon(带宽监控器)是⼀款类似nload的⼯具,它可以显⽰系统上所有⽹络接⼝的流量负载。
输出结果还含有图表和剖⾯,附有数据包层⾯的详细信息。
安装bmon:Ubuntu、Debian和Fedora⽤户可以从默认软件库来安装。
CentOS⽤户则需要安装repoforge,因为Epel⾥⾯没有bmon。
bmon⽀持许多选项,能够制作HTML格式的报告。
欲知更多信息,请参阅参考⼿册页。
6. slurm
slurm是另⼀款⽹络负载监控器,可以显⽰设备的统计信息,还能显⽰ASCII图形。
它⽀持三种不同类型的图形,使⽤c键、s键和l键即可激活每种图形。
slurm功能简单,⽆法显⽰关于⽹络负载的任何更进⼀步的详细信息。
1. $ slurm -s -i eth0
7. tcptrack
tcptrack类似iftop,使⽤pcap库来捕获数据包,并计算各种统计信息,⽐如每个连接所使⽤的带宽。
它还⽀持标准的pcap过滤器,这些过滤器可⽤来监控特定的连接。
安装tcptrack:Ubuntu、Debian和Fedora在默认软件库⾥⾯就有它。
CentOS⽤户则需要从RepoForge获得它,因为Epel⾥⾯没有它。
8. vnstat
vnstat与另外⼤多数⼯具有点不⼀样。
它实际上运⾏后台服务/守护进程,始终不停地记录所传输数据的⼤⼩。
之外,它可以⽤来制作显⽰⽹络使⽤历史情况的报告。
1. $ service vnstat status
2. * vnStat daemon is running
运⾏没有任何选项的vnstat,只会显⽰⾃守护进程运⾏以来所传输的数据总量。
1. $ vnstat
2. Database updated: Mon Mar 17 15:26:59 2014
3. eth0 since 06/12/13
4. rx: 13
5.14 GiB tx: 35.76 GiB total: 170.90 GiB
5. monthly
6. rx | tx | total | avg. rate
7.
8. ------------------------+-------------+-------------+-------------
9. Feb ‘14 8.19 GiB | 2.08 GiB | 10.27 GiB | 35.60 kbit/s
10. Mar ‘14 4.98 GiB | 1.52 GiB | 6.50 GiB | 37.93 kbit/s
11. ------------------------+-------------+-------------+-------------
12. estimated 9.28 GiB | 2.83 GiB | 12.11 GiB |
13. daily
14. rx | tx | total | avg. rate
15. ------------------------+-------------+-------------+-------------
16. yesterday 236.11 MiB | 98.61 MiB | 334.72 MiB | 31.74 kbit/s
17. today 128.55 MiB | 41.00 MiB | 169.56 MiB | 24.97 kbit/s
18. ------------------------+-------------+-------------+-------------
19. estimated 199 MiB | 63 MiB | 262 MiB |
想实时监控带宽使⽤情况,请使⽤"-l"选项(实时模式)。
然后,它会显⽰⼊站数据和出站数据所使⽤的总带宽量,但⾮常精确地显⽰,没有关于主机连接或进程的任何内部详细信息。
1. $ vnstat -l -i eno1
2. Monitoring eth0... (press CTRL-C to stop)
3. rx: 12 kbit/s 10 p/s tx: 12 kbit/s 11 p/s
vnstat更像是⼀款制作历史报告的⼯具,显⽰每天或过去⼀个⽉使⽤了多少带宽。
它并不是严格意义上的实时监控⽹络的⼯具。
vnstat⽀持许多选项,⽀持哪些选项⽅⾯的详细信息请参阅参考⼿册页。
9. bwm-ng
bwm-ng(下⼀代带宽监控器)是另⼀款⾮常简单的实时⽹络负载监控⼯具,可以报告摘要信息,显⽰进出系统上所有可⽤⽹络接⼝的不同数据的传输速度。
1. $ bwm-ng
2. bwm-ng v0.6 (probing every 0.500s), press ‘h‘ for help
3. input: /proc/net/dev type: rate
4. / iface Rx Tx T
5. ot=================================================================
6. == eth0: 0.53 KB/s 1.31 KB/s 1.84
7. KB lo: 0.00 KB/s 0.00 KB/s 0.00
8. KB-------------------------------------------------------------------------------------------------------------
9. total: 0.53 KB/s 1.31 KB/s 1.84
10. KB/s
如果控制台⾜够⼤,bwm-ng还能使⽤curses2输出模式,为流量绘制条形图。
1. $ bwm-ng -o curses2
10. cbm:Color Bandwidth Meter
这是⼀款⼩巧简单的带宽监控⼯具,可以显⽰通过诸⽹络接⼝的流量⼤⼩。
没有进⼀步的选项,仅仅实时显⽰和更新流量的统计信息。
11. speedometer
这是另⼀款⼩巧⽽简单的⼯具,仅仅绘制外观漂亮的图形,显⽰通过某个接⼝传输的⼊站流量和出站流量。
1. $ speedometer -r eth0 -t eth0
12. pktstat
pktstat可以实时显⽰所有活动连接,并显⽰哪些数据通过这些活动连接传输的速度。
它还可以显⽰连接类型,⽐如TCP连接或UDP连接;如果涉及HTTP连接,还会显⽰关于HTTP请求的详细信息。
1. $ sudo pktstat -i eth0 -nt
13. netwatch
netwatch是netdiag⼯具库的⼀部分,它也可以显⽰本地主机与其他远程主机之间的连接,并显⽰哪些数据在每个连接上所传输的速度。
1. $ sudo netwatch -e eth0 -nt
14. trafshow
与netwatch和pktstat⼀样,trafshow也可以报告当前活动连接、它们使⽤的协议以及每条连接上的数据传输速度。
它能使⽤pcap类型过滤器,对连接进⾏过滤。
只监控TCP连接
1. $ sudo trafshow -i eth0 tcp
15. netload
netload命令只显⽰关于当前流量负载的⼀份简短报告,并显⽰⾃程序启动以来所传输的总字节量。
没有更多的功能特性。
它是netdiag的⼀部分。
1. $ netload eth0
16. ifstat
ifstat能够以批处理式模式显⽰⽹络带宽。
输出采⽤的⼀种格式便于⽤户使⽤其他程序或实⽤⼯具来记⼊⽇志和分析。
1. $ ifstat -t -i eth0 0.5
2. Time eth0
3. HH:MM:SS KB/s in KB/s out
4. 09:59:21 2.62 2.80
5. 09:59:22 2.10 1.78
6. 09:59:22 2.67 1.84
7. 09:59:23 2.06 1.98
8. 09:59:23 1.73 1.79
安装ifstat:Ubuntu、Debian和Fedora⽤户在默认软件库⾥⾯就有它。
CentOS⽤户则需要从Repoforge获得它,因为Epel⾥⾯没有它。
17. dstat
dstat是⼀款⽤途⼴泛的⼯具(⽤python语⾔编写),它可以监控系统的不同统计信息,并使⽤批处理模式来报告,或者将相关数据记⼊到CSV或类似的⽂件。
这个例⼦显⽰了如何使⽤dstat来报告⽹络带宽。
1. $ dstat -nt
2. -net/total- ----system----
3. recv send| time
4. 0 0 |23-03 10:27:13
5. 1738B 1810B|23-03 10:27:14
6. 2937B 2610B|23-03 10:27:15
7. 2319B 2232B|23-03 10:27:16
8. 2738B 2508B|23-03 10:27:17
18. collectl
collectl以⼀种类似dstat的格式报告系统的统计信息;与dstat⼀样,它也收集关于系统不同资源(如处理器、内存和⽹络等)的统计信息。
这⾥给出的⼀个简单例⼦显⽰了如何使⽤collectl来报告⽹络使⽤/带宽。
1. $ collectl -sn -oT -i0.5
2. waiting for 0.5 second sample...
3. # <----------Network---------->
4. #Time KBIn PktIn KBOut PktOut
5. 10:32:01 40 58 43 66
6. 10:32:01 27 58 3 32
7. 10:32:02 3 28 9 44
8. 10:32:02 5 42 96 96
9. 10:32:03 5 48 3 28
结束语
上述⼏个使⽤⽅便的命令可以迅速检查Linux服务器上的⽹络带宽使⽤情况。
不过,这些命令需要⽤户通过SSH登录到远程服务器。
另外,基于Web的监控⼯具也可以⽤来实现同样的任务。
ntop和darkstat是⾯向Linux系统的其中两个基本的基于Web的⽹络监控⼯具。
除此之外还有企业级监控⼯具,⽐如nagios,它们提供了⼀批功能特性,不仅仅可以监控服务器,还能监控整个基础设施。