Linux查看硬件信息超强命令sar,以及可视化工具ksar

发布时间 2023-10-23 14:35:05作者: 梦徒

一、概述

sar(System Activity Reporter,系统活动情况报告)是Linux下系统运行状态统计工具,可从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。算是一个万能的小能手。

二、安装

Linux下:

# yum install sysstat

三、 命令

 语法:

类型 就是我们要获取的是哪个类型的指标数据,这里的-n,代表的是监控一些网络信息

类型参数 有的类型带有参数,有的没有。这里的DEV,代表的是监控网卡信息

间隔时间 每次报告的间隔时间(秒)

次数,显示报告的次数。如:时间间隔是2,采样次数是3,那么sar命令将阻塞12秒钟。

四、举例

Linux下的资源监控,主要有下面几种:有磁盘、CPU、网络、内存、IO等。

1. CPU信息

我们就先从cpu信息开始说起。作为计算机的大脑,作为一个指挥者,我们要监控它的一举一动。实际上,对于CPU有下面三种监控:利用率,负载,中断。

(1)CPU利用率

使用sar -u,我们看下它的执行结果。可以看到每种类型的使用情况,和top命令中的意义,是一样的。

# sar -u 1
Linux 3.10.0-1160.53.1.el7.x86_64 (longi-xabj-nbu)     10/23/2023     _x86_64_    (32 CPU)

01:51:22 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
01:51:23 PM     all      1.07      0.00      0.69      1.13      0.00     97.10
01:51:24 PM     all      1.17      0.00      0.72      1.01      0.00     97.10
01:51:25 PM     all      1.83      0.00      1.61      1.04      0.00     95.53
01:51:26 PM     all      1.17      0.00      0.82      1.29      0.00     96.72
01:51:27 PM     all      1.70      0.00      1.07      1.45      0.00     95.78
01:51:28 PM     all      1.70      0.00      1.92      1.19      0.00     95.19
01:51:29 PM     all      1.54      0.00      2.11      1.95      0.00     94.40
01:51:30 PM     all      1.48      0.00      0.95      1.13      0.00     96.44
01:51:31 PM     all      1.58      0.00      1.04      1.17      0.00     96.22
01:51:32 PM     all      1.48      0.00      0.88      2.08      0.00     95.56
01:51:33 PM     all      1.14      0.00      0.66      1.23      0.00     96.97
01:51:34 PM     all      1.23      0.00      0.85      1.04      0.00     96.88

字段说明:

  • %user #用户空间的CPU使用
  • %nice 改变过优先级的进程的CPU使用率
  • %system 内核空间的CPU使用率
  • %iowait CPU等待IO的百分比
  • %steal 虚拟机的虚拟机CPU使用的CPU
  • %idle 空闲的CPU

在以上的显示当中,主要看%iowait和%idle,%iowait过高表示存在I/O瓶颈,即磁盘IO无法满足业务需求,如果%idle过低表示CPU使用率比较严重,需要结合内存使用等情况判断CPU是否瓶颈。

(2)报个每个CPU的使用状态:

# sar -p 1
Linux 3.10.0-1160.53.1.el7.x86_64 (longi-xabj-nbu)     10/23/2023     _x86_64_    (32 CPU)

01:57:31 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
01:57:32 PM     all      2.24      0.00      1.67      2.65      0.00     93.45
01:57:33 PM     all      3.09      0.00      2.05      2.93      0.00     91.93
01:57:34 PM     all      1.67      0.00      1.51      2.21      0.00     94.61
01:57:35 PM     all      0.95      0.00      4.19      4.03      0.00     90.83

字段说明:

  • CPU: 所有CPU的统计
  • %user 用户态的CPU使用统计
  • %nice 更改过优先级的进程的CPU使用统计
  • %iowait CPU等待IO数据的百分比
  • %steal 虚拟机的vCPU占用的物理CPU的百分比
  • %idle 空闲的CPU百分比

(3)CPU负载 使用sar -q,同样的,和top的参数意义是相似的。除了load值,它还显示了等待队列的长度,对于排查排队问题非常有帮助。

