sar命令

前言

前言:sar(System Activity Repotor系统活动报告)命令是一个非常实用的命令,是由sysstat工具提供的,参考sysstat官网,用于监控系统和判断系统瓶颈, 我们在使用linux系统时,常常会遇到系统卡顿,程序卡顿,以及死机的情况,这时我们需要判断到底时因为什么原因导致的系统卡顿,比如常见的—内存不足,磁盘空间不足,cpu性能紧张,网络原因,等等,在linux系统中,分析系统负载的命令有很多,常见有:top、free、iostat、vmstat、df 等等,不同的命令有不同的特点,相比这些命令,sar命令最突出的特点是它可以看到系统较长一段时间内的数据,而不仅仅是当前这个点的数据,当然,sar命令也可以看到实时的数据,例如,下图,我们通过sar命令可以看到系统每间隔10分钟的数据变化,在末尾他还会列出这些数据的最终的平均值,默认sar命令是使用的-u选项。
iguagua
iguagua

sar命令的使用

sar命令的命令行使用格式

sar命令的用法是:sar [ 选项 ] [ <时间间隔> [ <次数> ] ]
直接使用sar命令默认是使用的sar -u选项,如下图:
iguagua
sar命令的选项和参数非常多,主要记住常用的选项,个人觉得sar命令的-u,-r,-d选项比较实用,分别是cpu,内存和磁盘的监控情况,除了u、r、d这三个选项,-f , -o 以及 -s 和 -e 选项也是比较实用的,-o选项可以将查询到的文件以二进制形式保存到一个文件里,sar -f 则可以浏览这个二进制文件,如:

[root@slfri ~]# sar -r 1 1 -o a.txt
Linux 3.10.0-1160.el7.x86_64 (slfri) 	2023年04月17日 	_x86_64_	(1 CPU)

16时47分10秒 kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
16时47分11秒    302204    333024     52.43      2164    156268    269684      9.87    101396    105296        28
平均时间:    302204    333024     52.43      2164    156268    269684      9.87    101396    105296        28
[root@slfri ~]# sar -f a.txt 
Linux 3.10.0-1160.el7.x86_64 (slfri) 	2023年04月17日 	_x86_64_	(1 CPU)

16时47分10秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
16时47分11秒     all      0.00      0.00      1.00      0.00      0.00     99.00
平均时间:     all      0.00      0.00      1.00      0.00      0.00     99.00

-s 和 -e 选项分别是指定开始时间和结束时间,用于看一段时间的指标,如:

sar -u -s 13:00:00 -e 13:30:00
Linux 3.10.0-514.el7.x86_64 (ecs-c883-0425166.novalocal) 	2023年04月17日 	_x86_64_	(4 CPU)

13时00分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
13时10分01秒     all     40.97      0.00      0.34      0.54      0.00     58.15
13时20分01秒     all     41.30      0.00      0.35      0.49      0.00     57.86
平均时间:     all     41.13      0.00      0.34      0.52      0.00     58.01

sar命令的选项后面加上时间间隔和次数的参数就是实时显示,如下面的命令就是每个2秒记录一次内存的使用情况,一共记录两次:

sar -r  2 2
Linux 3.10.0-1062.el7.x86_64 (jirab) 	04/17/2023 	_x86_64_	(4 CPU)

03:04:12 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
03:04:14 PM    136204   7872136     98.30    150720   2970200   4525048     37.08   5063552   2492972        64
03:04:16 PM    136180   7872160     98.30    150720   2970200   4525048     37.08   5063688   2492972        68
Average:       136192   7872148     98.30    150720   2970200   4525048     37.08   5063620   2492972        66

后面的选项,时间间隔,次数都可以省略,不加这两个参数就是从 /var/log/sa/sa17 这个文件读取今天0点到现在的所有内容,每隔十分钟记录一次,sa17这个数字是当前的日期,由系统自带的定时任务 /etc/cron.d/sysstat 指定,
在这里插入图片描述

sa1命令是sysstat工具包中的一部分,在该定时任务中,最后的 “1 1” 是指每次执行 sa1 命令时,传递给该命令的两个参数,分别为采样间隔和采样次数。在该例子中,sa1 命令会每分钟执行一次,并且采样间隔为1秒,总共采样1次。
这意味着系统每10分钟记录一次系统活动情况,每次记录持续1秒钟,共记录1次,这些记录将存储在 /var/log/sa 目录下,以便其他工具(例如 sar)可以使用它们来生成系统活动情况的报告。

/usr/lib64/sa/sa1和/usr/lib64/sa/sa2有什么不一样?

