找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1072

积分

0

好友

153

主题
发表于 3 天前 | 查看: 5| 回复: 0

sar(System Activity Reporter)是 sysstat 工具包中的核心组件,用于收集和报告系统性能活动信息。本指南详细介绍了在 openEuler 操作系统上安装、配置及使用 sar 命令的完整流程。

🚀 快速安装方法

方法一:使用 yum/dnf 安装(推荐)

这是最简便快捷的安装方式。

# 更新软件包索引
sudo dnf update
# 安装 sysstat 包
sudo dnf install sysstat
# 验证安装
sar -V

方法二:添加 EPEL 仓库后安装

如果默认仓库中没有 sysstat,可以尝试添加额外的软件源。

# 添加 EPEL 仓库(如果需要)
sudo dnf install epel-release
# 安装 sysstat
sudo dnf install sysstat

方法三:源码编译安装(获取最新版本)

适合需要特定版本或进行自定义编译的场景。

# 安装编译依赖
sudo dnf install -y gcc make wget git
# 下载最新源码
wget http://pagesperso-orange.fr/sebastien.godard/sysstat-12.7.2.tar.xz
# 解压并编译
tar -xf sysstat-12.7.2.tar.xz
cd sysstat-12.7.2
# 配置和编译
./configure --prefix=/usr
make
sudo make install
# 验证安装
sar -V

⚙️ 配置 sysstat 服务

安装完成后,需要进行服务配置以启用自动数据收集。

1. 启用数据收集服务

编辑配置文件,启动后台服务以定期收集系统数据。

# 编辑 sysstat 配置
sudo nano /etc/sysconfig/sysstat
# 修改关键配置(确保以下设置)
ENABLED="true"
SADC_OPTIONS="-S DISK"  # 收集磁盘统计
SA1_OPTIONS="-S DISK"   # 每10分钟收集一次
SA2_OPTIONS="-S DISK"   # 每天生成报告

# 启用并启动 sysstat 服务
sudo systemctl enable sysstat
sudo systemctl start sysstat
# 检查服务状态,确保其正常运行是后续数据收集的基础。
sudo systemctl status sysstat

2. 配置数据收集频率

数据收集依赖于系统的定时任务。

# 编辑 crontab 配置
sudo nano /etc/cron.d/sysstat
# 默认配置(通常已正确设置):
# 每10分钟运行一次
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# 每天23:53生成日报
53 23 * * * root /usr/lib64/sa/sa2 -A

🔧 验证安装和基本使用

检查安装状态

通过以下命令确认各个组件安装就绪。

# 检查软件包安装
rpm -qa | grep sysstat
# 检查服务状态
systemctl status sysstat
# 检查 sar 版本
sar -V
# 查看帮助
sar --help

基本 sar 命令使用

掌握几个核心命令,快速查看系统状态。

# 查看CPU使用情况(每秒1次,共5次)
sar -u 1 5
# 查看内存使用
sar -r 1 5
# 查看磁盘I/O
sar -b 1 5
# 查看网络统计
sar -n DEV 1 5

📊 常用 sar 命令示例

实时监控命令

用于故障排查或实时性能观察。

# CPU 监控
sar -u 1 3            # CPU使用率,每秒1次,共3次
sar -P ALL 1 3        # 每个CPU核心的详细使用情况
# 内存监控
sar -r 1 3            # 内存使用情况
sar -B 1 3            # 分页统计
sar -W 1 3            # 交换统计
# 磁盘监控
sar -d 1 3            # 磁盘活动
sar -b 1 3            # I/O和传输速率
sar -dp 1 3           # 每个块设备活动
# 网络监控
sar -n DEV 1 3        # 网络设备统计
sar -n EDEV 1 3       # 网络错误统计
sar -n TCP 1 3        # TCP统计

历史数据查询

分析过去某一时间段的系统表现。

# 查看今天的CPU历史(默认显示当天数据)
sar
# 查看指定日期的数据
sar -u -f /var/log/sa/sa10    # 查看本月10号的数据
# 查看特定时间范围
sar -u -s 09:00:00 -e 11:00:00
# 查看多日数据对比
sar -u -f /var/log/sa/sa09 -f /var/log/sa/sa10

🛠️ 高级配置和优化

自定义数据收集配置

根据监控需求调整收集项和数据保留策略。