# sar -q  1
Linux 3.10.0-1160.53.1.el7.x86_64 (longi-xabj-nbu)     10/23/2023     _x86_64_    (32 CPU)

02:00:05 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
02:00:06 PM         2      3480      1.89      1.93      2.34         3
02:00:07 PM         0      3480      1.89      1.93      2.34         3
02:00:08 PM         2      3486      2.06      1.97      2.35         0
02:00:09 PM         1      3480      2.06      1.97      2.35         1
02:00:10 PM         2      3480      2.06      1.97      2.35         0

字段说明:

  • runq-sz 运行队列的长度(等待运行的进程数,每个核的CP不能超过3个)
  • plist-sz 进程列表中的进程(processes)和线程数(threads)的数量
  • ldavg-1 最后1分钟的CPU平均负载,即将多核CPU过去一分钟的负载相加再除以核心数得出的平均值,5分钟和15分钟以此类推
  • ldavg-5 最后5分钟的CPU平均负载
  • ldavg-15 最后15分钟的CPU平均负载

(4)中断

使用sar -I,注意i是大写的。由于有不同的换算方式,所以中断的参数,分为默认、SUM、ALL等。

# sar -I SUM 1 2
Linux 3.10.0-1160.53.1.el7.x86_64 (longi-xabj-nbu)     10/23/2023     _x86_64_    (32 CPU)

02:02:30 PM      INTR    intr/s
02:02:31 PM       sum  29019.00
02:02:32 PM       sum  25353.00
Average:          sum  27186.00

(5)上下文切换

使用sar -w,它经常与监控swap交换分区的使用情况的sar -W(注意大小写)搞混,所以要注意。

# sar -w  1
Linux 3.10.0-1160.53.1.el7.x86_64 (longi-xabj-nbu)     10/23/2023     _x86_64_    (32 CPU)

02:04:14 PM    proc/s   cswch/s
02:04:15 PM      1.00  16719.00
02:04:16 PM      2.00  16864.00
02:04:17 PM      3.00  16239.00
02:04:18 PM     52.00  16392.00

2. 内存信息

内存主要是分为下面这些部分,我们平常监控的,主要是物理内存、虚拟内存、内核等。

(1)内存利用率

使用sar -r命令。有些sar版本可能会有sar -R,但一般小写的就够了。

# sar -r 1 1
Linux 3.10.0-1160.53.1.el7.x86_64 (longi-xabj-nbu)     10/23/2023     _x86_64_    (32 CPU)

02:05:32 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
02:05:33 PM  19689240 111724740     85.02    147668   2266580 110336660     55.70  28547456  10974868      2044
Average:     19689240 111724740     85.02    147668   2266580 110336660     55.70  28547456  10974868      2044

字段说明

  • kbmemfree:可用的空闲内存大小
  • kbmemused:已使用的内存大小(不包含内核使用的内存)
  • %memused:已使用内存的百分数
  • kbbuffers :内核缓冲区(buffer)使用的内存大小
  • kbcached :内核高速缓存(cache)数据使用的内存大小
  • kbswpfree :可用的空闲交换空间大小
  • kbswpused:已使用的交换空间大小
  • %swpused:已使用交换空间的百分数
  • kbswpcad :交换空间的高速缓存使用的内存大小
  • kbcommit 保证当前系统正常运行所需要的最小内存,即为了确保内存不溢出而需要的最少内存(物理内存+Swap分区)
  • commit 这个值是kbcommit与内存总量(物理内存+swap分区)的一个百分比的值

(2)swap交换分区

对于swap分区来说,就可以使用sar -S。效果如下。如果想要看交换分区的使用情况(非容量情况),就要切换到sar -W命令。

# sar -S 1 1
Linux 3.10.0-1160.53.1.el7.x86_64 (longi-xabj-nbu)     10/23/2023     _x86_64_    (32 CPU)

02:07:28 PM kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
02:07:29 PM  47356104  19318580     28.97   2756240     14.27
Average:     47356104  19318580     28.97   2756240     14.27

(3)内核使用情况

主要是使用sar -v命令。v一般在别的命令中用作版本展示,sar命令用来输出slab区的一些信息,可以说是特立独行,不走寻常路。

