sar命令详解

前言
和sar比起来,其他Linux命令都是渣

sar是一个Linux下的监控工具,一直站在鄙视链的顶端。但是往往因繁多的参数,让人望而生畏,不知道怎么使用。然而这么强大命令并非是无章可循,只要我们找到合适的切入点来分析这个工具,就会发现实际上是非常简单的。

一、概述
格式

sar命令很简单,它的参数主要分为四部分。其中,第二部分和第三、四部分,是可选的,也就是说,最终要的参数,就剩下一个,那就是选项。不带选项默认是-u。
1.选项,也就是我们要获取的是哪个类型的指标数据,这里的-n,代表的是监控一些网络信息
2.类型参数,有的类型带有参数,有的没有。这里的DEV,代表的是监控网卡信息
3.时间间隔,表示多少秒采样一次数据,这里的1就是1秒
4.次数,表示采样的次数。比如时间间隔是3,采样次数是4,那么sar命令将会阻塞12秒钟
Sar的参数众多,想要一个参数一个参数的记忆,不免会耗费大量时间。所以我们就需要一个切入点,讨论监控工具,不外乎就是监控系统资源,那么自然也就是磁盘、cpu、网络、内存、IO等。

默认监控: sar 1 1 // CPU和IOWAIT统计状态
(1) sar -b 1 1 // IO传送速率
(2) sar -B 1 1 // 页交换速率
(3) sar -c 1 1 // 进程创建的速率
(4) sar -d 1 1 // 块设备的活跃信息
(5) sar -n DEV 1 1 // 网路设备的状态信息
(6) sar -n SOCK 1 1 // SOCK的使用情况
(7) sar -n ALL 1 1 // 所有的网络状态信息
(8) sar -P ALL 1 1 // 每颗CPU的使用状态信息和IOWAIT统计状态
(9) sar -q 1 1 // 队列的长度(等待运行的进程数)和负载的状态
(10) sar -r 1 1 // 内存和swap空间使用情况
(11) sar -R 1 1 // 内存的统计信息(内存页的分配和释放、系统每秒作为BUFFER使用内存页、每秒被cache到的内存页)
(12) sar -u 1 1 // CPU的使用情况和IOWAIT信息(同默认监控)
(13) sar -v 1 1 // inode, file and other kernel tablesd的状态信息
(14) sar -w 1 1 // 每秒上下文交换的数目
(15) sar -W 1 1 // SWAP交换的统计信息(监控状态同iostat 的si so)
(16) sar -x 2906 1 1 // 显示指定进程(2906)的统计信息,信息包括:进程造成的错误、用户级和系统级用户CPU的占用情况、运行在哪颗CPU上
(17) sar -y 1 1 // TTY设备的活动状态
(18) 将结果输出到文件(-o)和读取记录信息(-f)
(19) sar -h // 查看帮助

二、CPU信息
sar -u 1 3 或 sar 1 3 (1:每隔一秒刷新一次,3:刷新3次)

也可以使用-p查看全天的

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

进程长度和CPU平均负载状态监控
sar -q 1 3 (1:每隔一秒刷新一次,3:刷新3次)

二、内存监控
sar -r 1 3 (1:每隔一秒刷新一次,3:刷3次)

sar -W 1 3

三、I/O和传送速率监控与磁盘使用情况
Sar的I/O和磁盘使用情况是有点重合的
sar -b 1 3 (1:每隔一秒刷新一次,3:刷新3次)

sar -d 1 3 (1:每隔一秒刷新一次,3:刷新3次)

sar -d 1 3 -p(1:每隔一秒刷新一次,3:刷新3次)

参数-p可以打印出sda,hdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0

avgqu-sz 的值较低时,设备的利用率较高。
%util I/O请求占用的CPU百分比,值越高,说明I/O越慢。
四、网络宽带监控
sar -n DEV 1 3
sar命令使用-n选项可以汇报网络相关信息,可用的参数包括:DEV、EDEV、SOCK和FULL。

