第84课:sar 系统活动报告
学习目标
通过本课学习,你将能够:
- 理解
sar工具的作用及其在系统监控中的优势。 - 掌握安装、配置
sysstat包并启用sar数据收集。 - 使用
sar的不同子选项来分析 CPU、内存、磁盘和网络等关键性能指标。 - 学会生成和解读
sar历史报告,用于故障回溯和趋势分析。 - 了解如何将
sar与其他监控工具结合使用。
核心概念
sa1 和 sa2)定期收集系统活动数据并存储在二进制文件中(默认位于 /var/log/sa/ 目录)。你可以随时用 sar 命令调用这些历史数据,生成清晰易读的报告。这使得它成为性能基线建立、瓶颈排查和趋势分析的绝佳工具。
关键特性:
- 持续监控: 可以设定时间间隔和次数进行实时数据采集。
- 历史回溯: 可以轻松查看过去任何一天(只要有数据)的系统状态。
- 全面性: 覆盖 CPU、内存、磁盘 I/O、网络、进程、内核等多个子系统。
- 输出格式: 数据以表格形式呈现,直观明了。
安装与配置
sar 是 sysstat 包的一部分。在大多数 Linux 发行版中,你需要先安装并启动它。
-
安装 sysstat:
# CentOS/RHEL/Fedora sudo yum install sysstat # 或 sudo dnf install sysstat # Ubuntu/Debian sudo apt update sudo apt install sysstat -
启用并启动服务: 安装后,需要启用
sysstat服务(或sa1/sa2的定时任务),它会开始定期收集数据。# 对于 systemd 系统 sudo systemctl enable sysstat sudo systemctl start sysstat启用后,系统默认每10分钟收集一次数据(
sa1),每天生成一个汇总报告(sa2)。
代码示例
以下是一些常用的 sar 命令示例。假设你已经安装并配置好了 sysstat。
示例 1:实时监控 CPU 使用率(每2秒一次,共3次)
# -u: 报告 CPU 利用率
# 2: 每2秒采样
# 3: 共采样3次
sar -u 2 3
输出示例:
14:30:01 CPU %user %nice %system %iowait %steal %idle
14:30:03 all 5.25 0.00 2.00 0.25 0.00 92.50
14:30:05 all 6.12 0.00 2.51 0.00 0.00 91.37
14:30:07 all 4.76 0.00 1.76 0.50 0.00 92.98
Average: all 5.38 0.00 2.09 0.25 0.00 92.28
示例 2:查看过去某一天的内存使用情况
# -r: 报告内存使用情况
# -f: 指定数据文件路径。`/var/log/sa/sa15` 表示15号的数据。
# 注意:文件名中的数字代表当月的几号。
sar -r -f /var/log/sa/sa15
示例 3:查看今天的磁盘I/O活动
# -d: 报告磁盘活动(块设备)
# -p: 以设备名形式显示(如 sda, sdb),更直观。
# 注意:不带 `-f` 时,默认读取当天的数据。
sar -d -p
示例 4:生成历史报告并保存为文件
你可以将任何 sar 命令的输出重定向到文件,便于分享和分析。
# 查看1号的网络统计,并保存为报告文件
sar -n DEV -f /var/log/sa/sa01 > /tmp/sar_network_report_jan01.txt
实践练习
练习 1:基础监控与分析
- 安装
sysstat包并确保服务已启动。 - 使用
sar实时监控系统 CPU 使用情况,间隔 5 秒,共采样 6 次。 - 记录平均
%idle值。根据结果,你的系统 CPU 在监控期间是忙碌还是空闲?
练习 2:历史数据分析
- 确定系统中已存在至少一天的
sar数据文件(例如,查看/var/log/sa/目录)。 - 使用
sar命令查看昨天(假设数据文件为saXX,XX 为昨天的日期)的平均内存使用情况 (-r)。报告中的%memused平均值是多少?
练习 3:综合排查(进阶)
- 假设你被告知今天上午 10:00 左右服务器响应变慢。请使用
sar命令分析今天的数据,分别检查该时间段附近的:- CPU 使用率 (
-u),关注%iowait和%system。 - 磁盘 I/O 活动 (
-d -p),关注磁盘的await(平均等待时间)。
- CPU 使用率 (
- 根据你的分析,哪个子系统最有可能是瓶颈?(注意:需要系统从今天上午开始一直收集数据)。
常见错误
-
sar: command not found或 “无法打开活动报告文件”- 错误原因:未安装
sysstat包,或服务未启动导致没有数据收集。 - 解决方法:安装
sysstat,并执行sudo systemctl start sysstat启动服务。数据需要过一段时间才会生成。
- 错误原因:未安装
-
混淆历史报告的文件名
- 错误原因:尝试查看不存在的日期数据,如
sar -f /var/log/sa/sa32(当月没有32号)。 - 解决方法:使用
ls /var/log/sa/查看实际存在的数据文件。文件命名格式为saDD(DD 为日期)和sarDD(压缩的月度报告)。
- 错误原因:尝试查看不存在的日期数据,如
-
对
%iowait的片面理解- 错误原因:认为
%iowait高一定代表磁盘慢。实际上,它表示 CPU 在等待 I/O 完成时的空闲时间百分比。如果 CPU 本身很空闲(%idle高),%iowait也会显得高,但这不一定是问题。需要结合await(磁盘等待时间)等指标综合判断。
- 错误原因:认为
-
选项混淆
- 错误原因:使用错误的选项。例如,用
-n看内存(应该是-r)。 - 解决方法:牢记常用选项:
-u(CPU),-r(MEM),-d(Disk),-n(Network)。不确定时,使用man sar查看手册。
- 错误原因:使用错误的选项。例如,用
小结
- 核心价值:
sar是 sysstat 工具包的报告器,它最大的优势在于能够提供历史性能数据,是事后分析、趋势观察和性能基线建立的利器。 - 关键操作:
- 安装启用:通过包管理器安装
sysstat并启动服务。 - 实时监控:
sar [选项] [间隔] [次数]。 - 历史报告:
sar [选项] -f /var/log/sa/saDD。
- 安装启用:通过包管理器安装
- 常用选项:
-u(CPU),-r(内存),-d(磁盘),-n DEV(网络接口流量)。 - 最佳实践:定期检查
sar报告以了解系统常态,这样当问题发生时,你能迅速通过对比历史数据发现异常。
sar 就像系统的“黑匣子”记录仪。熟练掌握它,能让你在排查复杂的性能问题时,拥有一个清晰的数据视角,而不仅仅依赖于事发时的瞬间快照。结合 vmstat、iostat 等实时监控工具,你将构建起一套完整的系统性能监控体系。
练习编辑器
rust
Loading...