# sar -v  1
Linux 3.10.0-1160.53.1.el7.x86_64 (longi-xabj-nbu)     10/23/2023     _x86_64_    (32 CPU)

02:08:19 PM dentunusd   file-nr  inode-nr    pty-nr
02:08:20 PM     99557     13440  59453713         4
02:08:21 PM     99570     13440  59453725         4
02:08:22 PM     99593     13440  59453737         4

字段说明

  • dentunusd 在缓冲目录条目中没有使用的条目数量
  • file-nr 被系统使用的文件句柄数量
  • inode-nr 已经使用的索引数量
  • pty-nr 使用的pty数量

(4)监控内存分页信息, 主要是使用sar -B命令。(注意他的发音!很牛掰!) 执行结果如下:

# sar -B
Linux 3.10.0-1160.53.1.el7.x86_64 (longi-xabj-nbu)     10/23/2023     _x86_64_    (32 CPU)

12:00:10 AM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
12:10:14 AM 209673.32  77110.18 253300.90    368.64 470882.79      0.00  70023.25  59849.31     85.47
12:20:03 AM 154159.51  48950.46 123059.28    320.10 284331.92    495.67  57199.23  40649.18     70.46
12:30:03 AM 533768.07 143342.78 252916.85    436.10 511178.12  36495.22  52003.16  68497.34     77.40
12:40:04 AM 306102.14  56449.57 140173.47    362.41 284246.37   4711.38  61144.30  39420.05     59.86

(5)查看系统swap分区的统计信息:

# sar -W
Linux 3.10.0-1160.53.1.el7.x86_64 (longi-xabj-nbu)     10/23/2023     _x86_64_    (32 CPU)

12:00:10 AM  pswpin/s pswpout/s
12:10:14 AM    267.31    253.63
12:20:03 AM    152.35    699.42
12:30:03 AM    402.06    603.96
12:40:04 AM    320.31    935.70
12:50:26 AM    305.88    803.36

字段说明

  • pswpin/s 每秒从交换分区到系统的交换页面(swap page)数量
  • pswpout/s 每秒从系统交换到swap的交换页面(swap page)的数量

(6)查看I/O和传递速率的统计信息

# sar -b
Linux 3.10.0-1160.53.1.el7.x86_64 (longi-xabj-nbu)     10/23/2023     _x86_64_    (32 CPU)

12:00:10 AM       tps      rtps      wtps   bread/s   bwrtn/s
12:10:14 AM   2703.44   2180.41    523.04 419322.88 154220.34
12:20:03 AM   2184.76   1723.72    461.04 308338.01  97900.93
12:30:03 AM  10056.13   9256.94    799.19 1067511.79 286679.84
12:40:04 AM   5753.42   5278.28    475.14 612232.09 112904.74

(7)磁盘使用详情统计

# sar -d 1 1 
Linux 3.10.0-1160.53.1.el7.x86_64 (longi-xabj-nbu)     10/23/2023     _x86_64_    (32 CPU)

02:12:51 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
02:12:52 PM    dev8-0     53.00      0.00    824.00     15.55      0.00      0.04      0.04      0.20
02:12:52 PM   dev8-16      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:12:52 PM   dev8-32      2.00      0.00     40.00     20.00      0.00      0.00      0.00      0.00
02:12:52 PM   dev8-48      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:12:52 PM   dev8-64      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:12:52 PM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

字段说明

  • DEV 磁盘设备的名称,如果不加-p,会显示dev253-0类似的设备名称,因此加上-p显示的名称更直接
  • tps:每秒I/O的传输总数
  • rd_sec/s 每秒读取的扇区的总数
  • wr_sec/s 每秒写入的扇区的 总数
  • avgrq-sz 平均每次次磁盘I/O操作的数据大小(扇区)
  • avgqu-sz 磁盘请求队列的平均长度
  • await 从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒等于1000毫秒),等于寻道时间+队列时间+服务时间
  • svctm I/O的服务处理时间,即不包括请求队列中的时间
  • %util I/O请求占用的CPU百分比,值越高,说明I/O越慢

3. I/O信息

IO信息监控,同样是一个响亮的sar -b,不过这里的b,变成了小写的。

