欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > Sysstat学习

Sysstat学习

2025/4/19 3:48:31 来源:https://blog.csdn.net/lianghudream/article/details/147315304  浏览:    关键词:Sysstat学习

Sysstat(System Statistics)是一个功能强大的开源工具集,用于监控 Linux 系统的性能和资源使用情况,特别适用于 Ubuntu 系统。它包含多个工具,如 sariostatmpstatpidstat,帮助系统管理员实时或历史地分析 CPU、内存、磁盘 I/O、网络等资源的使用情况。本文将以 Ubuntu 系统为重点,从入门到精通,详细解析 Sysstat 的安装、配置、核心工具及其使用方法,并通过具体示例展示如何利用 Sysstat 进行系统性能监控。


1. Sysstat 简介

Sysstat 是一个轻量级、跨平台的性能监控工具集,广泛用于 Linux 系统(如 Ubuntu)。它通过收集系统活动数据,提供详细的性能统计信息,帮助优化系统性能、诊断问题。主要特点包括:

  • 多工具支持:包含 sar(系统活动报告)、iostat(I/O 统计)、mpstat(CPU 统计)、pidstat(进程统计)等。
  • 实时与历史数据:支持实时监控和历史数据分析。
  • 灵活输出格式:支持 CSV、XML、JSON 等格式,便于数据可视化。
  • 开源免费:基于 GPL v2 许可,社区活跃。

Sysstat 是 Ubuntu 系统管理员和开发者的必备工具,适用于服务器性能监控、问题排查和容量规划。


2. 安装 Sysstat on Ubuntu

以下是在 Ubuntu 系统上安装 Sysstat 的详细步骤。

2.1 使用 APT 安装

Ubuntu 的默认软件仓库包含 Sysstat,安装过程简单:

  1. 更新软件包索引

    sudo apt update
    

    确保系统软件包列表是最新的。

  2. 安装 Sysstat

    sudo apt install sysstat
    

    这将安装 Sysstat 及其依赖项。

  3. 验证安装
    检查 Sysstat 版本:

    sar -V
    

    输出示例:

    sysstat version 12.6.0
    (C) Sebastien Godard (sysstat <at> orange.fr)
    

    确认其他工具:

    iostat -V
    mpstat -V
    pidstat -V
    

2.2 从源码安装(可选)

若需要最新版本,可从 Sysstat GitHub 下载源码。以下是步骤(以 2025 年最新版本 12.7.5 为例,检查 Sysstat GitHub 获取最新版本):

  1. 安装依赖
    sudo apt install build-essential
    
  2. 下载源码
    wget https://github.com/sysstat/sysstat/archive/refs/tags/v12.7.5.tar.gz
    tar -xzf v12.7.5.tar.gz
    cd sysstat-12.7.5
    
  3. 配置和编译
    ./configure --prefix=/usr
    make
    sudo make install
    
    • --prefix=/usr:确保二进制文件安装到 /usr/bin
  4. 验证安装
    /usr/bin/sar -V
    

2.3 启用 Sysstat 数据收集

Sysstat 默认不启用数据收集,需手动配置:

  1. 编辑配置文件

    sudo nano /etc/default/sysstat
    

    将以下行:

    ENABLED="false"
    

    改为:

    ENABLED="true"
    

    保存并退出。

  2. 启动 Sysstat 服务

    sudo systemctl enable sysstat
    sudo systemctl start sysstat
    
    • enable:设置开机自启。
    • start:立即启动服务。
  3. 验证服务状态

    sudo systemctl status sysstat
    

    输出示例:

    ● sysstat.service - sysstat performance monitoring data collectorLoaded: loaded (/lib/systemd/system/sysstat.service; enabled; vendor preset: enabled)Active: active (exited) since Thu 2025-04-17 12:00:01 UTC; 5min ago
    

    确保状态为 active (exited)

  4. 检查数据文件
    Sysstat 默认每 10 分钟收集数据,存储在 /var/log/sysstat 目录。查看文件:

    ls /var/log/sysstat
    

    数据文件以 saDD 命名(如 sa17 表示 17 日的数据)。