1.IFACE:就是网络设备的名称;
2.rxpck/s:每秒钟接收到的包数目
3.txpck/s:每秒钟发送出去的包数目
4.rxbyt/s:每秒钟接收到的字节数
5.txbyt/s:每秒钟发送出去的字节数
6.rxcmp/s:每秒钟接收到的压缩包数目
7.txcmp/s:每秒钟发送出去的压缩包数目
8.txmcst/s:每秒钟接收到的多播包的包数目

查看网络信息的参数还有很多,就不一一举例,毕竟大多数时候我们只和DEV打交道,这边我就把它举出来了。
1.DEV 网卡
2.EDEV 网卡 (错误)
3.NFS NFS 客户端
4.NFSD NFS 服务器
5.SOCK Sockets (套接字) (v4)
6.IP IP 流 (v4)
7.EIP IP 流 (v4) (错误)
8.ICMP ICMP 流 (v4)
9.EICMP ICMP 流 (v4) (错误)
10.TCP TCP 流 (v4)
11.ETCP TCP 流 (v4) (错误)
12.UDP UDP 流 (v4)
13.SOCK6 Sockets (套接字) (v6)
14.IP6 IP 流 (v6)
15.EIP6 IP 流 (v6) (错误)
16.ICMP6 ICMP 流 (v6)
17.EICMP6 ICMP 流 (v6) (错误)
18.UDP6 UDP 流 (v6)

五、一些可能会用到的选项
将结果输出到文件(-o)和读取记录信息(-f)

-f可以读取二级制存储的数据文件,所以我们也可以用它来读取之前的日志文件中的系统数据

监控indo、文件和其他内核监控
sar -v 1 3

dentunusd:目录高速缓存中未被使用的条目数量
file-nr:文件句柄(file handle)的使用数量
inode-nr:索引节点句柄(inode handle)的使用数量
pty-nr:使用的pty数量

内存分页监控
sar -B 1 3

pgpgin/s:表示每秒从磁盘或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)的百分比

要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来
怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看
怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看
怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看

六、压力测试实验
测试cpu占用率
测试前数据

这里我们用stess命令测试

这里可以看到我们的cpu空闲时间已经没有了

测试内存占用率

我们依旧是使用stress命令测试
stress --vm 2 --vm-bytes 1G --vm-hang 100 --timeout 100s
开启2个进程分配内存,每次分配1GB内存,保持100秒后释放,100秒后退出。


测试I/O与传输速率与磁盘使用情况

依旧是stress命令测试

我们用stress命令模拟写入数据,可以看到此时的IO总数和写入速率

也可以用-d -p看的更加全面


检测网络流量
这里我们可以用ab命令来测试

使用ab命令模拟1000个用户访问5000次的数据

可以看到我们的接受和发送的数据都非常的大


总结
当然,sar命令虽然功能强大,在很多方面方面我们都可以使用sar来查询到我们需要的数据,但不是说我们就需用sar就可以了,对于系统的监控优化命令,当然是越多越好,很多时候我还是习惯使用top、free这些命令,从来没有无敌的工具,真正厉害的是灵活运用工具的我们。

原文链接:https://blog.csdn.net/weixin_67510296/article/details/125207042

===========================================================