/usr/lib64/sa/sa1和/usr/lib64/sa/sa2都是系统性能统计工具的一部分(sysstat),但它们的作用略有不同:
sa1: 默认情况下每10分钟收集一次数据,它负责收集系统性能统计信息,并将其存储到/var/log/sa/saXX文件中,XX代表当天的日期。sa1适用于大量运行数据的系统。
sa2: 默认情况下每天晚上23点53分运行,sa2定期地汇总前24小时或特定日期的性能数据,并将汇总的数据存储到/var/log/sa/sarXX文件中,XX代表日期(如:sar6代表6号)。Sa2适用于整合系统的性能数据以进行长期分析。
因此,sa1和sa2都是sysstat工具中不可或缺的部分,通过这两个工具,管理员可以更好地监控和调整系统性能,从而提高系统的性能和可靠性。
要查看sa2汇总的数据,可以使用sar命令,具体命令格式为:
sar -f /var/log/sa/sarXX
其中XX代表日期,例如要查看6号的汇总数据,命令为:
sar -f /var/log/sa/sar06
执行后,将输出所选日期的系统性能数据,包括CPU占用率、内存使用率、磁盘IO等。

除了上面讲的u d r f o 等选项,sar命令还有一个很强到的选项 -n ,不过笔者还不太会使用,后面可以查看很多内容,如:sar - n DEV/ICMP,可以查看网络接口,ICMP流量等等,还可以结合-s 和 -e 选项一起使用,查看一段时间的参数,如:

sar -n DEV -s 09:00:00 -e 09:36:36
Linux 3.10.0-514.el7.x86_64 (ecs-c883-0425166.novalocal) 	2023年04月17日 	_x86_64_	(4 CPU)

09时00分02秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
09时10分01秒      eth0     33.81     41.68     12.57     54.89      0.00      0.00      0.00
09时10分01秒        lo    551.30    551.30    134.13    134.13      0.00      0.00      0.00
09时20分01秒      eth0     39.92     50.17     14.64     73.16      0.00      0.00      0.00
09时20分01秒        lo    509.23    509.23    149.46    149.46      0.00      0.00      0.00
09时30分01秒      eth0     26.51     29.73     11.07     32.16      0.00      0.00      0.00
09时30分01秒        lo    481.13    481.13    120.78    120.78      0.00      0.00      0.00
平均时间:      eth0     33.41     40.52     12.76     53.40      0.00      0.00      0.00
平均时间:        lo    513.87    513.87    134.79    134.79      0.00      0.00      0.00

命令输出的结果中,各个参数的含义

使用的 sar -n DEV -s 09:00:00 -e 09:36:36 命令用于报告指定时间范围内的网络接口统计信息。报告中显示的参数表示以下内容:
IFACE:     网络接口名称。
rxpck/s:   每秒接收的数据包数量。
txpck/s:   每秒发送的数据包数量。
rxkB/s:    每秒接收的数据量(以 KB 为单位)。
txkB/s:    每秒发送的数据量(以 KB 为单位)。
rxcmp/s:   每秒接收的压缩数据包数量。
txcmp/s:   每秒发送的压缩数据包数量。
rxmcst/s:  每秒接收的多播数据包数量。
通过这些参数,您可以了解网络接口在指定时间范围内的流量和使用情况。例如,您可以查看网络接口的流入和流出流量

如何通过sar命令的输出结果判断卡顿原因

如sar -u 主要看%idle值 即 “cpu的空限值”
sar -r 最好结合free -h一起查看,%memused kbbuffers kbcached %commit,以及avalible等值都需要关注
sar-d 主要看 %util值,即磁盘的读写繁忙程度
对于sar -n 监控网络流量这个参数,笔者还不甚解,后面会接着更新相关的内容
要判断一个卡顿的产生,有时需要综合几个参数一起判断。任重而道远,这篇文章主要是为了学习sar命令的基础知识,sar命令有很多参数,这里还没有列举完,笔者也还在学习,sar命令还可以结合其他命令,如stress,ab等命令做压力测试,以便更好的判断瓶颈,这里可以参考另一篇文章,这篇文章末尾解释了如何使用ab,stress等命令,至于具体如何分析瓶颈没有提到,待学习更新

附:有时使用sar命令可能会提示文件或目录不存在,这个时候检查一下对应的文件有没有,没有的话手工创建一下,或者使用-o选项指定一下文件,再一个是检查sysstat状态是否正常,systemctl status sysstat,因为sa1和sa2等工具都是sysstat工具包提供的

扩展

sar命令的全部参数

