linux管理(二)---网络使用情况的监控


我们经常在监控服务器或者排查程序性能瓶颈时需要知道  网络带宽的使用情况,看看带宽是不是瓶颈。


linux系统中监控网络的工具和命令很多。


但其实主要分2种,一种是实时监控带宽情况(速度如何),一种是监控流量(传输总量)。


本篇文章重点讲我常用的2个工具nload和iptraf。

然后记录一下其他的网络监控工具。大家可以按喜欢的选用。




nload--带宽监控

Fedora和Ubuntu在默认软件库里面就有nload。CentOS用户或者其他系统需要安装。


安装

自动安装

CentOS/RHEL/Red Hat/Fedora Linux使用命令

yum install nload


Debian 或者 Ubuntu Linux使用命令

sudo apt-get install nload


FreeBSD使用命令

cd /usr/ports/net/nload/ && make install clean
或者
pkg install net/nload



OpenBSD使用命令

sudo pkg_add -i nload



手动安装

如果以上快捷安装无效或者报错那只能手动下载包安装,流程如下:

wget http://www.roland-riegel.de/nload/nload-0.7.2.tar.gz
tar zxvf nload-0.7.2.tar.gz
cd nload-0.7.2
./configure;make;make install




使用

如何使用 nload 显示当前网络使用量呢?
基本语法是:
nload
nload device
nload [options] device1 device2
键入下列命令:
$ nload
$ nload eth0
$ nload em0 em2

还可以指定是以K或M来显示流量,如nload -u M显示的流量是以MB为单位的


nload默认分为上下两块,每部分都有当前流量(Curr),平均流量(Min),最大流量(Max),总流量(Ttl),看起来还是比较直观的。




iptraf--流量监控

iptraf是一款交互式、色彩鲜艳的IP局域网监控工具。它可以显示每个连接以及主机之间传输的数据量。一般系统也不会自带,需要安装。


安装

自动安装

# Centos(基本软件库) 
$ yum install iptraf 
# fedora或centos(带epel) 
$ yum install iptraf-ng -y 
# ubuntu或debian 
$ sudo apt-get install iptraf iptraf -ng 


手动安装

wget ftp://iptraf.seul.org/pub/iptraf/iptraf-3.0.0.tar.gz
tar zxvf iptraf-3.0.0.tar.gz
cd iptraf-3.0.0
./Setup




使用

sudo iptraf


回车




第一项:IP流量监控

第二项:常规查看网卡流量状态。只查看各网卡的总流量
第三项:详细查看网卡流量状态。比如按TCP,UDP,ARP等协议查看

选all interfaces,查看所有网卡接口



界面分上下两部分,上部分可详细显示哪个与之相连的IP,发了多少包,即时流量是多少,下部分,可以显示udp等信息。


按Q退出监控界面,然后选择Exit退出iptraf。





其他工具简介

iftop

iftop可测量通过每一个套接字连接传输的数据;它采用的工作方式有别于nload。iftop使用pcap库来捕获进出网络适配器的数据包,然后汇总数据包大小和数量,搞清楚总的带宽使用情况。
虽然iftop报告每个连接所使用的带宽,但它无法报告参与某个套按字连接的进程名称/编号(ID)。不过由于基于pcap库,iftop能够过滤流量,并报告由过滤器指定的所选定主机连接的带宽使用情况。


安装

自动安装

安装iftop:Ubuntu/Debian/Fedora用户可以从默认软件库获得它。CentOS用户可以从Epel获得它。
# fedora或centos 
yum install iftop -y 
# ubuntu或 debian 
$ sudo apt-get install iftop 


手动安装

wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
tar zxvf iftop-0.17.tar.gz
cd iftop-0.17
./configure –prefix=/usr/local/iftop
make
make install


使用

$ sudo iftop -n 
n选项可以防止iftop将IP地址解析成主机名,解析本身就会带来额外的网络流量。


监控eth1
iftop -i eth1

直接显示IP, 不进行DNS反解析

iftop -n

直接显示连接埠编号, 不显示服务名称:
iftop -N

显示某个网段进出封包流量
iftop -F 192.168.1.0/24 or 192.168.1.0/255.255.255.0


界面说明

第一行:带宽显示
中间部分:外部连接列表,即记录了哪些ip正在和本机的网络连接
中间部分右边:实时参数分别是该访问ip连接到本机2秒,10秒和40秒的平均流量
=>代表发送数据,<= 代表接收数据
底部三行:表示发送,接收和全部的流量
底部三行第二列:为你运行iftop到目前流量
底部三行第三列:为高峰值
底部三行第四列:为平均值

