linux下流量分析工具

2020-07-31 10:55:06 浏览数 (2)

介绍

在日常的运维工作中,我们经常需要去关注网卡流量的使用情况,看是否处于正常的使用范围内,如果入网或者出网有异常升高或者降低,我们都要及早的去发现,来进行评估是否处于异常状态,而去发现这个异常,就需要我们熟悉常用的流量分析查看工具,例如我们这里要讲的六大工具(不分排名先后)

  • 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

0 人点赞