Linux查看硬件信息超强命令sar,以及可视化工具ksar
一、概述
sar(System Activity Reporter,系统活动情况报告)是Linux下系统运行状态统计工具,可从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。算是一个万能的小能手。
二、安装
Linux下:
# yum install sysstat
三、 命令
语法:
类型 就是我们要获取的是哪个类型的指标数据,这里的-n,代表的是监控一些网络信息
类型参数 有的类型带有参数,有的没有。这里的DEV,代表的是监控网卡信息
间隔时间 每次报告的间隔时间(秒)
次数,显示报告的次数。如:时间间隔是2,采样次数是3,那么sar命令将阻塞12秒钟。
参数:
-a:文件读写情况 -A:所有报告的总和 -B:分页状况- b:显示I/O和传送速率的统计信息 -c:输出进程统计信息,每秒创建的进程数 -d:块设备状况 -F [ MOUNT ]:文件系统统计信息 -H:交换空间利用率 -I { <中断> | SUM | ALL | XALL }:中断信息状况 -n:汇报网络情况 -P:设定CPU -q:队列长度和平均负载 -R:输出内存页面的统计信息 -r [ ALL ]:输出内存和交换空间的统计信息 -S:交换空间利用率信息 -u [ ALL ]:输出CPU使用情况的统计信息 -v:输出inode、文件和其他内核表的统计信息 -W:输出系统交换活动信息 -w:任务创建与系统转换信息 -y:终端设备活动情况
四、举例
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展现。
以下为使用步骤:
1、登录操作系统,进入/var/log/sa目录,可以看到有最近一段时间的性能数据(默认是7天);
2、执行以下命令,其中-s后接开始时间,-e接结束时间,这个根据自己需要自行定义,/var/log/sa/sa22 指对sa22进行转换,结果输出到/tmp下,命名为w_may22_10_23.txt
# LC_ALL=C sar -A -s 06:00:00 -e 18:00:00 -f /var/log/sa/sa22 > /tmp/w_may22_10_23.txt
转换全天的日志,sa24代表24日的日志信息:
# LC_ALL=C sar -A -f /var/log/sa/sa24 > /tmp/w__11_24.txt
3、打开Ksar工具,左键左上角data选择Load from text file,选择刚刚生成的文件,即可加载到Ksar中.
...
参考文档:https://blog.51cto.com/u_15155099/2786354