界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。

中间的<= =>这两个左右箭头,表示的是流量的方向。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量

通过iftop的界面很容易找到哪个ip在霸占网络流量,这个是ifstat做不到的。不过iftop的流量显示单位是Mb,这个b是bit,是位,不是字节,而ifstat的KB,这个B就是字节了,byte是bit的8倍。初学者容易被误导。




界面操作命令

进入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退出监控。



相关参数

常用的参数
-i设定监测的网卡,如:# iftop -i eth1
-B 以bytes为单位显示流量(默认是bits),如:# iftop -B
-n使host信息默认直接都显示IP,如:# iftop -n
-N使端口信息默认直接都显示端口号,如: # iftop -N
-F显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0
-h(display this message),帮助,显示参数信息
-p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
-b使流量图形条默认就显示;
-f这个暂时还不太会用,过滤计算包用的;
-P使host信息及端口信息默认就都显示;
-m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M




nethogs

nethogs是一款小巧的"net top"工具,可以显示每个进程所使用的带宽,并对列表排序,将耗用带宽最多的进程排在最上面。万一出现带宽使用突然激增的情况,用户迅速打开nethogs,就可以找到导致带宽使用激增的进程。nethogs可以报告程序的进程编号(PID)、用户和路径。

安装

安装nethogs:Ubuntu、Debian和Fedora用户可以从默认软件库获得。CentOS用户则需要Epel。
# ubuntu或debian(默认软件库) 
$ sudo apt-get install nethogs 
# fedora或centos(来自epel) 
$ sudo yum install nethogs -y 


使用

$ sudo nethogs 





bmon

bmon(带宽监控器)是一款类似nload的工具,它可以显示系统上所有网络接口的流量负载。输出结果还含有图表和剖面,附有数据包层面的详细信息。

安装

安装bmon:Ubuntu、Debian和Fedora用户可以从默认软件库来安装。CentOS用户则需要安装repoforge,因为Epel里面没有bmon。
# ubuntu或debian 
$ sudo apt-get install bmon 
# fedora或centos(来自repoforge) 
$ sudo yum install bmon 
bmon支持许多选项,能够制作HTML格式的报告。



使用 

sudo bmon






slurm

slurm是另一款网络负载监控器,可以显示设备的统计信息,还能显示ASCII图形。它支持三种不同类型的图形,使用c键、s键和l键即可激活每种图形。slurm功能简单,无法显示关于网络负载的任何更进一步的详细信息。


安装

安装slurm
# debian或ubuntu 
$ sudo apt-get install slurm 
# fedora或centos 
$ sudo yum install slurm -y 


使用

$ slurm -s -i eth0 






tcptrack

tcptrack类似iftop,使用pcap库来捕获数据包,并计算各种统计信息,比如每个连接所使用的带宽。它还支持标准的pcap过滤器,这些过滤器可用来监控特定的连接。


安装

安装tcptrack:Ubuntu、Debian和Fedora在默认软件库里面就有它。CentOS用户则需要从RepoForge获得它,因为Epel里面没有它。
# ubuntu, debian 
$ sudo apt-get install tcptrack 
# fedora, centos(来自repoforge软件库) 
$ sudo yum install tcptrack 




使用

sudo  tcptrack





vnstat

vnstat与另外大多数工具有点不一样。它实际上运行后台服务/守护进程,始终不停地记录所传输数据的大小。之外,它可以用来制作显示网络使用历史情况的报告。

安装

安装vnstat
# ubuntu或debian 
$ sudo apt-get install vnstat 
# fedora或 centos(来自epel) 
$ sudo yum install vnstat 


使用

$ service vnstat status 
* vnStat daemon is running 
运行没有任何选项的vnstat,只会显示自守护进程运行以来所传输的数据总量。
$ vnstat 
Database updated: Mon Mar 17 15:26:59 2014 
eth0 since 06/12/13 
rx:  135.14 GiB      tx:  35.76 GiB      total:  170.90 GiB 
monthly 
rx      |     tx      |    total    |   avg. rate 
 