sar(System Activity Reporter 系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一。

它可以从多方面对系统的资源使用情况进行监控,包括:文件的读写情况、系统调用的使用情况、磁盘 I/O、CPU 效率、内存使用状况、进程活动及 IPC 有关的活动等,然后将系统中的各种性能数据收集起来并显示给用户。

安装

sar 命令来自于 sysstat 这个工具包,如果系统提示 sar 命令不存在,需先安装 sysstat。

[root@CentOS7-1 ~]# sar
-bash: sar: command not found
[root@CentOS7-1 ~]# yum install sysstat -y
[root@CentOS7-1 ~]# sar

 

语法格式

sar -[ options ] time_interval number_of_tines_to_display

常用参数说明

-A  #汇总所有的报告
-a  #查看文件读写使用情况
-B  #查看附加的缓存的使用情况
-b  #查看缓存的使用情况
-c  #查看系统调用的使用情况
-d  #查看磁盘的使用情况
-g  #查看串口的使用情况
-h  #查看关于buffer使用的统计数据
-m  #查看IPC消息队列和信号量的使用情况
-n  #查看命名cache的使用情况
-p  #查看调页活动的使用情况
-q  #查看平均负载
-R  #查看进程的活动情况
-r  #查看没有使用的内存页面和硬盘块
-u  #查看CPU的利用率
-v  #查看进程、i节点、文件和锁表状态
-w  #查看系统交换活动状况
-y  #查看TTY设备活动状况

常用功能介绍

sar 命令的一些常用选项和功能如下:

  • CPU使用统计:使用“-u”选项可以输出整体CPU的使用情况,包括用户模式下的时间百分比、系统模式下的时间百分比等。
  • 内存使用情况:使用“-r”选项可以查看没有使用的内存页面和硬盘块的情况。
  • 磁盘使用情况:使用“-d”选项可以查看每个块设备的活动情况,包括读取和写入的块数等。
  • 网络活动情况:使用“-n”选项可以查看网络连接、传输速率等网络活动情况。
  • 进程活动情况:使用“-P”选项可以查看进程的创建、终止等进程活动情况。
  • 上下文切换情况:使用“-w”选项可以查看系统上下文切换情况,了解系统中的进程调度情况。
  • 系统负载情况:使用“-q”选项可以查看系统负载情况,包括队列长度和负载信息等。
  • 缓冲区使用情况:使用“-b”选项可以查看缓冲区的使用情况,了解系统的I/O性能。
  • 文件读写情况:使用“-a”选项可以查看文件读写情况,了解磁盘的读写负载。

sar命令和top命令区别

两者都是可以用于监控系统性能的工具,但它们之间存在一些区别。

  • sar命令是一个系统监视和记录工具,它可以收集、报告和保存系统活动信息,包括CPU使用情况、内存使用情况、磁盘活动、网络活动等。sar命令可以将收集到的数据以表格或图形方式显示,并支持对历史数据的查询和分析。因此,sar命令更适合用于系统性能的长期监控和数据记录。
  • top命令则是一个动态的监视工具,它可以实时显示系统中各个进程的资源占用情况,包括CPU使用率、内存占用、进程优先级等。top命令还可以根据用户的需要动态地调整显示的进程信息,并提供了一个交互式的界面供用户进行操作。因此,top命令更适合用于短期的实时性能监控和进程管理。

应用举例

统计网络信息
[root@CentOS7-1 ~]# sar -n DEV 1 3
查看内存交换空间的使用率信息
[root@CentOS7-1 ~]# sar -r
Linux 3.10.0-1127.18.2.el7.x86_64 (CentOS7-1)  01/18/2024  _x86_64_ (1 CPU)

04:28:37 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
04:28:55 AM    127328    868356     87.21         0    542496    679228     21.96    350504    364784        24
04:29:00 AM    127328    868356     87.21         0    542516    679228     21.96    350504    364784        44
04:30:01 AM    126700    868984     87.28         0    542644    680828     22.01    350956    364680         0
Average:       127119    868565     87.23         0    542552    679761     21.98    350655    364749        23

输出的结果字段说明

kbmemfree  #空闲物理内存量
kbmemused  #使用中的物理内存量
%memused   #物理内存量使用率
kbbuffers  #内核中作为缓冲区使用的物理内存容量
kbcacheed  #内核中作为缓存使用的物理内存容量
kbswpfree  #交换区的空闲容量
kbswpused  #使用中的交换区容量
查看CPU使用率
[root@centos7 ~]# sar -u
Linux 3.10.0-1127.18.2.el7.x86_64 (centos7)  03/28/2021  _x86_64_ (1 CPU)

11:10:02 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
11:20:01 AM     all      0.03      0.00      0.18      0.02      0.00     99.77
11:30:01 AM     all      0.03      0.00      0.17      0.02      0.00     99.78
Average:        all      0.03      0.00      0.18      0.02      0.00     99.77
查看平均负载
[root@centos7 ~]# sar -q
Linux 3.10.0-1127.18.2.el7.x86_64 (centos7)  03/28/2021  _x86_64_ (1 CPU)

11:10:02 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
11:20:01 AM         1       108      0.00      0.01      0.05         0
11:30:01 AM         1       108      0.00      0.01      0.05         0
Average:            1       108      0.00      0.01      0.05         0
查看页面交换发生状况
[root@centos7 ~]# sar -w
Linux 3.10.0-1127.18.2.el7.x86_64 (centos7)  03/28/2021  _x86_64_ (1 CPU)

11:10:02 AM    proc/s   cswch/s
11:20:01 AM      0.02     19.10
11:30:01 AM      0.03     19.92
11:40:01 AM      0.02     19.45
Average:         0.02     19.49
查看I/O和传送速率的统计信息
[root@centos7 ~]# sar -b
Linux 3.10.0-1127.18.2.el7.x86_64 (centos7)  03/28/2021  _x86_64_ (1 CPU)

11:10:02 AM       tps      rtps      wtps   bread/s   bwrtn/s
11:20:01 AM      0.06      0.00      0.06      0.00      0.74
11:30:01 AM      0.03      0.00      0.03      0.00      0.40
Average:         0.05      0.00      0.05      0.00      0.57

输出字段说明

tps       #每秒钟物理设备的 I/O 传输总量                   
rtps      #每秒钟从物理设备读入的数据总量                  
wtps      #每秒钟向物理设备写入的数据总量                  
bread/s   #每秒钟从物理设备读入的数据量,单位为 块/s    
bwrtn/s   #每秒钟向物理设备写入的数据量,单位为 块/s
查看块设备
[root@CentOS7-1 ~]# sar -d 1 2
Linux 3.10.0-1127.18.2.el7.x86_64 (CentOS7-1)  01/18/2024  _x86_64_ (1 CPU)

04:42:51 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
04:42:52 AM    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:52 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:52 AM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:52 AM  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

04:42:52 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
04:42:53 AM    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:53 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:53 AM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:53 AM  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

04:42:53 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
04:42:54 AM    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:54 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:54 AM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:42:54 AM  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

输出的信息说明

tps #每秒从物理磁盘 I/O 的次数。
rd_sec/s #每秒读扇区的次数。
wr_sec/s #每秒写扇区的次数。
avgrq-sz #平均每次设备 I/O 操作的数据大小(扇区)。
avgqu-sz #磁盘请求队列的平均长度。
await    #从请求操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1 秒=1000 毫秒)。
svctm #系统处理每次请求的平均时间,不包括在请求队列中消耗的时间。
%util #I/O 请求占 CPU 的百分比,比率越大,说明越饱和。

高级功能

多系统监控

sar命令可以在多个系统之间进行分布式监控,并汇总各个系统的性能数据。用户可以使用“-A”选项来指定要监控的系统,并使用“-f”选项指定数据文件。

生成自定义报告

sar 命令可以将收集到的数据以表格或图形方式显示,并支持生成自定义报告。用户可以使用“-o”选项指定报告文件名,并使用“-f”选项指定数据文件。

报警和通知

sar命令可以配置报警和通知功能,当系统资源使用超过预设阈值时,自动发送警报或通知给相关人员。

数据导出和导入

sar 命令可以将收集到的数据导出为文件,以便在其他工具中进行进一步分析。同时,用户也可以从文件中导入数据,以进行历史数据比较或其他用途。

与其他工具集成

sar命令可以与其他系统管理工具集成,如Nagios、Zabbix等,以实现自动化监控和报警功能。

总结

总之,sar 命令是一个功能强大的监控工具,具有、报告生成、多系统监控、自定义监控选项、报警和通知、数据导出和导入以及与其他工具集成等高级功能。通过合理使用这些功能,用户可以更好地了解系统性能状况并进行相应的优化和调整。

这么牛逼的命令行工具,你确定不整一下?

 

posted @ 2024-01-06 09:45  羊脂玉净瓶  阅读(164)  评论(0)    收藏  举报