sar
是 System Activity Reporter 的缩写,是一个系统性能监视工具,用于收集、报告以及分析系统的活动信息。能够收集系统各种资源的使用情况,如CPU利用率、内存使用、磁盘I/O等,并将这些信息保存在文件中,供后续分析和监视使用。
sar
能够提供关于系统资源的历史信息,对于系统性能分析和故障排除非常有用。通过预先设置的时间间隔,定期地记录系统的活动状态,并将数据保存在指定的文件中,这样就可以在需要的时候进行查看和分析。
sar
包含在 sysstat
软件包中。通过命令行可以调用 sar
监视查看资源历史数据,还可以分析和比较不同时间段的数据,从而了解系统在不同时间的性能状况。
::: hljs-center
:::
最初由 Solbourne Computer 公司开发,用于 SunOS 操作系统。随后被移植到多个 UNIX 和类 UNIX 操作系统上,包括 Linux。
sar
主要基于在系统上运行的后台守护进程,守护进程定期收集系统的性能指标数据。数据可以通过配置文件来控制收集的频率和种类。
默认情况下,sar每隔(10分钟)收集一次数据。
sar 工作流程:
/var/log/sa
目录下。sar
收集的系统统计信息包括:
sar [选项] [时间间隔] [次数]
选项
:指定要获取的性能数据,比如 -u
用于CPU使用率,-r
用于内存使用情况等。时间间隔
:表示每次采样的时间间隔。次数
:表示执行 sar 命令的次数,即采样的次数。sar
还支持许多其他选项和标志,允许你筛选特定时间段的数据、将数据保存到文件中、显示历史数据等。
-u
:显示CPU使用情况。-r
:显示内存的使用情况。-b
:显示磁盘I/O统计信息。-n
:显示网络统计信息。-q
:显示负载统计信息。-P
:显示系统中每个CPU的统计信息。-A
:显示系统所有可用的报告。此外,还可以使用以下参数:
-f
:指定历史文件分析已记录的数据。-s
和 -e
:指定开始和结束时间。-o
:将数据保存到文件中。-p
:显示指定 PID 的数据。-h
:显示帮助信息。-c
: 用于指定要发送的命令, -c ls /root
时间间隔
:表示数据收集的时间间隔。例如,-u 5
表示每5秒收集一次CPU使用情况。次数
:表示数据收集的次数。例如,-u 5 10
表示每5秒收集一次CPU使用情况,共收集10次。显示CPU使用情况:
sar -u
显示磁盘I/O统计信息:
sar -b
显示网络统计信息:
sar -n
指定时间间隔和次数:
sar -u 5 10
sar命令执行后,会显示收集的性能数据。此外,sar的输出也可以重定向到文件进行保存以供日后分析
sar -u > cpu_usage.txt
sar
,可以监视系统性能的变化,识别潜在的性能问题,并根据历史数据做出调整和优化,确保系统运行最佳状态。可以使用crontab或其他定时任务工具设置sar命令周期性地收集系统性能数据,保存到文件中进行分析。
sar命令生成报告,将性能数据整理为易读的格式。结合选项 -f
和 -o
来读取之前保存的数据文件并生成报告:
sar -f /var/log/sa/sar -n DEV > network_report.txt
sar命令收集的数据存储在指定的系统日志目录(默认 /var/log/sa/
)中。
使用sar 和 awk 结合,提取系统负载信息:
#!/bin/bash
# 收集系统活动数据
sar -q 1 5 > system_load.txt # 每秒采样一次,共采样5次,保存到文件
# 使用 awk 分析并提取数据
awk '/Average:/ {print "Average load: "$4}' system_load.txt # 提取平均负载信息
awk '/CPU/ {print "CPU idle percentage: "$8}' system_load.txt # 提取CPU空闲百分比
# 删除临时文件
rm system_load.txt
示例释义:
sar -q 1 5 > system_load.txt
命令采集系统活动数据。每秒采集一次,共采集5次,将结果保存到名为 system_load.txt
的文件中。Linux 5.4.0-70-generic (hostname) 07/10/21 _x86_64_ (4 CPU)
12:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
12:00:02 AM 1 120 0.01 0.03 0.00 0
12:00:03 AM 1 120 0.01 0.03 0.00 0
12:00:04 AM 1 120 0.01 0.03 0.00 0
12:00:05 AM 1 120 0.01 0.03 0.00 0
Average: 1 120 0.01 0.03 0.00 0
这里是每秒采集一次的系统负载情况,包括 runq-sz
(运行队列长度)、plist-sz
(进程列表长度)和 ldavg-1
、ldavg-5
、ldavg-15
(1分钟、5分钟和15分钟的平均负载)以及 blocked
(被阻塞的进程数)等信息。最后一行是这五次采样的平均值。
这些指标提供系统负载和进程等待情况的重要信息,有助于评估系统的性能和稳定性。
2. 使用 awk
命令分析 system_load.txt
文件提取所需的数据。
3. awk '/Average:/ {print "Average load: "$4}' system_load.txt
提取平均负载信息
4. awk '/CPU/ {print "CPU idle percentage: "$8}' system_load.txt
提取CPU空闲百分比。
5. 最后, rm system_load.txt
删除文件。
sar
是一款强大的系统性能监视工具,通过收集和记录系统的活动信息,展示系统在不同时间段的性能数据,帮助我们更好的了解系统的性能状况并进行问题排查。对于系统性能分析和故障排除都具有重要作用。因其提供了丰富的系统性能数据和监控能力而受到青睐。
sar
在几乎所有主流的 Linux 发行版中都有支持,并且是轻量级的监控工具,不会对系统性能造成很大负担。
参考链接:
https://github.com/sysstat/sysstat
http://pagesperso-orange.fr/sebastien.godard/
喜欢的话,请收藏+关注~
万一有趣的事还在后头呢~