------------------------+-------------+-------------+------------- 
Feb '14      8.19 GiB  |    2.08 GiB  |   10.27 GiB |   35.60 kbit/s 
Mar '14      4.98 GiB  |    1.52 GiB  |    6.50 GiB |   37.93 kbit/s 
------------------------+-------------+-------------+------------- 
estimated       9.28 GiB |    2.83 GiB  |   12.11 GiB | 
daily 
rx      |     tx      |    total    |   avg. rate 
------------------------+-------------+-------------+------------- 
yesterday     236.11 MiB |   98.61 MiB |  334.72 MiB |   31.74 kbit/s 
today    128.55 MiB |   41.00 MiB |  169.56 MiB |   24.97 kbit/s 
------------------------+-------------+-------------+------------- 
estimated       199 MiB |      63 MiB |     262 MiB | 
想实时监控带宽使用情况,请使用"-l"选项(实时模式)。然后,它会显示入站数据和出站数据所使用的总带宽量,但非常精确地显示,没有关于主机连接或进程的任何内部详细信息。
$ vnstat -l -i eth0 
Monitoring eth0...    (press CTRL-C to stop) 
rx:       12 kbit/s    10 p/s          tx:       12 kbit/s    11 p/s 
vnstat更像是一款制作历史报告的工具,显示每天或过去一个月使用了多少带宽。它并不是严格意义上的实时监控网络的工具。
vnstat支持许多选项,支持哪些选项方面的详细信息请参阅参考手册页。



bwm-ng

bwm-ng(下一代带宽监控器)是另一款非常简单的实时网络负载监控工具,可以报告摘要信息,显示进出系统上所有可用网络接口的不同数据的传输速度。


安装

安装bwm-ng:在CentOS上,可以从Epel来安装bwm-ng。
# ubuntu或debian 
$ sudo apt-get install bwm-ng 
# fedora或centos(来自epel) 
$ sudo apt-get install bwm-ng 


使用

$ bwm-ng 
bwm-ng v0.6 (probing every 0.500s), press 'h' for help 
input: /proc/net/dev type: rate 
/         iface                   Rx                   Tx                T 
ot================================================================= 
==           eth0:           0.53 KB/s            1.31 KB/s            1.84 
KB             lo:           0.00 KB/s            0.00 KB/s            0.00 
KB------------------------------------------------------------------------------------------------------------- 
total:           0.53 KB/s            1.31 KB/s            1.84 
KB/s 
如果控制台足够大,bwm-ng还能使用curses2输出模式,为流量绘制条形图。
$ bwm-ng -o curses2 




cbm

这是一款小巧简单的带宽监控工具,可以显示通过诸网络接口的流量大小。没有进一步的选项,仅仅实时显示和更新流量的统计信息。

安装

$ sudo apt-get install cbm 


使用

sudo cbm





speedometer

这是另一款小巧而简单的工具,仅仅绘制外观漂亮的图形,显示通过某个接口传输的入站流量和出站流量。

安装

安装speedometer
# ubuntu或debian用户 
$ sudo apt-get install speedometer 


使用

$ speedometer -r eth0 -t eth0 





pktstat

pktstat可以实时显示所有活动连接,并显示哪些数据通过这些活动连接传输的速度。它还可以显示连接类型,比如TCP连接或UDP连接;如果涉及HTTP连接,还会显示关于HTTP请求的详细信息。

安装

$ sudo apt-get install pktstat 

使用

$ sudo pktstat -i eth0 -nt 





netwatch

netwatch是netdiag工具库的一部分,它也可以显示本地主机与其他远程主机之间的连接,并显示哪些数据在每个连接上所传输的速度。

安装

$ sudo apt-get install netdiag 


使用

$ sudo netwatch -e eth0 -nt 




trafshow

与netwatch和pktstat一样,trafshow也可以报告当前活动连接、它们使用的协议以及每条连接上的数据传输速度。它能使用pcap类型过滤器,对连接进行过滤。
只监控TCP连接


安装

$ sudo apt-get install netdiag 


使用

$ sudo trafshow -i eth0 tcp 





netload

netload命令只显示关于当前流量负载的一份简短报告,并显示自程序启动以来所传输的总字节量。没有更多的功能特性。它是netdiag的一部分。


安装

$ sudo apt-get install netdiag 

使用

$ netload eth0 






ifstat

ifstat能够以批处理式模式显示网络带宽。输出采用的一种格式便于用户使用其他程序或实用工具来记入日志和分析。

安装

安装ifstat:Ubuntu、Debian和Fedora用户在默认软件库里面就有它。CentOS用户则需要从Repoforge获得它,因为Epel里面没有它。
# ubuntu, debian 
$ sudo apt-get install ifstat 
# fedora, centos(Repoforge) 
$ sudo yum install ifstat 



使用

