Linux sar 命令
一、什么是 sar 命令
sar(System Activity Reporter)是 Linux 系统下一个强大的性能监控工具,属于 sysstat 工具包的一部分。它能够收集、报告和保存系统的各种活动信息,包括:
- CPU 使用情况
- 内存利用率
- I/O 活动
- 网络统计
- 进程活动
- 设备负载等
1.1 sar 命令的优势
- 历史数据分析:可以查看过去任意时间点的系统状态
- 全面监控:覆盖系统各个关键性能指标
- 低开销:数据收集对系统性能影响极小
- 自动化:可以配置为定期自动收集数据
二、安装与基本配置
2.1 安装 sysstat 包
在大多数 Linux 发行版中,sar 命令需要通过安装 sysstat 包来获取:
# Ubuntu/Debian sudo apt-get install sysstat # CentOS/RHEL sudo yum install sysstat # Fedora sudo dnf install sysstat
2.2 启用数据收集
安装后需要启用数据收集服务:
实例
# 编辑配置文件
sudo vi /etc/default/sysstat
# 将 ENABLED="false" 改为
ENABLED="true"
# 重启服务
sudo systemctl restart sysstat
sudo vi /etc/default/sysstat
# 将 ENABLED="false" 改为
ENABLED="true"
# 重启服务
sudo systemctl restart sysstat
默认情况下,sar 每10分钟收集一次数据,并保存在 /var/log/sysstat/
目录下。
三、基本语法与常用参数
3.1 基本语法格式
sar [选项] [间隔时间] [次数]
3.2 常用参数说明
参数 | 说明 |
---|---|
-A | 显示所有报告 |
-u | 显示 CPU 利用率 |
-r | 显示内存使用情况 |
-b | 显示 I/O 和传输速率统计 |
-n DEV | 显示网络设备统计 |
-q | 显示系统负载和队列长度 |
-d | 显示磁盘活动 |
-P ALL | 显示每个 CPU 的统计 |
-s | 指定开始时间 |
-e | 指定结束时间 |
-f | 从指定文件读取数据 |
四、实际应用示例
4.1 实时监控 CPU 使用率
实例
# 每2秒刷新一次,共显示5次
sar -u 2 5
sar -u 2 5
输出示例:
Linux 5.4.0-91-generic (hostname) 03/15/2023 _x86_64_ (4 CPU) 10:30:01 AM CPU %user %nice %system %iowait %steal %idle 10:30:03 AM all 5.12 0.00 1.02 0.51 0.00 93.35 10:30:05 AM all 6.23 0.00 1.34 0.23 0.00 92.20
4.2 查看历史内存使用情况
实例
# 查看今天的内存使用情况
sar -r
# 查看指定日期的数据(需指定文件)
sar -r -f /var/log/sysstat/sa15 # 15号的数据
sar -r
# 查看指定日期的数据(需指定文件)
sar -r -f /var/log/sysstat/sa15 # 15号的数据
4.3 监控磁盘 I/O 活动
实例
# 监控磁盘活动,每1秒刷新,共10次
sar -d 1 10
sar -d 1 10
4.4 查看网络接口统计
实例
# 监控网络接口活动
sar -n DEV 1 5
sar -n DEV 1 5
五、高级用法与技巧
5.1 组合监控多个指标
实例
# 同时监控CPU、内存和磁盘
sar -urdb 1 5
sar -urdb 1 5
5.2 生成特定时间段的报告
实例
# 查看上午9点到10点的CPU使用情况
sar -u -s 09:00:00 -e 10:00:00
sar -u -s 09:00:00 -e 10:00:00
5.3 将输出保存到文件
实例
# 将监控结果保存到文件
sar -A 1 10 > system_report.log
sar -A 1 10 > system_report.log
5.4 监控特定CPU核心
实例
# 监控CPU0的使用情况
sar -P 0 1 5
sar -P 0 1 5
六、数据解读指南
6.1 CPU 指标解读
指标 | 含义 | 健康范围 |
---|---|---|
%user | 用户空间CPU使用率 | <70% |
%system | 内核空间CPU使用率 | <30% |
%iowait | CPU等待I/O时间 | <5% |
%idle | CPU空闲时间 | >20% |
6.2 内存指标解读
指标 | 含义 |
---|---|
kbmemfree | 空闲物理内存(KB) |
kbmemused | 已用物理内存(KB) |
%memused | 内存使用率 |
kbbuffers | 缓冲区使用的内存(KB) |
kbcached | 缓存使用的内存(KB) |
6.3 磁盘指标解读
指标 | 含义 |
---|---|
tps | 每秒传输次数 |
rd_sec/s | 每秒读取的扇区数 |
wr_sec/s | 每秒写入的扇区数 |
%util | 设备利用率 |
七、常见问题排查
7.1 CPU 瓶颈识别
如果 %user
或 %system
持续高于80%,可能表明:
- 应用程序计算密集
- 系统调用过多
- 需要优化代码或增加CPU资源
7.2 内存不足判断
当以下情况同时出现时,可能存在内存不足:
%memused
持续高于90%kbcached
值很低- 交换分区(
kbswpused
)使用量高
7.3 I/O 瓶颈识别
%iowait
高和磁盘 %util
高表明:
- 磁盘I/O成为瓶颈
- 可能需要更快的存储设备
- 或优化I/O密集型操作
点我分享笔记