# sar -b 1 2
Linux 3.10.0-1160.53.1.el7.x86_64 (longi-xabj-nbu)     10/23/2023     _x86_64_    (32 CPU)

02:14:31 PM       tps      rtps      wtps   bread/s   bwrtn/s
02:14:32 PM    166.00      0.00    166.00      0.00  78032.00
02:14:33 PM     15.00      0.00     15.00      0.00    240.00
Average:        90.50      0.00     90.50      0.00  39136.00

字段说明

  • tps 磁盘每秒钟的IO总数,等于iostat中的tps
  • rtps 每秒钟从磁盘读取的IO总数
  • wtps 每秒钟从写入到磁盘的IO总数
  • bread/s 每秒钟从磁盘读取的块总数
  • bwrtn/s 每秒钟写入到磁盘的块总数

sar -d命令非常类似于iostat命令,结果更多。

# sar -d 3 1
Linux 3.10.0-1160.53.1.el7.x86_64 (longi-xabj-nbu)     10/23/2023     _x86_64_    (32 CPU)

02:16:07 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
02:16:10 PM    dev8-0     16.67      2.67    217.33     13.20      0.00      0.00      0.00      0.00
02:16:10 PM   dev8-16     55.33      0.00  25973.00    469.39      0.02      0.28      0.07      0.37
02:16:10 PM   dev8-32      3.33      0.00     49.67     14.90      0.00      0.00      0.00      0.00
02:16:10 PM   dev8-48      0.67      0.00     29.33     44.00      0.01     16.00     16.00      1.07
02:16:10 PM   dev8-64      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:16:10 PM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:16:10 PM  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

字段说明

  • DEV 磁盘设备的名称,如果不加-p,会显示dev253-0类似的设备名称,因此加上-p显示的名称更直接
  • tps:每秒I/O的传输总数
  • rd_sec/s 每秒读取的扇区的总数
  • wr_sec/s 每秒写入的扇区的 总数
  • avgrq-sz 平均每次次磁盘I/O操作的数据大小(扇区)
  • avgqu-sz 磁盘请求队列的平均长度
  • await 从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒等于1000毫秒),等于寻道时间+队列时间+服务时间
  • svctm I/O的服务处理时间,即不包括请求队列中的时间
  • %util I/O请求占用的CPU百分比,值越高,说明I/O越慢

4. 网络信息

(1) 每间隔1秒统计一次,总计统计1次

sar -n选项使用6个不同的开关:DEV,EDEV,NFS,NFSD,SOCK,IP,EIP,ICMP,EICMP,TCP,ETCP,UDP,SOCK6,IP6,EIP6,ICMP6,EICMP6和UDP6 ,DEV显示网络接口信息,EDEV显示关于网络错误的统计数据,NFS统计活动的NFS客户端的信息,NFSD统计NFS服务器的信息,SOCK显示套接字信息,ALL显示所有5个开关。它们可以单独或者一起使用。

 # sar -n DEV 1 1
Linux 3.10.0-1160.53.1.el7.x86_64 (longi-xabj-nbu)     10/23/2023     _x86_64_    (32 CPU)

02:19:05 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
02:19:06 PM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:19:06 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:19:06 PM      eth2      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:19:06 PM      eth3      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:19:06 PM      eth4      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:19:06 PM      eth5      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:19:06 PM      eth6      2.00      1.00      0.12      0.06      0.00      0.00      0.00
02:19:06 PM      eth7      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:19:06 PM        lo     50.00     50.00      5.99      5.99      0.00      0.00      0.00

字段说明 下面的average是在多次统计后的平均值:

  • IFACE 本地网卡接口的名称
  • rxpck/s 每秒钟接受的数据包
  • txpck/s 每秒钟发送的数据库
  • rxKB/S 每秒钟接受的数据包大小,单位为KB
  • txKB/S 每秒钟发送的数据包大小,单位为KB
  • rxcmp/s 每秒钟接受的压缩数据包
  • txcmp/s 每秒钟发送的压缩包
  • rxmcst/s 每秒钟接收的多播数据包

(2) 统计网络设备通信失败信息:

