介绍
在日常的运维工作中,我们经常需要去关注网卡流量的使用情况,看是否处于正常的使用范围内,如果入网或者出网有异常升高或者降低,我们都要及早的去发现,来进行评估是否处于异常状态,而去发现这个异常,就需要我们熟悉常用的流量分析查看工具,例如我们这里要讲的六大工具(不分排名先后)
- nload
- iftop
- bmon
- sar
- iptraf
- dstat
接下来我们分别看下这几个工具的使用方法
nload使用
nload工具是通过读取/proc/net/dev文件,以获得流量统计信息,nload是一个命令行工具,让用户可以分开来监控入站和出站的流量,它还可以绘制图表以显示入站流量和出站流量,如果我们需要看带宽的总体情况,不需要看每个进程的详细情况,nload便很方便了
1)安装方法
1 | yum -y install nload |
---|
2)参数介绍
1 2 3 4 5 | -a: 指定全部数据的刷新时间,单位是秒,默认是300秒 -i: 进入网卡的流量图的显示比例最大值设置 -m: 不显示流量图,只显示统计数据 -t: 显示数据的刷新时间间隔,单位是毫秒,默认500 -u: 设置curr,avg,min,max的数据单位,默认是自动的,h|b|k|m|g|H|B|K|M|G |
---|
3)示例
1 | nload -t 200 -i 1024 -o 128 -U M</code> |
---|
一般情况下,默认不适用参数就可以了
iftop使用
iftop是类似与top的实时流量监控工具,我们可以使用iftop来监控网卡的实时流量,可以指定网段,反向解析IP,显示端口等信息
1)安装
1 | yum -y install iftop |
---|
2)参数介绍
iftop界面相关说明:
1 2 3 4 5 6 7 | <= =>这两个箭头代表的是流量的流出和流入方向 TX: 发送流量 RX: 接收流量 TOTAL: 总流量 Cumm: 运行iftop到目前为止的总流量 peak: 流量峰值 rates: 分别表示过去2s,10s,40s的平均流量 |
---|
iftop相关参数:
1 2 3 4 5 | -i: 指定监测的网卡 -B: 以bytes为单位显示流量,默认是按位(bits) -n: 使host信息默认直接显示IP -N: 使端口信息默认直接显示端口号 -F: 显示特定网段的进出流量,例如:iftop -F 10.10.1.0/24 |
---|
进入iftop界面后的命令操作:
1 2 3 4 5 6 7 8 9 10 11 12 | 按h切换帮助信息 按n切换显示本机的IP或主机名 按s切换是否显示本机的host信息 按d切换是否显示远端目标主机的host信息 按N显示端口号或端口服务名称 按S切换是否显示本机的端口信息 按D切换是否显示远端目标主机的端口信息 按p切换是否显示端口信息 按P切换暂停或继续 按b显示平均流量图形条 按T显示每个连接的总流量 按j或k可以向上或向下翻滚屏幕 |
---|
bmon使用
bmon是unix系统中一个基于文本,简单但非常强大的网络监视和调试工具,它能抓取网络相关统计信息并把它们以用户友好的格式展现出来
1)安装
1 | yum -y install https://mirrors.aliyun.com/epel/7/x86_64/Packages/b/bmon-3.6-1.el7.x86_64.rpm |
---|
2)参数介绍
bmon界面参数介绍
1 2 | RX: 表示每秒接收数据 TX: 表示每秒发送数据 |
---|
bmon使用非常简单,提示也非常友好,可以根据提示或者使用bmon -h来查看使用帮助
sar使用
sar可以对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态,可以对文件的读写情况,系统调用的使用情况,串口,CPU效率,内存使用情况,进程活动等进行监控
1)安装
1 | yum -y install sysstat |
---|
2)参数介绍
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | sar [options] [-A] [-o file] t [n] t: 采样间隔 n: 采样次数 -o: 将结果以二进制格式存放在文件中 -A: 所有报告的总和 -u: 输出CPU使用情况的统计信息 -v: 输出inode、文件和其他内核表的统计信息 -d: 输出每一个快设备的活动信息 -r: 输出内存和交换空间的统计信息 -b: 显示I/O和传送速率的统计信息 -a: 文件读写情况 -c:输出进程统计信息,每秒创建的进程数 -R: 输出内存页面的统计信息 -y: 终端设备的活动情况 -w: 输出系统交换活动信息 |
---|
3)示例
监控网络情况:
1 | sar -n { DEV | EDEV | NFS | NFSD | SOCK | ALL } |
---|
sar 提供六种不同的语法选项来显示网络信息。
1 2 3 4 5 6 7 | -n选项使用6个不同的开关: DEV | EDEV | NFS | NFSD | SOCK | ALL DEV显示网络接口信息; EDEV显示关于网络错误的统计数据; NFS统计活动的NFS客户端的信息; NFSD统计NFS服务器的信息; SOCK显示套接字信息; ALL显示所有5个开关。它们可以单独或者一起使用 |
---|
例如监控网卡情况:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | sar -n DEV 3 2 # sar -n DEV 3 2 Linux 3.10.0-693.2.2.el7.x86_64 (blog_site) 08/12/2018 _x86_64_ (1 CPU) 01:23:29 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 01:23:32 PM eth0 1.00 1.34 0.05 0.49 0.00 0.00 0.00 01:23:32 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 01:23:32 PM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 01:23:32 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 01:23:35 PM eth0 0.33 0.33 0.02 0.03 0.00 0.00 0.00 01:23:35 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 01:23:35 PM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s Average: eth0 0.67 0.84 0.04 0.26 0.00 0.00 0.00 Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 rxpck/s:每秒钟接收的数据包 txpck/s:每秒钟发送的数据包 rxbyt/s:每秒钟接收的字节数 txbyt/s:每秒钟发送的字节数 rxcmp/s:每秒钟接收的压缩数据包 txcmp/s:每秒钟发送的压缩数据包 rxmcst/s:每秒钟接收的多播数据包 |
---|
监控CPU
#每10秒采样依次,连续采样3次
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # sar -u -o test 10 3 Linux 3.10.0-693.2.2.el7.x86_64 (blog_site) 08/12/2018 _x86_64_ (1 CPU) 01:05:06 PM CPU %user %nice %system %iowait %steal %idle 01:05:16 PM all 0.20 0.00 0.20 0.00 0.00 99.60 01:05:26 PM all 0.20 0.00 0.20 0.00 0.00 99.60 01:05:36 PM all 0.20 0.00 0.20 0.20 0.00 99.40 Average: all 0.20 0.00 0.20 0.07 0.00 99.53 all 表示统计信息为所有 CPU 的平均值。 %user:显示在用户级别(application)运行使用 CPU 总时间的百分比。 %nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。 %system:在核心级别(kernel)运行所使用 CPU 总时间的百分比。 %iowait:显示用于等待I/O操作占用 CPU 总时间的百分比。 %steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。 %idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。 |
---|
关注点: 若 %iowait 的值过高,表示硬盘存在I/O瓶颈 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU 。
查看二进制文件test中的内容
1 | sar -u -f test |
---|
监控内存:
#每10秒采样一次,连续采样3次,监控内存分页
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | sar -r 10 3 Linux 3.10.0-693.2.2.el7.x86_64 (blog_site) 08/12/2018 _x86_64_ (1 CPU) 01:10:59 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 01:11:09 PM 145712 870456 85.66 29024 384760 1716872 83.15 319576 339936 0 01:11:19 PM 145712 870456 85.66 29024 384760 1716872 83.15 319576 339936 0 01:11:29 PM 145712 870456 85.66 29024 384760 1716872 83.15 319580 339936 0 Average: 145712 870456 85.66 29024 384760 1716872 83.15 319577 339936 0 kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间. kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间. %memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比. kbbuffers和kbcached:这两个值就是free命令中的buffer和cache. kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM swap). %commit:这个值是kbcommit与内存总量(包括swap)的一个百分比. |
---|
内存分页监控:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # sar -B 10 3</code> Linux 3.10.0-693.2.2.el7.x86_64 (blog_site) 08/12/2018 _x86_64_ (1 CPU) 01:14:10 PM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff 01:14:20 PM 0.00 0.00 7.62 0.00 16.73 0.00 0.00 0.00 0.00 01:14:30 PM 0.00 0.00 2.81 0.00 8.73 0.00 0.00 0.00 0.00 01:14:40 PM 0.00 0.80 1.71 0.00 14.84 0.00 0.00 0.00 0.00 Average: 0.00 0.27 4.04 0.00 13.44 0.00 0.00 0.00 0.00 pgpgin/s:表示每秒从<a title="View all posts in 磁盘" href="http://lovesoo.org/tag/磁盘">磁盘</a>或SWAP置换到内存的字节数(KB) pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB) fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major minor) majflt/s:每秒钟产生的主缺页数. pgfree/s:每秒被放入空闲队列中的页个数 pgscank/s:每秒被kswapd扫描的页个数 pgscand/s:每秒直接被扫描的页个数 pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数 %vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank pgscand)的百分比 |
---|
I/O和传送速率监控:
1 2 3 4 5 6 7 8 9 10 11 12 13 | # sar -b 10 3</code> Linux 3.10.0-693.2.2.el7.x86_64 (blog_site) 08/12/2018 _x86_64_ (1 CPU) 01:15:46 PM tps rtps wtps bread/s bwrtn/s 01:15:56 PM 1.50 1.30 0.20 21.64 2.40 01:16:06 PM 0.20 0.00 0.20 0.00 2.40 01:16:16 PM 6.12 5.82 0.30 358.68 7.22 Average: 2.61 2.37 0.23 126.70 4.01 tps:每秒钟物理设备的 I/O 传输总量 rtps:每秒钟从物理设备读入的数据总量 wtps:每秒钟向物理设备写入的数据总量 bread/s:每秒钟从物理设备读入的数据量,单位为 块/s bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s |
---|
进程队列长度和平均负载状态监控:
1 2 3 4 5 6 7 8 9 10 11 12 13 | # sar -q 10 3</code> Linux 3.10.0-693.2.2.el7.x86_64 (blog_site) 08/12/2018 _x86_64_ (1 CPU) 01:17:05 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 01:17:15 PM 0 156 0.01 0.03 0.05 0 01:17:25 PM 0 156 0.01 0.03 0.05 0 01:17:35 PM 0 156 0.01 0.03 0.05 0 Average: 0 156 0.01 0.03 0.05 0 runq-sz:运行队列的长度(等待运行的进程数) plist-sz:进程列表中进程(processes)和线程(threads)的数量 ldavg-1:最后1分钟的系统平均负载(System load average) ldavg-5:过去5分钟的系统平均负载 ldavg-15:过去15分钟的系统平均负载 |
---|
要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来
- 怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看
- 怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看
- 怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看
iptraf使用
iptraf可以实时的监控网卡流量,可以生成各种网络统计数据,包括TCP信息,UDP信息,ICMP信息,以太网负载信息,节点统计,IP校验和错误等信息
1)安装
1 | yum -y install iptraf |
---|
2)使用介绍
1 2 3 4 5 6 | -i: 后跟网络接口名称 -g: 立即开始生成网络接口的概要状态信息 -d: 后跟网络接口可以立即监视明细的网络流量信息 -s: 后跟网络接口可以立即监视TCP和UDP网络流量信息 -t: 指定iptraf指令监视的时间,timeout指定时间的minute数 -L: 指定一个文件用与记录所有命令行的日志 |
---|
3)示例
直接输入iptraf-ng即可,进去界面后可根据提示进行选择,界面非常的友好
dstat使用
dstat可以实时的看到所有系统资源,报错磁盘利用率,网络带宽数值,CPU状态,分页统计,系统统计等
1)安装
1 | yum -y install dstat |
---|
2)使用方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | -tcp: 显示常用的TCP统计 -c: 统计CPU状态 -d: 统计磁盘读写状态 -D: 统计指定磁盘或汇总信息 -I: 统计系统负载情况 -m: 统计系统物理内存情况 -s: 统计swap已使用和剩余量 -n: 统计网络使用情况 -N: 统计指定接口的汇总流量 -r: 统计I/O请求。包括读写请求 -p: 统计进程信息 -y: 统计系统信息,包括中断、上下文切换 -t: 显示同估计时时间 –disk-util :显示某一时间磁盘的忙碌状况 –freespace :显示当前磁盘空间使用率 –proc-count :显示正在运行的程序数量 –top-bio :指出块I/O最大的进程 –top-cpu :图形化显示CPU占用最大的进程 –top-io :显示正常I/O最大的进程 –top-mem :显示占用最多内存的进程 –fs 统计文件打开数和inodes数 |
---|
查看网络占用情况
1 | dstat -nf |
---|