Linux sar命令详细使用指南
目录
一、安装与启用
✅ 1. 安装 sysstat
✅ 2. 启用数据收集
✅ 3.核心配置文件
3.1 cron 任务配置文件
3.2 主配置文件
3.3 I/O配置文件(可选)
二、基本语法
三、常用选项与实战示例
✅ 1. CPU 使用率(-u)
✅ 2. 内存使用(-r 或 -R)
✅ 3. 交换分区使用(-S)
✅ 4. I/O 读写(-b 或 -d)
✅ 5. 网络接口(-n)
✅ 6. 负载与进程(-q, -w)
✅ 7. 队列与等待(-v)
四、高级用法
✅ 1. 查看指定时间范围
✅ 2. 生成每日报告
✅ 3. 导出数据为 CSV
✅ 4. 一次性采集并保存
✅ 5. 可视化分析(Gnuplot)
五、常见问题排查场景
六、Sar常用命令速查表
Sar
(System Activity Reporter)是 Linux 系统性能监控的核心工具,属于 sysstat
软件包,能够实时或回溯分析 CPU、内存、磁盘 I/O、网络等系统资源的使用情况。以下是其核心功能与使用技巧。
与 top
、vmstat
等实时工具不同,sar
的最大优势在于:
- ✅ 历史数据记录:可查看过去某时间段的系统状态。
- ✅ 全面性:覆盖几乎所有系统资源。
- ✅ 自动化:默认通过
cron
定时采集数据。 - ✅ 离线分析:支持导出和事后分析。
一、安装与启用
✅ 1. 安装 sysstat
# CentOS 7/8/9, RHEL
sudo yum install sysstat -y
# 或
sudo dnf install sysstat -y# Ubuntu/Debian
sudo apt install sysstat -y
✅ 2. 启用数据收集
安装后需确保 sysstat
服务已启用并运行:
# 启用并启动服务
sudo systemctl enable sysstat
sudo systemctl start sysstat
📌 数据存储路径:
默认日志文件位于/var/log/sa/
目录下:
/var/log/sa/saXX
:二进制格式的每日数据(XX 为日期,如 sa15 表示 15 号)/var/log/sa/sarXX
:文本格式的每日报告(可选生成)
✅ 3.核心配置文件
-
3.1 cron 任务配置文件
/etc/cron.d/sysstat
(或 /etc/cron.d/sysstat.cron
)
这是 sysstat
的 cron 任务配置文件,定义了 sar
数据的采集频率。
常见内容(以 CentOS/RHEL 为例):
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 -S DISK
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A
sa1
:默认每 10 分钟运行一次,采集数据并写入/var/log/sa/saXX
(二进制格式)。sa2
:每天 23:53 运行,生成文本报告/var/log/sa/sarXX
。
✅ 修改采集频率: 将
*/10
改为*/5
表示每 5 分钟采集一次。
-
3.2 主配置文件
/etc/sysconfig/sysstat
和/etc/default/sysstat
是 sysstat
的主配置文件,控制服务行为。
示例(RHEL/CentOS):/etc/sysconfig/sysstat
sar
命令默认保留 28天 的日志数据
# How long to keep log files (in days).
HISTORY=30# Whether to compress log files after 7 days.
COMPRESSAFTER=7# Whether to create activity reports.
SADC_OPTIONS="-S DISK"
示例(Ubuntu/Debian):/etc/default/sysstat
# Enable data collection: true or false
ENABLED="true"# Keep log files for 7 days
HISTORY=7# Compress logs older than 7 days
COMPRESSAFTER=7
-
3.3 I/O配置文件(可选)
/etc/sysconfig/sysstat.ioconf
(可选),用于配置 I/O 统计的详细选项,如是否监控特定设备。
二、基本语法
sar [选项] [间隔] [次数]
- 选项:指定监控的资源类型(如
-u
CPU,-r
内存)。 - 间隔:采样间隔(秒)。
- 次数:采样次数。
示例:
sar -u 2 5 # 每 2 秒采样一次,共 5 次,查看 CPU 使用率
三、常用选项与实战示例
✅ 1. CPU 使用率(-u)
# 实时查看 CPU 使用
sar -u 2 5# 查看历史数据(今天)
sar -u# 查看指定日期(如 8 月 15 日)
sar -u -f /var/log/sa/sa15
输出字段:
%user
:用户进程占用%nice
:低优先级进程%system
:内核进程%iowait
:I/O 等待%steal
:虚拟化环境下被抢占时间%idle
:空闲
🔍 重点关注
%iowait
:持续高于 10% 表示 I/O 瓶颈。
✅ 2. 内存使用(-r 或 -R)
# 查看内存使用(-r)
sar -r 2 5# 查看内存统计(-R)
sar -R
输出字段:
kbmemfree
:空闲内存(KB)kbmemused
:已用内存%memused
:内存使用百分比kbbuffers
/kbcached
:缓冲区和缓存
💡 注意:Linux 会用空闲内存做缓存,所以
kbmemfree
小 ≠ 内存不足,应关注%memused
和sar -S
(Swap 使用)。
✅ 3. 交换分区使用(-S)
sar -S # 查看 Swap 使用
输出:
kbswpfree
:空闲 Swapkbswpused
:已用 Swap%swpused
:Swap 使用率
⚠️ Swap 使用率 > 0 表示物理内存不足,应优化内存或扩容。
✅ 4. I/O 读写(-b 或 -d)
# 查看 I/O 传输速率(-b)
sar -b 2 5# 查看设备 I/O 详情(-d)
sar -d 2 5
-b
输出:
tps
:每秒传输次数(IOPS)rtps
:读操作wtps
:写操作bread/s
:每秒读取 KBbwrtn/s
:每秒写入 KB
-d
输出(需启用 --io-stats
):
DEV
:设备名tps
:每秒 I/O 次数rkB/s
、wkB/s
:读写带宽%util
:设备利用率(>80% 表示瓶颈)
🔧 配置:确保
/etc/cron.d/sysstat
中SADC_OPTIONS
包含-D
以启用设备统计。
✅ 5. 网络接口(-n)
# 查看网络接口统计
sar -n DEV 2 5 # 接口流量
sar -n SOCK # 套接字使用
sar -n TCP # TCP 连接状态
sar -n ETCP # TCP 错误
-n DEV
输出:
IFACE
:接口名rxpck/s
、txpck/s
:每秒收发包数rxkB/s
、txkB/s
:每秒收发 KB%ifutil
:接口利用率(全双工可能 >100%)
📊 用途:排查网络拥塞、DDoS、连接泄漏。
✅ 6. 负载与进程(-q, -w)
# 查看系统负载
sar -q# 查看进程与线程创建
sar -w
-q
输出:
runq-sz
:运行队列长度%runocc
:运行队列占用百分比ldavg-1
、ldavg-5
、ldavg-15
:1/5/15 分钟负载平均值
-w
输出:
proc/s
:每秒创建进程数cswch/s
:每秒上下文切换次数
🔍 上下文切换过高可能导致 CPU 效率下降。
✅ 7. 队列与等待(-v)
sar -v
输出:
dentunusd
:未使用目录项file-nr
:打开文件数inode-nr
:inode 使用pty-nr
:伪终端数
🛠 用途:排查
too many open files
错误。
四、高级用法
✅ 1. 查看指定时间范围
# 查看 sa15 文件中 10:00-11:00 的数据
sar -u -s 10:00:00 -e 11:00:00 -f /var/log/sa/sa15
-s
:开始时间-e
:结束时间
✅ 2. 生成每日报告
sysstat
默认在 /etc/cron.d/sysstat
中配置了每日报告生成:
# 查看今天 sar 报告
sar -u
# 或
sar -f /var/log/sa/sa$(date +%d)
✅ 3. 导出数据为 CSV
# 导出为逗号分隔格式
sar -u -f /var/log/sa/sa15 | grep "^[0-2]" | awk '{print $1","$4","$5","$6}' > cpu.csv
📈 可导入 Excel 或 Grafana 进行可视化。
✅ 4. 一次性采集并保存
# 立即采集 10 次,每次 1 秒,保存到自定义文件
sar -o mydata 1 10
# 查看自定义数据
sar -f mydata -u
✅ 5. 可视化分析(Gnuplot)
生成 CPU 使用率图表:
sar -u -f /var/log/sa/sa15 | awk '/^[0-9]/ {print $1,100-$NF}' > cpu_idle.dat
gnuplot -e "set terminal png;plot 'cpu_idle.dat' using 1:2 with lines" > cpu_usage.png
PS:Gnuplot 介绍
Gnuplot 是一款开源的命令行交互式科学绘图工具
yum -y install gnuplot #CentOS7 安装
五、常见问题排查场景
问题 | 使用命令 |
---|---|
CPU 高 | sar -u -f /var/log/sa/saXX |
内存不足 | sar -r -S -f /var/log/sa/saXX |
磁盘 I/O 高 | sar -d -f /var/log/sa/saXX |
网络慢 | sar -n DEV -f /var/log/sa/saXX |
负载高 | sar -q -f /var/log/sa/saXX |
频繁创建进程 | sar -w -f /var/log/sa/saXX |
六、Sar常用命令速查表
目的 | 命令 |
---|---|
CPU 使用率 | sar -u |
内存使用 | sar -r |
Swap 使用 | sar -S |
I/O 统计 | sar -b 或 sar -d |
网络流量 | sar -n DEV |
TCP 状态 | sar -n TCP |
系统负载 | sar -q |
上下文切换 | sar -w |
查看历史数据 | sar -u -f /var/log/sa/sa15 |
指定时间范围 | sar -u -s 09:00 -e 10:00 -f /var/log/sa/sa15 |