84·系统监控与调优进阶

sar 系统活动报告

sarsysstat

第84课:sar 系统活动报告

学习目标

通过本课学习,你将能够:

  1. 理解 sar 工具的作用及其在系统监控中的优势。
  2. 掌握安装、配置 sysstat 包并启用 sar 数据收集。
  3. 使用 sar 的不同子选项来分析 CPU、内存、磁盘和网络等关键性能指标。
  4. 学会生成和解读 sar 历史报告,用于故障回溯和趋势分析。
  5. 了解如何将 sar 与其他监控工具结合使用。

核心概念

sa1sa2)定期收集系统活动数据并存储在二进制文件中(默认位于 /var/log/sa/ 目录)。你可以随时用 sar 命令调用这些历史数据,生成清晰易读的报告。这使得它成为性能基线建立、瓶颈排查和趋势分析的绝佳工具。

关键特性:

  • 持续监控: 可以设定时间间隔和次数进行实时数据采集。
  • 历史回溯: 可以轻松查看过去任何一天(只要有数据)的系统状态。
  • 全面性: 覆盖 CPU、内存、磁盘 I/O、网络、进程、内核等多个子系统。
  • 输出格式: 数据以表格形式呈现,直观明了。

安装与配置

sarsysstat 包的一部分。在大多数 Linux 发行版中,你需要先安装并启动它。

  1. 安装 sysstat:

    # CentOS/RHEL/Fedora
    sudo yum install sysstat
    # 或
    sudo dnf install sysstat
    
    # Ubuntu/Debian
    sudo apt update
    sudo apt install sysstat
    
  2. 启用并启动服务: 安装后,需要启用 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:基础监控与分析

  1. 安装 sysstat 包并确保服务已启动。
  2. 使用 sar 实时监控系统 CPU 使用情况,间隔 5 秒,共采样 6 次。
  3. 记录平均 %idle 值。根据结果,你的系统 CPU 在监控期间是忙碌还是空闲?

练习 2:历史数据分析

  1. 确定系统中已存在至少一天的 sar 数据文件(例如,查看 /var/log/sa/ 目录)。
  2. 使用 sar 命令查看昨天(假设数据文件为 saXX,XX 为昨天的日期)的平均内存使用情况 (-r)。报告中的 %memused 平均值是多少?

练习 3:综合排查(进阶)

  1. 假设你被告知今天上午 10:00 左右服务器响应变慢。请使用 sar 命令分析今天的数据,分别检查该时间段附近的:
    • CPU 使用率 (-u),关注 %iowait%system
    • 磁盘 I/O 活动 (-d -p),关注磁盘的 await(平均等待时间)。
  2. 根据你的分析,哪个子系统最有可能是瓶颈?(注意:需要系统从今天上午开始一直收集数据)。

常见错误

  1. sar: command not found 或 “无法打开活动报告文件”

    • 错误原因:未安装 sysstat 包,或服务未启动导致没有数据收集。
    • 解决方法:安装 sysstat,并执行 sudo systemctl start sysstat 启动服务。数据需要过一段时间才会生成。
  2. 混淆历史报告的文件名

    • 错误原因:尝试查看不存在的日期数据,如 sar -f /var/log/sa/sa32(当月没有32号)。
    • 解决方法:使用 ls /var/log/sa/ 查看实际存在的数据文件。文件命名格式为 saDD(DD 为日期)和 sarDD(压缩的月度报告)。
  3. %iowait 的片面理解

    • 错误原因:认为 %iowait 高一定代表磁盘慢。实际上,它表示 CPU 在等待 I/O 完成时的空闲时间百分比。如果 CPU 本身很空闲(%idle 高),%iowait 也会显得高,但这不一定是问题。需要结合 await(磁盘等待时间)等指标综合判断。
  4. 选项混淆

    • 错误原因:使用错误的选项。例如,用 -n 看内存(应该是 -r)。
    • 解决方法:牢记常用选项:-u (CPU), -r (MEM), -d (Disk), -n (Network)。不确定时,使用 man sar 查看手册。

小结

  • 核心价值sarsysstat 工具包的报告器,它最大的优势在于能够提供历史性能数据,是事后分析、趋势观察和性能基线建立的利器。
  • 关键操作
    • 安装启用:通过包管理器安装 sysstat 并启动服务。
    • 实时监控sar [选项] [间隔] [次数]
    • 历史报告sar [选项] -f /var/log/sa/saDD
  • 常用选项-u (CPU), -r (内存), -d (磁盘), -n DEV (网络接口流量)。
  • 最佳实践:定期检查 sar 报告以了解系统常态,这样当问题发生时,你能迅速通过对比历史数据发现异常。

sar 就像系统的“黑匣子”记录仪。熟练掌握它,能让你在排查复杂的性能问题时,拥有一个清晰的数据视角,而不仅仅依赖于事发时的瞬间快照。结合 vmstatiostat 等实时监控工具,你将构建起一套完整的系统性能监控体系。

练习编辑器

rust
Loading...

继续学习

完成本课后,建议继续学习下一课「free、uptime 与负载监控」 以巩固所学知识。