有的时候我们部署了项目之后会对性能进行测试,影响性能的原因多方面,比如前端后端的代码是否足够优美,架构是否足够合理,带宽是否足够支撑,今天这三个小工具就是可以帮助我们查看在压测时,服务器的网络流量的输入和输出来帮助我们进行一个判断
这个小软件的安装非常非常的简单,但是如果不注意,即使很简单的过程基本也是一波三折:(我一linux centos系统为例)
1.不同的系统,不同的版本会有差别。比如centos7 和centos7以下的版本其差距基本上是一个逾越性的,很多命令有更新,但和我们安装软件时相关的就是yum源文件的包含量,很多环境插件是centos7以下版本所不具备的
2.如果没有一次性成功要注意看打出的错误日志,基本最后几行就是没有成功的原因,一般新手都会视而不见
3.不要机械的去安装,理解别人写的文档,尤其每个字都要看了,不要只看命令,因为涉及到一些环境这个人如果之前已经安装过很可能就是用文字一代而过
如果前面三条注意了那么按照小编的博客来进行安装绝对不会超过五分钟
系统:centos7及以上
路径:这三款小软件的安装路径随意,小编一般都会装在 /usr/local 下面,所以涉及到的路径基本都是我自己的安装路径,如果是自己不想在这个目录下在看到和路径有关的要仔细(ps:这三款软件除了配环境变量基本不会涉及到路径)
正文:
简单介绍:
iftop用于网络使用,它监听指定接口上的网络流量(可以指定网段)、反向解析IP、显示端口信息等,并显示一对主机对当前带宽使用情况的表格。方便回答“为什么我们的ADSL链接如此之慢?”的问题。
ifstat相对来说功能相对单一了,但是如果只是监测io那么这款小软件还是很直接明了的,只是加测网卡流量,不过可以同时监测多个网卡
nload它是一个实时监控网络流量和带宽使用的控制台应用程序,使用两个图表可视化地展示接收和发送的流量,并提供诸如数据交换总量、最小/最大网络带宽使用量等附加信息。
总的核心功能就是监测网络流量来看带宽是否是瓶颈
步骤都一样:1、准备环境 2、下载 3、配置 4、编译&&安装
1.1iftop
环境:yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel
下载:wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz (这个版本是目前最稳定的)
多说一点,wget安装在哪个路径下用的就会下载到哪个路径下面,解压命令 tar -zxvf iftop-0.17.tar.gz 然后进入到解压后的文件夹 cd /iftop-0.17进行配置(后面的ifstat和nload的wget的安装也是这样不在重复累述)
配置:./configure 这个是默认配置的命令,默认的会配置到 /usr/local/bin 下面 个人还是建议在配置的时候指定到自己规定的文件夹,这样方便管理 ./configure --prefix=路径随意 在执行编译前用 ls 命令查看是否有Makefile这个文件,如果没有说明配置没有成功,这百分之99的原因是环境没有装全,差的环境在配置命令执行后的打出的日志的最后一行会有提醒,解决方法就是在装一遍,如果才能成功在本博客的最后会有提示(这说明基本也是用了centos7以下的版本)
编译和安装: make && make install
这时就成功了,可以直接输入iptop查看效果
1.2ifstat
环境:yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel gcc-c++
下载:wget http://gael.roualland.free.fr/ifstat/ifstat-1.1.tar.gz
tar -zxvf ifstat-1.1.tar.gz
cd /ifstat-1.1
配置:./configure 默认会安装到/usr/local/bin/目录中
编译和安装:make && make install
这个的启动如果是默认配置就到/usr/local/bin下面./ifstat 如果指定路径就到自己的路径下./ifstat
1.3nload
环境:yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel gcc-c++
下载:wget http://www.roland-riegel.de/nload/nload-0.7.4.tar.gz
tar -zxvf nload-0.7.4.tar.gz
cd nload-0.7.4
配置:./configure
编译和安装:make && make install
nload 即可查看效果
(一般如果是centos7以下的版本基本都会报找不到镜像或者找不到相关编译环境,如果用这个安装最好还是用7及以上的版本,不在累述)
2.1iptop
yum install iptop
有的版本是连环境也一块集成了有的没有,为了保险起见可以执行一遍环境安装的命令 yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel
2.2ipstat
yum install ipstat
有的版本是连环境也一块集成了有的没有,为了保险起见可以执行一遍环境安装的命令 yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel
2.3nload
yum install nload
有的版本是连环境也一块集成了有的没有,为了保险起见可以执行一遍环境安装的命令 yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel
iftop:
ifstat
nload
1)iftop
iftop界面相关说明
界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间的<= =>这两个左右箭头,表示的是流量的方向。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量
iftop相关参数
常用的参数
-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
进入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退出监控。
2)ifstat
in:要提供的资源数 out:接收到的请求的资源数
-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 指定一个驱动来收集状态信息
3)nload
你可以按键盘上的 ← → 或者 Enter/Tab 键在设备间切换。
按 F2 显示选项窗口。
按 F5 将当前设置保存到用户配置文件。
按 F6 从配置文件重新加载设置。nload -t 500
按 q 或者 Ctrl+C 退出 nload。默认每 100 毫秒刷新一次显示数值,下面的例子将时间间隔设置成 500 毫秒:nload -t 500
一般因为版本原因会出现镜像找不到,或者环境资源没有,具体是哪个看最后一两行,然后用这个命令: apt-get install 错误报的啥就写啥/yum install 错误报的啥就写啥 例如:
configure: error: Curses! Foiled again!
(Can’t find a curses library supporting mvchgat.)
Consider installing ncurses.
解决方法:apt-get install libncurses5-dev/yum install ncurses-devel
小编希望写的运维方面的东西及时是新手也能后理解和掌握并且避免一些不必要的错误,所以写的比较冗余,如果在过程中还有问题可以给小编留言,另外博文里面提到的很多东西即使在安装其他软件或者解决问题的时候基本也都是这个套路