# 创建自定义配置文件
sudo tee /etc/sysstat/sysstat.local.conf << 'EOF'
# 自定义 sysstat 配置
SADC_OPTIONS="-S DISK,XDISK,IPV6,SNMP"
SA1_OPTIONS="-S DISK"
SA2_OPTIONS=""
# 数据保留天数(默认31天)
HISTORY=30
# 压缩旧数据
COMPRESSAFTER=15
# 启用详细日志
DEBUG=0
EOF

性能数据归档脚本

定期归档历史数据,防止日志目录膨胀。

#!/bin/bash
# sysstat_archive.sh - 归档和清理旧数据
ARCHIVE_DIR="/var/log/sa/archive"
RETENTION_DAYS=90  # 保留90天

# 创建归档目录
mkdir -p $ARCHIVE_DIR
# 归档30天前的数据
find /var/log/sa -name "sa[0-9]*" -mtime +30 -exec gzip {} \;
find /var/log/sa -name "sar[0-9]*" -mtime +30 -exec gzip {} \;
# 移动归档文件
find /var/log/sa -name "*.gz" -exec mv {} $ARCHIVE_DIR/ \;
# 清理超过保留期的数据
find $ARCHIVE_DIR -name "*.gz" -mtime +$RETENTION_DAYS -delete
echo "Sysstat 数据归档完成: $(date)"

🔍 故障排除

常见问题解决

问题1:sar 命令未找到

# 检查是否安装
which sar
# 如果未找到,重新安装
sudo dnf reinstall sysstat

问题2:没有历史数据

# 检查服务是否运行
systemctl status sysstat
# 检查数据目录
ls -la /var/log/sa/
# 手动启动数据收集
sudo systemctl restart sysstat
# 等待10分钟后检查
ls -la /var/log/sa/

问题3:权限问题

# 检查目录权限
ls -ld /var/log/sa/
# 修复权限
sudo chmod 755 /var/log/sa/
sudo chown root:root /var/log/sa/

调试脚本

一个集成的检查脚本,用于快速定位问题。

#!/bin/bash
# check_sysstat.sh
echo "=== Sysstat 安装状态检查 ==="
# 检查软件包
echo "1. 检查 sysstat 包:"
rpm -qa | grep sysstat || echo "未安装"
# 检查服务状态
echo -e "\n2. 检查服务状态:"
systemctl is-active sysstat && echo "服务运行中" || echo "服务未运行"
# 检查数据文件
echo -e "\n3. 检查数据目录:"
ls -la /var/log/sa/ 2>/dev/null || echo "数据目录不存在"
# 测试 sar 命令
echo -e "\n4. 测试 sar 命令:"
if command -v sar &> /dev/null; then
    sar -u 1 1 >/dev/null 2>&1 && echo "sar 命令工作正常" || echo "sar 命令执行失败"
else
    echo "sar 命令未找到"
fi
# 检查配置
echo -e "\n5. 检查配置文件:"
if [ -f /etc/sysconfig/sysstat ]; then
    grep -v "^#" /etc/sysconfig/sysstat | grep -v "^$"
else
    echo "配置文件不存在"
fi

📈 生产环境监控配置

企业级监控配置

提高数据收集频率,获取更细粒度的性能视图。

# /etc/sysconfig/sysstat 生产环境配置
ENABLED="true"
SADC_OPTIONS="-S DISK,SNMP,INT,IPV6"
SA1_OPTIONS="-S DISK"
SA2_OPTIONS=""

# 调整收集间隔(更频繁)
# 编辑 /etc/cron.d/sysstat
# 每5分钟收集一次
*/5 * * * * root /usr/lib64/sa/sa1 1 1

性能告警脚本

结合 sar 命令实现简单的阈值告警。

#!/bin/bash
# sar_monitor.sh
THRESHOLD_CPU=80    # CPU使用率阈值%
THRESHOLD_MEM=90    # 内存使用率阈值%
THRESHOLD_DISK=85   # 磁盘使用率阈值%

# 获取当前系统状态
CPU_USAGE=$(sar -u 1 1 | awk 'NR==4 {print 100-$8}')
MEM_USAGE=$(sar -r 1 1 | awk 'NR==4 {print $4}')
DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')

# 检查并告警
if (( $(echo "$CPU_USAGE > $THRESHOLD_CPU" | bc -l) )); then
    echo "警告: CPU使用率 ${CPU_USAGE}% > ${THRESHOLD_CPU}%"
fi
if (( $(echo "$MEM_USAGE > $THRESHOLD_MEM" | bc -l) )); then
    echo "警告: 内存使用率 ${MEM_USAGE}% > ${THRESHOLD_MEM}%"
