当前位置: 首页 > news >正文

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常用命令速查表


SarSystem Activity Reporter)是 Linux 系统性能监控的核心工具,属于 sysstat软件包,能够实时或回溯分析 CPU、内存、磁盘 I/O、网络等系统资源的使用情况。以下是其核心功能与使用技巧。

topvmstat 等实时工具不同,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

这是 sysstatcron 任务配置文件,定义了 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/sysstatsysstat主配置文件,控制服务行为。

示例(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 小 ≠ 内存不足,应关注 %memusedsar -S(Swap 使用)。


✅ 3. 交换分区使用(-S)

sar -S  # 查看 Swap 使用

输出:

  • kbswpfree:空闲 Swap
  • kbswpused:已用 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:每秒读取 KB
  • bwrtn/s:每秒写入 KB

-d 输出(需启用 --io-stats):

  • DEV:设备名
  • tps:每秒 I/O 次数
  • rkB/swkB/s:读写带宽
  • %util:设备利用率(>80% 表示瓶颈

🔧 配置:确保 /etc/cron.d/sysstatSADC_OPTIONS 包含 -D 以启用设备统计。


✅ 5. 网络接口(-n)

# 查看网络接口统计
sar -n DEV 2 5    # 接口流量
sar -n SOCK       # 套接字使用
sar -n TCP        # TCP 连接状态
sar -n ETCP       # TCP 错误

-n DEV 输出:

  • IFACE:接口名
  • rxpck/stxpck/s:每秒收发包数
  • rxkB/stxkB/s:每秒收发 KB
  • %ifutil:接口利用率(全双工可能 >100%)

📊 用途:排查网络拥塞、DDoS、连接泄漏。


✅ 6. 负载与进程(-q, -w)

# 查看系统负载
sar -q# 查看进程与线程创建
sar -w

-q 输出:

  • runq-sz:运行队列长度
  • %runocc:运行队列占用百分比
  • ldavg-1ldavg-5ldavg-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
http://www.dtcms.com/a/335305.html

相关文章:

  • Effective C++ 条款45:运用成员函数模板接受所有兼容类型
  • Day2--滑动窗口与双指针--2090. 半径为 k 的子数组平均值,2379. 得到 K 个黑块的最少涂色次数,2841. 几乎唯一子数组的最大和
  • Linux软件编程:线程间通信
  • 【FreeRTOS】队列集
  • MySQL 插入数据提示字段超出范围?一招解决 DECIMAL 类型踩坑
  • 第三十七天(js前端数据加密和混淆)
  • Fixture Caliper 工具
  • GRPO(Group Relative Policy Optimization)公式速览
  • Scala面试题及详细答案100道(11-20)-- 函数式编程基础
  • 嵌入式软件架构设计之九: 双机通信之通信方式
  • 排列与组合
  • 超详细yolov8/11-obb旋转框全流程概述:配置环境、数据标注、训练、验证/预测、onnx部署(c++/python)详解
  • STM32标准库学习笔记
  • MM-Spatial和Spatial-MLLM论文解读
  • 【力扣-多数元素 JAVA/Python】
  • CD4+ T细胞激活区分抗PD-L1联合抗CTLA4疗法与单药抗PD-L1治疗的响应差异-空间最近邻分析
  • 民法学学习笔记(个人向) Part.5
  • 【最后203篇系列】032 OpenAI格式调用多模型实验
  • 39.离散化与哈希
  • 数据结构:二叉树的遍历 (Binary Tree Traversals)
  • 杂记 03
  • v-scale-scree: 根据屏幕尺寸缩放内容
  • 基于Python的电影评论数据分析系统 Python+Django+Vue.js
  • 防御保护12-14
  • tmux常用命令
  • Flamingo
  • KingbaseES主备读写分离集群安装教程
  • 字节数据流
  • 北汽新能源半年报:双品牌战略拉动销量增长,多元布局促进转化
  • PIDGen!DecodeProdKey函数分析之四个断点