用法: sar [ 选项 ] [ <时间间隔> [ <次数> ] ]
主选项和报告:
-b I/O 和传输速率信息状况
-B 分页状况
-d 块设备状况
-F [ MOUNT ]
Filesystems statistics
-H 交换空间利用率
-I { <中断> | SUM | ALL | XALL }
中断信息状况
-m { <关键词> [,…] | ALL }
电源管理统计信息
关键字:
CPU CPU 频率
FAN 风扇速度
\t\tFREQ\tCPU 平均时钟频率
IN 输入电压
TEMP 设备温度
\t\tUSB\t连接的USB 设备
-n { <关键词> [,…] | ALL }
网络统计信息
关键词可以是:
DEV 网卡
EDEV 网卡 (错误)
NFS NFS 客户端
NFSD NFS 服务器
SOCK Sockets (套接字) (v4)
IP IP 流 (v4)
EIP IP 流 (v4) (错误)
ICMP ICMP 流 (v4)
EICMP ICMP 流 (v4) (错误)
TCP TCP 流 (v4)
ETCP TCP 流 (v4) (错误)
UDP UDP 流 (v4)
SOCK6 Sockets (套接字) (v6)
IP6 IP 流 (v6)
EIP6 IP 流 (v6) (错误)
ICMP6 ICMP 流 (v6)
EICMP6 ICMP 流 (v6) (错误)
UDP6 UDP 流 (v6)
-q 队列长度和平均负载
-r 内存利用率
-R 内存状况
-S 交换空间利用率
-u [ ALL ]
CPU 利用率
-v Kernel table 状况
-w 任务创建与系统转换统计信息
-W 交换信息
-y TTY 设备状况

sar命令的-v选项中,file-nr表示文件句柄(file handle)的使用数量,inode-nr表示索引节点句柄(inode handle)的使用数量1。文件句柄是指向打开文件的指针,而索引节点句柄是指向索引节点的指针。索引节点是文件系统中用于存储文件元数据(如所有者、权限、创建时间等)的数据结构

sar -n 命令用于报告网络统计信息。它可以与不同的关键字一起使用,以报告不同类型的网络数据。例如:
sar -n DEV 显示网络接口的统计信息,包括每个接口的接收和发送的数据包数量。
sar -n EDEV 显示有关网络接口错误的统计信息。
sar -n NFS 显示有关 NFS 客户端活动的统计信息。
sar -n NFSD 显示有关 NFS 服务器活动的统计信息。
sar -n SOCK 显示有关套接字使用情况的统计信息。
sar -n IP 显示有关 IP 流量的统计信息。
sar -n EIP 显示有关 IP 错误的统计信息。
sar -n ICMP 显示有关 ICMP 流量的统计信息。
sar -n EICMP 显示有关 ICMP 错误的统计信息。
sar -n TCP 显示有关 TCP 流量的统计信息。
sar -n ETCP 显示有关 TCP 错误的统计信息。
sar -n UDP 显示有关 UDP 流量的统计信息。

sar -r 命令用于报告内存使用情况。报告中显示的参数表示以下内容:
kbmemfree:可用内存量(以 KB 为单位)。
kbmemused:已使用的内存量(以 KB 为单位)。
%memused:内存使用率百分比。
kbbuffers:用于缓冲区的内存量(以 KB 为单位)。
kbcached:用于缓存的内存量(以 KB 为单位)。
kbcommit:提交给应用程序使用的内存量(以 KB 为单位)。
%commit:提交给应用程序使用的内存量占总内存量的百分比。
kbactive:活动内存量(以 KB 为单位)。这是最近被访问过的内存页的数量。这些页通常包含应用程序和用户数据。
kbinact:非活动内存量(以 KB 为单位)。这是最近未被访问过的内存页的数量。这些页可能包含不再需要的数据,可以被回收以释放内存。
kbdirty:脏页数量(以 KB 为单位)。脏页是已修改但尚未写回磁盘的内存页。它们需要在回收内存之前写回磁盘。
通过这些参数,可以了解系统的内存使用情况,包括可用内存量、已使用内存量、缓冲区和缓存使用情况等。

==/var/log/sa/目录下的sa文件和sar文件有什么不同

saXX文件包含了操作系统在某一天内的系统活动数据,包括CPU利用率、内存利用率、磁盘I/O等等。是二进制文件
而sarXX文件则是对saXX文件的数据进行了处理和分析,生成了一些汇总和统计的报告,比如每小时、每天的CPU和内存利用率、磁盘I/O等,方便管理员进行系统性能排查和优化。是文本文件
所以说,saXX文件是原始的系统活动数据记录文件,sarXX文件则是根据saXX文件生成的报告文件。