fi
if [ $DISK_USAGE -gt $THRESHOLD_DISK ]; then
    echo "警告: 磁盘使用率 ${DISK_USAGE}% > ${THRESHOLD_DISK}%"
fi

🎯 实用脚本和工具

自动安装脚本

一键完成安装和初始配置。

#!/bin/bash
# install_sar_openeuler.sh
set -e  # 遇到错误退出
echo "=== 在 openEuler 上安装 sar 命令 ==="
# 检查系统版本
source /etc/os-release
echo "系统版本: $PRETTY_NAME"
# 检查是否已安装
if command -v sar &> /dev/null; then
    echo "✅ sar 命令已安装"
    sar -V
    exit 0
fi
# 安装 sysstat
echo "安装 sysstat 包..."
if sudo dnf install -y sysstat; then
    echo "✅ sysstat 安装成功"
else
    echo "尝试添加 EPEL 仓库..."
    sudo dnf install -y epel-release
    sudo dnf install -y sysstat
fi
# 配置服务
echo "配置 sysstat 服务..."
sudo systemctl enable sysstat
sudo systemctl start sysstat
# 验证安装
if command -v sar &> /dev/null; then
    echo "✅ sar 安装成功!"
    sar -V
else
    echo "❌ 安装失败"
    exit 1
fi
echo "安装完成!等待10分钟后运行 'sar' 查看系统活动报告"

数据导出和分析脚本

将特定日期的性能数据导出为文本报告,方便存档或分析。

#!/bin/bash
# sar_export.sh
# 导出特定日期的性能数据
DATE=${1:-$(date +%d)}  # 默认今天
OUTPUT_FILE="system_report_$(date +%Y%m%d).txt"
echo "导出系统性能报告: $OUTPUT_FILE"
{
    echo "=== 系统性能报告 $(date) ==="
    echo -e "\nCPU 使用率:"
    sar -u -f /var/log/sa/sa$DATE
    echo -e "\n内存使用率:"
    sar -r -f /var/log/sa/sa$DATE
    echo -e "\n磁盘I/O:"
    sar -b -f /var/log/sa/sa$DATE
    echo -e "\n网络统计:"
    sar -n DEV -f /var/log/sa/sa$DATE
} > $OUTPUT_FILE
echo "报告已保存到: $OUTPUT_FILE"

💡 使用技巧和最佳实践

日常监控命令

快速评估系统健康状况的组合命令。

# 快速系统健康检查
sar -u 1 3 && sar -r 1 3 && sar -b 1 3
# 生成每日报告
sar -A > /tmp/daily_report_$(date +%Y%m%d).txt
# 监控特定进程(结合其他工具)
ps aux --sort=-%cpu | head -10 && sar -u 1 1

性能基准测试

在进行系统变更或应用部署前后,记录性能基线。

# 在系统负载变化时记录性能数据
#!/bin/bash
# benchmark.sh
echo "开始性能基准测试..."
sar -o /tmp/benchmark.sar 1 60 &  # 后台收集60秒数据
# 在这里运行您的测试负载
# 例如: stress --cpu 4 --timeout 30
wait
echo "基准测试完成"
echo "查看报告: sar -f /tmp/benchmark.sar"

📋 验证安装成功

安装配置完成后,请按顺序执行以下验证步骤。

# 1. 检查命令是否存在
which sar
# 2. 检查版本
sar -V
# 3. 测试实时监控
sar -u 1 3
# 4. 检查服务状态
systemctl status sysstat
# 5. 等待10分钟后检查历史数据
ls -la /var/log/sa/
sar  # 应该显示当天的性能数据

🎯 总结

安装与配置核心步骤:

  1. 使用包管理器安装:sudo dnf install sysstat
  2. 启用并启动服务:sudo systemctl enable --now sysstat
  3. 验证功能:等待10分钟后运行 sar 命令查看历史数据。
  4. 按需优化:根据实际监控需求调整 /etc/sysconfig/sysstat 中的收集频率和保留策略。

常用命令备忘录:

# 实时监控CPU
sar -u 1 5
# 查看今日历史数据
sar -f /var/log/sa/sa$(date +%d)
# 查看所有可用的统计信息
sar -A

遵循本指南,您可以在 openEuler 系统上建立起完善的 sar 性能监控体系,为系统运维和性能分析提供可靠的数据支撑。




上一篇:ARM Cortex-M程序崩溃分析:零依赖捕获调用栈的CmBacktrace实战
下一篇:Java面试高频考点解析:集合、Redis、Kafka与设计模式真题
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 20:13 , Processed in 0.128900 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表