# sar -n EDEV  1 1
Linux 3.10.0-1160.53.1.el7.x86_64 (longi-xabj-nbu)     10/23/2023     _x86_64_    (32 CPU)

02:20:10 PM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s
02:20:11 PM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:20:11 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:20:11 PM      eth2      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:20:11 PM      eth3      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:20:11 PM      eth4      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:20:11 PM      eth5      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:20:11 PM      eth6      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:20:11 PM      eth7      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:20:11 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

字段说明

  • IFACE 网卡名称
  • rxerr/s 每秒钟接收到的损坏的数据包
  • txerr/s 每秒钟发送的数据包错误数
  • coll/s 当发送数据包时候,每秒钟发生的冲撞(collisions)数,这个是在半双工模式下才有
  • rxdrop/s 当由于缓冲区满的时候,网卡设备接收端每秒钟丢掉的网络包的数目
  • txdrop/s 当由于缓冲区满的时候,网络设备发送端每秒钟丢掉的网络包的数目
  • txcarr/s 当发送数据包的时候,每秒钟载波错误发生的次数
  • rxfram 在接收数据包的时候,每秒钟发生的帧对其错误的次数
  • rxfifo 在接收数据包的时候,每秒钟缓冲区溢出的错误发生的次数
  • txfifo 在发生数据包 的时候,每秒钟缓冲区溢出的错误发生的次数

(3) 统计socket连接信息

#  sar -n SOCK 1
Linux 3.10.0-1160.53.1.el7.x86_64 (longi-xabj-nbu)     10/23/2023     _x86_64_    (32 CPU)

02:21:31 PM    totsck    tcpsck    udpsck    rawsck   ip-frag    tcp-tw
02:21:32 PM      2074       900        17         0         0        60
02:21:33 PM      2072       900        17         0         0        62
02:21:34 PM      2067       900        17         0         0        69

字段说明

  • totsck 当前被使用的socket总数
  • tcpsck 当前正在被使用的TCP的socket总数
  • udpsck 当前正在被使用的UDP的socket总数
  • rawsck 当前正在被使用于RAW的skcket总数
  • ip-frag 当前的IP分片的数目
  • tcp-tw TCP套接字中处于TIME-WAIT状态的连接数量

使用FULL关键字,相当于上述DEV、EDEV和SOCK三者的综合。

(4) TCP连接的统计

# sar -n TCP 1 3
Linux 3.10.0-1160.53.1.el7.x86_64 (longi-xabj-nbu)     10/23/2023     _x86_64_    (32 CPU)

02:22:50 PM  active/s passive/s    iseg/s    oseg/s
02:22:51 PM      0.00      0.00     32.00     32.00
02:22:52 PM      0.00      0.00     50.00     50.00
02:22:53 PM      1.00      2.00    126.00    122.00
Average:         0.33      0.67     69.33     68.00

字段说明

  • active/s 新的主动连接
  • passive/s 新的被动连接
  • iseg/s 接受的段
  • oseg/s 输出的段

(5) sar -n 使用总结:

  • DEV 网络接口统计信息
  • EDEV 网络接口错误
  • NFS NFS 客户端
  • NFSD NFS 服务器
  • SOCK Sockets (套接字) (v4)套接字使用
  • IP IP 流 (v4) IP数据报统计信息
  • EIP IP 流 (v4) (错误) IP错误统计信息
  • ICMP ICMP 流 (v4)
  • EICMP ICMP 流 (v4) (错误)
  • TCP TCP 流 (v4) TCP统计信息
  • ETCP TCP 流 (v4) (错误)TCP错误统计信息
  • UDP UDP 流 (v4)
  • SOCK6 Sockets (套接字) (v6)
  • IP6 IP 流 (v6)
  • EIP6 IP 流 (v6) (错误)
  • ICMP6 ICMP 流 (v6)
  • EICMP6 ICMP 流 (v6) (错误)
  • UDP6 UDP 流 (v6)

五、ksar

Ksar可以用来分析系统性能数据,其优势在于不需要单独去收集性能数据,系统自带有sar包,通过命令转换即可使用Ksar展现。

...

参考文档:https://blog.51cto.com/u_15155099/2786354