sysstat支持很多工具包,其中包括sar, sadf, mpstat, iostat, tapestat, pidstat, cifsiostat and sa tools,
它们各自的功能如下:

sar:收集、报告和保存系统活动信息。
sadf:以多种格式(例如 CSV、XML、JSON 等) 显示 sar 命令的输出。
iostat:报告 CPU 统计信息和输入/输出统计信息,用于设备和分区。
mpstat:报告关于各个可用 CPU 的统计信息。
pidstat:报告关于各个进程的统计信息。
tapestat:报告磁带驱动器统计信息。
cifsiostat:报告 CIFS 文件系统统计信息。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: sar(System Activity Reporter)命令是一个系统性能分析工具,它可以用来监控系统的各项指标,如CPU、内存、磁盘、网络等。sar命令通常需要与其他工具配合使用,如awk、sed、grep等,以便对sar输出的数据进行进一步处理。 sar命令的基本用法如下: ``` sar [options] [interval [count]] ``` 其中,options为sar命令的选项,interval为每次统计的时间间隔,count为统计的次数。如果不指定interval和count,则默认每隔1秒钟输出一次统计数据,直到用户手动中断为止。 以下是一些常用的sar命令选项: - -u:显示CPU使用情况 - -r:显示内存使用情况 - -b:显示磁盘I/O使用情况 - -n:显示网络使用情况 - -q:显示系统负载情况 例如,要查看系统CPU使用情况,可以使用以下命令: ``` sar -u 1 5 ``` 该命令将会每隔1秒钟输出一次CPU使用情况,共输出5次。输出结果包括CPU的各项指标,如用户时间、系统时间、空闲时间、等待I/O时间、硬件中断时间、软件中断时间等。 sar命令还可以将输出数据保存到文件中,以供后续分析。例如,要将CPU使用情况输出保存到文件中,可以使用以下命令: ``` sar -u 1 5 > cpu.log ``` 该命令将会将CPU使用情况输出到cpu.log文件中。保存的数据可以使用其他工具进行进一步处理和分析,如awk、sed、grep等。 ### 回答2: sar是一个在Linux系统中常用的性能收集和分析工具。它能够收集并报告系统的各种性能相关的数据,如CPU使用率、内存使用情况、磁盘和网络活动等。 sar命令的基本用法是通过在终端中输入"sar",然后加上相应的选项来获取不同类型的数据。常用的选项包括"-u"用于获取CPU使用率的数据,"-r"用于获取内存使用情况的数据,"-d"用于获取磁盘活动的数据,"-n"用于获取网络活动的数据等。 通过sar命令收集到的数据可以用来分析系统的性能瓶颈和优化调整。比如,可以通过查看CPU使用率的数据来确定是否存在CPU过载的问题,通过查看内存使用情况的数据来确定是否需要增加内存容量,通过查看磁盘活动的数据来确定磁盘性能是否足够等。 sar命令还支持将收集到的数据保存到文件中,以便日后进行分析。可以通过"-o"选项指定保存文件的路径,通过"-f"选项指定读取文件的路径,然后使用"-d"等选项来获取相应的数据并进行分析。 总之,sar命令是一个非常实用的性能监测工具,它能够帮助我们了解系统的运行状况,定位问题并进行优化。通过合理利用sar命令,我们可以更好地管理和维护Linux系统。 ### 回答3: sar命令是一个系统性能监测工具,用于收集和报告系统资源使用情况。它可以记录CPU利用率、内存使用、磁盘活动、网络流量和其他关键系统指标。sar命令通过对系统关键指标进行监测和记录,帮助管理员识别系统中的瓶颈和性能问题。 使用sar命令可以查看系统在给定时间段内的性能情况。可以指定特定时间间隔和持续时间以收集所需的数据。sar命令的输出可在终端以文本格式显示,也可以以二进制文件的形式进行存储,以供稍后分析和查看。 sar命令提供了各种选项,可以根据不同的需求来显示不同的系统性能数据。例如,可以使用"-u"选项来显示CPU的利用率和状态,"-r"选项用于显示内存的使用情况,"-b"选项用于显示磁盘活动等等。 此外,sar命令还可以生成报告和图表,以更直观地显示系统性能数据。通过加入"-o"选项,可以将数据保存到指定的文件中,然后使用sar命令的"-f"选项来分析这些数据。 总之,sar命令是一个功能强大的系统性能监测工具,可以帮助管理员实时监控和分析系统性能,及时解决性能问题,从而提高系统的稳定性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值