3. Sysstat 核心工具

Sysstat 包含多个工具,每个工具专注于特定方面的性能监控。以下是主要工具及其功能:

工具功能描述
sar系统活动报告,监控 CPU、内存、磁盘 I/O、网络等,提供实时和历史数据。
iostat报告 CPU 和 I/O 统计,分析磁盘和设备性能。
mpstat显示 CPU 使用情况,支持多核和虚拟化环境。
pidstat监控进程级别的资源使用(CPU、内存、I/O 等)。
nfsiostat监控 NFS(网络文件系统)的 I/O 性能。
cifsiostat监控 CIFS(通用互联网文件系统)的 I/O 性能。
sadc系统活动数据收集器,后台收集数据供 sar 使用。
sa1sadc 配合,定期收集数据并存储到二进制文件中。
sa2生成每日总结报告,基于 sadc 收集的数据。
sadfsar 数据转换为 CSV、XML、JSON 等格式,便于分析和可视化。

4. 核心工具使用详解(带示例)

以下通过具体示例,逐步展示如何在 Ubuntu 上使用 Sysstat 的核心工具监控系统性能。

4.1 sar:系统活动报告

sar 是 Sysstat 的核心工具,用于收集和报告系统资源使用情况。数据存储在 /var/log/sysstat/saXX 文件中。

实时监控 CPU 使用率

查看每 2 秒的 CPU 使用率,共 5 次:

sar -u 2 5

输出示例:

Linux 5.15.0-73-generic (ubuntu)    04/17/2025    _x86_64_    (4 CPU)12:00:01    CPU    %user    %nice    %system    %iowait    %steal    %idle
12:00:03    all    10.25     0.00      2.50       0.75      0.00     86.50
12:00:05    all    12.00     0.00      3.25       1.00      0.00     83.75
...
Average:    all    11.50     0.00      2.88       0.88      0.00     84.75
  • %user:用户态 CPU 使用率。
  • %system:内核态 CPU 使用率。
  • %iowait:等待 I/O 的 CPU 时间。
  • %idle:空闲 CPU 时间。
查看历史 CPU 数据

查看当天的 CPU 数据:

sar -u

查看特定日期(例如 17 日):

sar -u -f /var/log/sysstat/sa17
监控内存使用

查看内存使用情况:

sar -r 2 5

输出示例:

12:00:01    kbmemfree   kbavail   kbmemused  %memused
12:00:03    1024000    2048000    6144000     75.00
...
  • kbmemfree:空闲内存(KB)。
  • kbavail:可用内存(包括缓存)。
  • %memused:内存使用百分比。
监控磁盘 I/O

查看块设备 I/O 统计:

sar -b 2 5

输出示例:

12:00:01    tps    rtps    wtps    bread/s    bwrtn/s
12:00:03    15.50   5.25    10.25   1024.00    2048.00
...
  • tps:每秒传输次数。
  • bread/s:每秒读取的块数。
  • bwrtn/s:每秒写入的块数。

4.2 iostat:I/O 和 CPU 统计

iostat 用于监控 CPU 和磁盘 I/O 性能。

查看 CPU 和设备统计

基本用法:

iostat

输出示例:

Linux 5.15.0-73-generic (ubuntu)    04/17/2025    _x86_64_    (4 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle10.50    0.00    3.00    1.50    0.00   85.00Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              15.20       512.00      1024.00    524288    1048576
  • CPU 部分显示用户态、系统态等使用率。
  • 设备部分显示每秒传输次数(tps)、读写速度等。
实时监控磁盘 I/O

每 2 秒刷新磁盘统计:

iostat -d 2

输出示例:

Device             tps    kB_read/s    kB_wrtn/s
sda              14.50       480.00       960.00
扩展统计

显示详细 I/O 统计:

iostat -x 2

输出包括 %util(设备利用率),可用于识别磁盘瓶颈。

4.3 mpstat:CPU 统计

mpstat 显示 CPU 使用情况,支持多核环境。

查看所有 CPU 统计

基本用法:

mpstat

输出示例:

Linux 5.15.0-73-generic (ubuntu)    04/17/2025    _x86_64_    (4 CPU)12:00:01 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
12:00:01 AM  all   10.50    0.00    3.00    1.50    0.00    0.25    0.00    0.00    0.00   85.00
查看每个 CPU 核心

显示每个 CPU 核心的统计:

mpstat -P ALL 2 5

输出示例:

12:00:01 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
12:00:03 AM    0   12.00    0.00    2.50    1.00    0.00    0.00    0.00    0.00    0.00   84.50
12:00:03 AM    1    8.50    0.00    3.00    2.00    0.00    0.00    0.00    0.00    0.00   86.50
...
  • -P ALL:显示所有 CPU 核心。

4.4 pidstat:进程级统计

pidstat 监控特定进程的资源使用情况。

监控所有进程的 CPU 使用

基本用法:

pidstat

输出示例:

Linux 5.15.0-73-generic (ubuntu)    04/17/2025    _x86_64_    (4 CPU)12:00:01 AM   UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
12:00:01 AM  1000      1234   5.00    2.00    0.00    1.50    7.00     0  firefox
12:00:01 AM     0      5678   3.50    1.50    0.00    0.50    5.00     1  systemd
实时监控特定进程

监控 PID 为 1234 的进程,每 2 秒刷新:

pidstat -p 1234 2
监控进程的 I/O

查看进程的磁盘 I/O:

pidstat -d 2

输出示例:

12:00:01 AM   UID       PID    kB_rd/s    kB_wr/s    kB_ccwr/s  Command
12:00:03 AM  1000      1234     256.00     512.00       0.00    firefox

4.5 sadf:数据格式化输出

sadfsar 数据转换为 CSV、XML 或 JSON 格式,便于分析。

导出为 CSV

将当天的 CPU 数据导出为 CSV:

sadf -d /var/log/sysstat/sa17 -- -u

输出示例:

# hostname;interval;timestamp;CPU;%user;%nice;%system;%iowait;%steal;%idle
ubuntu;2;2025-04-17 12:00:03;-1;10.25;0.00;2.50;0.75;0.00;86.50
...
导出为 JSON
sadf -j /var/log/sysstat/sa17 -- -u

5. 配置 Sysstat 数据收集

Sysstat 默认每 10 分钟收集一次数据,适合大多数场景。若需更频繁或自定义收集频率,可修改配置。

5.1 修改数据收集频率

  1. 编辑 cron 配置
    Sysstat 使用 cron 定时收集数据,配置文件位于:

    sudo nano /etc/cron.d/sysstat
    

    默认配置示例:

    # Run system activity accounting tool every 10 minutes
    */10 * * * * root /usr/lib/sysstat/sa1 1 1
    

    修改为每 2 分钟收集:

    */2 * * * * root /usr/lib/sysstat/sa1 1 1
    

    保存并退出。

  2. 重启 cron 服务

    sudo systemctl restart cron
    
  3. 验证数据收集
    等待几分钟,检查新数据文件:

    ls -l /var/log/sysstat
    

5.2 调整数据保留时间

Sysstat 默认保留 7 天的数据,可通过修改 /etc/sysstat/sysstat 调整:

sudo nano /etc/sysstat/sysstat

查找 HISTORY 参数,默认值为:

HISTORY=7

改为保留 30 天:

HISTORY=30

保存并重启服务:

sudo systemctl restart sysstat

6. 示例:排查 Ubuntu 服务器性能问题

假设 Ubuntu 服务器响应缓慢,CPU 和磁盘负载高,我们使用 Sysstat 排查问题。

6.1 检查 CPU 使用率

运行:

mpstat -P ALL 2 5

输出显示 CPU 0 使用率高达 90%,其他核心正常。

6.2 定位高 CPU 进程

运行:

pidstat 2

发现 PID 1234(apache2 进程)占用大量 CPU。

6.3 检查磁盘 I/O

运行:

iostat -x 2

发现 sda%util 接近 100%,表示磁盘饱和。

6.4 定位高 I/O 进程

运行:

pidstat -d 2

确认 apache2 进程有高 kB_wr/s

6.5 分析历史数据

查看当天 CPU 和 I/O 趋势:

sar -u -f /var/log/sysstat/sa17
sar -b -f /var/log/sysstat/sa17

确认问题在高峰期(如 12:00-14:00)加剧。

6.6 解决方案

  • 优化 apache2 配置(如减少 worker 线程):
    sudo nano /etc/apache2/mods-enabled/mpm_prefork.conf
    
    调整 MaxRequestWorkers 值。
  • 升级磁盘(如从 HDD 到 SSD)。
  • 启用缓存(如 Memcached):
    sudo apt install memcached
    

6.7 验证优化效果

重启服务后,重新监控:

sar -u 2 5
iostat -x 2

确认 CPU 和磁盘负载下降。


7. 高级使用技巧

以下是一些高级用法,帮助在 Ubuntu 上更高效地使用 Sysstat。

7.1 自动化监控脚本

编写脚本定期收集数据并生成报告:

#!/bin/bash
DATE=$(date +%Y%m%d)
sadf -d /var/log/sysstat/sa${DATE:6:2} -- -u > /home/user/cpu_stats_$DATE.csv
sadf -d /var/log/sysstat/sa${DATE:6:2} -- -r > /home/user/mem_stats_$DATE.csv
sadf -d /var/log/sysstat/sa${DATE:6:2} -- -b > /home/user/io_stats_$DATE.csv
  1. 保存为 monitor_sysstat.sh,添加执行权限:
    chmod +x /home/user/monitor_sysstat.sh
    
  2. 设置 cron 定时任务:
    crontab -e
    
    添加:
    0 0 * * * /home/user/monitor_sysstat.sh
    
    每天凌晨运行脚本。

7.2 可视化数据

sadf 导出的 CSV 数据导入 Grafana 或 Excel:

  1. 安装 Grafana(可选):
    sudo apt install -y apt-transport-https software-properties-common
    sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
    sudo apt update
    sudo apt install grafana
    sudo systemctl enable grafana-server
    sudo systemctl start grafana-server
    
  2. 配置 CSV 数据源,导入 /home/user/cpu_stats_*.csv
  3. 创建仪表盘,绘制 CPU、内存、I/O 图表。

7.3 监控 NFS 或 CIFS

若 Ubuntu 服务器使用 NFS 文件系统,监控其性能:

nfsiostat 2

输出示例:

nfs_server:/mnt/nfsread:    512.00 kB/s    10.50 IOPSwrite:   1024.00 kB/s   15.25 IOPS

8. 从入门到精通的学习路径

  1. 入门
    • 安装 Sysstat,启用数据收集。
    • 掌握 sariostatmpstat 的基本用法,监控 CPU、内存、I/O。
    • 练习查看实时和历史数据。
  2. 进阶
    • 使用 pidstat 监控进程级性能。
    • 配置更频繁的数据收集,导出 CSV/JSON 数据。
    • 结合多个工具分析系统瓶颈。
  3. 精通
    • 编写自动化监控脚本,集成到运维流程。
    • 使用 Grafana 可视化数据。
    • 深入分析多核、虚拟化环境或 NFS/CIFS 的性能问题。

9. 总结

Sysstat 是一个功能全面的性能监控工具集,在 Ubuntu 上通过 sariostatmpstatpidstat 等工具,管理员可以全面了解系统的 CPU、内存、磁盘和进程性能。从安装、配置到高级使用,Sysstat 提供了灵活的监控和分析功能,适合从个人开发环境到生产服务器的各种场景。通过实践和探索,你可以熟练使用 Sysstat,从入门者成长为精通 Ubuntu 系统性能优化的专家。

如果需要更具体的配置、场景分析或集成其他工具(如 Prometheus),请提供详细信息,我可以进一步定制指导!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词