玩 Linux 系统的,都应该知道想要玩转它,就得必须玩转 Linux 的小黑框,简单来说就是必须搞懂 Linux 的常用命令!
所以,完全搞懂一个命令及其参数的用法,你会发现它是非常强大且牛逼的,Linux 系统就有这么一个命令:sar,功能非常强大且牛逼,但是,很多人都没能完全搞懂它。
今天,民工哥就和大家一起来聊一聊这个强大且牛掰的命令:sar。
简介
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 命令是一个功能强大的监控工具,具有、报告生成、多系统监控、自定义监控选项、报警和通知、数据导出和导入以及与其他工具集成等高级功能。通过合理使用这些功能,用户可以更好地了解系统性能状况并进行相应的优化和调整。