$ ifstat -t -i eth0 0.5 
Time           eth0 
HH:MM:SS   KB/s in  KB/s out 
09:59:21       2.62      2.80 
09:59:22       2.10      1.78 
09:59:22       2.67      1.84 
09:59:23       2.06      1.98 
09:59:23       1.73      1.79 


相关参数

-l    监测环路网络接口(lo)。缺省情况下,ifstat监测活动的所有非环路网络接口。经使用发现,加上-l参数能监测所有的网络接口的信息,而不是只监测 lo的接口信息,也就是说,加上-l参数比不加-l参数会多一个lo接口的状态信息。
-a  监测能检测到的所有网络接口的状态信息。使用发现,比加上-l参数还多一个plip0的接口信息,搜索一下发现这是并口(网络设备中有一 个叫PLIP (Parallel Line Internet Protocol). 它提供了并口...)
-z  隐藏流量是无的接口,例如那些接口虽然启动了但是未用的
-i  指定要监测的接口,后面跟网络接口名
-s  等于加-d snmp:[comm@][#]host[/nn]] 参数,通过SNMP查询一个远程主机
-h 显示简短的帮助信息
-n 关闭显示周期性出现的头部信息(也就是说,不加-n参数运行ifstat时最顶部会出现网络接口的名称,当一屏显示不下时,会再一次出现接口的名称,提示 我们显示的流量信息具体是哪个网络接口的。加上-n参数把周期性的显示接口名称关闭,只显示一次)
-t 在每一行的开头加一个时间 戳(能告诉我们具体的时间)
-T 报告所有监测接口的全部带宽(最后一列有个total,显示所有的接口的in流量和所有接口的out流量,简单的把所有接口的in流量相加,out流量相 加)
-w  用指定的列宽,而不是为了适应接口名称的长度而去自动放大列宽
-W 如果内容比终端窗口的宽度还要宽就自动换行
-S 在同一行保持状态更新(不滚动不换行)注:如果不喜欢屏幕滚动则此项非常方便,与bmon的显示方式类似
-b 用kbits/s显示带宽而不是kbytes/s(bit和byte有何区别应该都知道吧)
-q 安静模式,警告信息不出现
-v 显示版本信息
-d 指定一个驱动来收集状态信息




dstat

dstat是一款用途广泛的工具(用python语言编写),它可以监控系统的不同统计信息,并使用批处理模式来报告,或者将相关数据记入到CSV或类似的文件。这个例子显示了如何使用dstat来报告网络带宽。

安装dstat

yum -y install dstat


使用

$ dstat -nt 
-net/total- ----system---- 
recv  send|     time 
0     0 |23-03 10:27:13 
1738B 1810B|23-03 10:27:14 
2937B 2610B|23-03 10:27:15 
2319B 2232B|23-03 10:27:16 
2738B 2508B|23-03 10:27:17 




collectl

collectl以一种类似dstat的格式报告系统的统计信息;与dstat一样,它也收集关于系统不同资源(如处理器、内存和网络等)的统计信息。这里给出的一个简单例子显示了如何使用collectl来报告网络使用/带宽。


安装

安装collectl
# Ubuntu/Debian用户 
$ sudo apt-get install collectl 
#Fedora 
$ sudo yum install collectl 


使用

$ collectl -sn -oT -i0.5 
waiting for 0.5 second sample... 
#         <----------Network----------> 
#Time       KBIn  PktIn  KBOut  PktOut 
10:32:01      40     58     43      66 
10:32:01      27     58      3      32 
10:32:02       3     28      9      44 
10:32:02       5     42     96      96 
10:32:03       5     48      3      28 





sar

这个工具RHEL iso里包含,它是一个优秀的性能监控工具,不仅仅监控网络,它可以显示cpu,运行队列,磁盘i/o,分页(交换区),内存,CPU中断等性能数据。Sar命令在sysstat包中,我公司系统没有安装此包,所以要安装它,才有sar命令。

安装

uum install sysstat

使用

sudo sar  -n DEV 5  2



命令后面 5 2 意思是:每5秒钟取一次值,取2次。
IFACE:LAN接口
rxpck/s:每秒钟接收的数据包
txpck/s:每秒钟发送的数据包
rxbyt/s:每秒钟接收的字节数
txbyt/s:每秒钟发送的字节数
rxcmp/s:每秒钟接收的压缩数据包
txcmp/s:每秒钟发送的压缩数据包
rxmcst/s:每秒钟接收的多播数据包




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张小凡vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值