今天给大家带来一篇 Linux 上 sysstat 详解 的文章。在 Linux 服务器和信创终端环境中,系统性能监控和分析 是运维人员不可或缺的技能,而 sysstat 作为强大的系统监控工具集,能够帮助我们 实时监控 CPU、内存、磁盘 I/O、网络流量等关键指标,从而优化系统性能,提高运行效率。本文将详细介绍 sysstat 的安装、核心组件及常见用法,帮助大家深入理解并高效使用这个工具!欢迎大家分享点赞,点个在看和关注吧!
sysstat 介绍
sysstat 是一组用于 收集、分析和报告系统性能 的工具,涵盖了 CPU 负载、内存使用、磁盘 I/O、网络吞吐量等 关键指标。主要包含以下工具:
sar:综合系统资源统计(CPU、内存、磁盘、网络等)
iostat:磁盘和 CPU 统计
mpstat:多核 CPU 统计
pidstat:进程级别的资源监控
nfsiostat:NFS 统计信息
tapestat:磁带设备统计(少见)
cifsiostat:CIFS(Windows 共享)统计
这些工具可以帮助系统管理员 监控服务器性能、分析瓶颈、优化资源分配。
1.更新系统源
root@pdsyw1024:~# apt update
2.安装sysstat
root@pdsyw1024:~# apt install sysstat -y
3.数据采集与日志文件
安装完成后,sysstat 通常会在系统的 /etc/cron.d/ 或 /etc/sysstat/ 中设置一些定时任务(crontab),用于周期性地收集性能数据,并保存在 /var/log/sysstat/ 或 /var/log/sa/ 目录下。
在 Debian/Ubuntu 系列中,一般在 /etc/cron.d/sysstat 可以看到类似:
root@pdsyw1024:~# cat /etc/cron.d/sysstat
\# The first element of the path is a directory where the debian-sa1
\# script is located
\#这里设置了 **环境变量** PATH,确保系统在执行定时任务时能找到 debian-sa1 脚本(即 sa1 的 Debian 版封装脚本)和其他必要命令。
PATH=/usr/lib/sysstat:/usr/sbin:/usr/sbin:/usr/bin:/sbin:/bin
\# Activity reports every 10 minutes everyday
\#每小时的特定分钟(05、15、25、35、45、55 分)执行一次 debian-sa1 1 1,做一次瞬时采样,形成大约 10 分钟一次的系统活动快照。
5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
\# Additional run at 23:59 to rotate the statistics file
\#每天 23:59 再执行一次 debian-sa1 60 2,在 23:59 和 00:00 各采一笔数据,便于对当天日志做最后收尾并和新一天的日志区分开来。
59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2
\#如果需要修改采样周期,可以修改对应的 crontab 配置。
4.sar 命令
sar(System Activity Reporter)是 sysstat 套件中最常用、功能最全面的工具之一。它可以读取当前系统的即时数据,也可以读取之前记录的日志文件,统计 CPU、内存、磁盘 I/O、网络等各方面的利用率和负载情况。
查看 CPU 利用率(默认 1 秒间隔,输出 3 次):
root@pdsyw1024:~# sar -u 1 3
-u:显示 CPU 利用率
1 3:间隔 1 秒采集一次,共采集 3 次
查看内存使用情况:
root@pdsyw1024:~# sar -r 1 3
-r:显示内存(Mem)和交换分区(Swap)的使用率
查看网络流量:
root@pdsyw1024:~# sar -n DEV 1 3
-n DEV:显示网络接口级别的流量信息
常用选项总结
-u CPU 利用率(%user, %system, %idle 等)
-r 内存与交换分区使用情况
-q 系统平均负载和进程队列
-n DEV 网络接口层面的统计(吞吐量)
-n TCP,UDP TCP/UDP 层的统计信息
-b I/O 和传输速率
-S 显示大页面(hugepage)信息
-W 显示交换(swap)相关信息
-v 显示进程、内核表、文件句柄等信息
-f file 指定日志文件
-s HH:MM:SS 开始时间
-e HH:MM:SS 结束时间
5.iostat 命令
iostat 主要用于监控 CPU 使用率 和 磁盘 I/O 使用情况,常用于分析系统中的磁盘性能瓶颈。例如查看磁盘的读写速率、IOPS、使用百分比(%util)等。
基本用法
iostat [options] [interval [count]]
interval:采样间隔(秒)
count:采样次数
# 每隔 2 秒采样一次,共采样 3 次
root@pdsyw1024:~# iostat 2 3
默认情况下,第一行的输出是自系统启动以来的平均值,后续行才是当前间隔的实际值。
常用选项
-c:仅显示 CPU 统计
-d:仅显示磁盘统计
-p [device]:显示磁盘分区信息
-x:显示扩展的磁盘 I/O 信息(包括 util, await 等关键指标)
-t:显示每个报告前的时间戳
查看扩展信息:
root@pdsyw1024:~# iostat -xd 2 3
输出示例包括:
r/s, w/s:读取/写入的请求数(每秒)
rkB/s, wkB/s:读取/写入的数据量(KB/s)
await:每次 I/O 请求从提交到完成的平均等待时间(毫秒)
svctm:平均服务时间(通常在新版本中可能被移除或合并)
%util:磁盘的繁忙度(100% 表示磁盘始终在处理 I/O,没有空闲时间)
6.mpstat 命令
mpstat 用于监控 多核 CPU 或 多处理器 (SMP) 系统中每个 CPU 核的使用率,以及中断(interrupt)等信息。
基本用法
mpstat [ -P { cpu | ALL } ] [interval [count]]
-P cpu:指定要查看的 CPU 编号(或者使用 ALL 查看所有 CPU 核)
interval、count:与前面相同,表示采样间隔和采样次数
# 每隔 2 秒采样一次,总共 3 次,查看所有 CPU 核信息
root@pdsyw1024:~# mpstat -P ALL 2 3
典型输出中会看到:
%usr:在用户空间的 CPU 使用率
%sys:在内核空间的 CPU 使用率
%idle:CPU 空闲率
以及其他列,如 %iowait、%irq、%soft、%steal 等。
7.pidstat 命令
pidstat 主要用于按 进程 (process) 粒度去查看 CPU、内存、I/O 等资源的使用情况,可以帮助我们判断哪些进程是系统瓶颈的主要来源。
基本用法
pidstat [options] [interval [count]]
CPU 使用率查看:
root@pdsyw1024:~# pidstat 1 3
每隔 1 秒查看一次,共查看 3 次,每次会输出所有进程的 CPU 使用情况(默认只显示非 0% 的进程)。
如果想查看所有进程,即使是 0% 的进程,也可以使用 -p ALL。
显示某个进程 PID 的信息:
root@pdsyw1024:~# pidstat -p 626 1 3
仅查看 PID 为 626 的进程的 CPU 使用情况。
查看 I/O 情况:
root@pdsyw1024:~# pidstat -d 1 3
-d 用于显示 I/O 统计(kB_rd/s、kB_wr/s 等)。
查看内存占用:
root@pdsyw1024:~# pidstat -r 1 3
-r 用于显示进程的内存统计(%MEM、RSS、VSZ 等)。
查看线程级统计:
root@pdsyw1024:~# pidstat -t 1 3
-t 会显示线程级别的统计信息。
8.配置与自定义
/etc/sysstat/sysstat 配置文件
root@pdsyw1024:~# vim /etc/sysstat/sysstat
root@pdsyw1024:~# grep -v "^#" /etc/sysstat/sysstat
HISTORY=7
COMPRESSAFTER=10
SADC_OPTIONS="-S DISK"
SA_DIR=/var/log/sysstat
ZIP="xz"
UMASK=0022
在一些发行版(比如 Debian/Ubuntu)中,sysstat 的全局配置可能在 /etc/sysstat/sysstat 文件中,常见配置项包括:
HISTORY=7:表示保留历史数据的天数(默认保留 7 天)。
COMPRESSAFTER=10:在数据文件生成 10 天后进行压缩。
SADC_OPTIONS:传递给 sa1、sa2 等脚本的额外参数。
9.常见使用场景与技巧
服务器异常排查:当服务器出现 CPU 飙高、磁盘 I/O 卡顿、网络流量激增等情况时,可以通过 sar 或 pidstat 等命令快速定位系统资源的使用峰值和主要消耗进程。
历史数据对比:借助 sar 历史日志,可以将前几天/几周/几个月的同一时段指标进行对比,分析性能趋势,帮助容量规划(capacity planning)。
磁盘 I/O 瓶颈识别:利用 iostat -x 可以查看磁盘的 %util、await、svctm 等指标。当某些磁盘 %util 长期接近 100% 或者 await 很大时,说明可能存在 I/O 瓶颈。
多核 CPU 负载均衡:通过 mpstat 分析各 CPU 核的使用率,判断是否存在 CPU 负载不均衡(例如某个核心过载,而其他核心空闲)。
长时间监控:sysstat 的定时采集功能配合日志保存,可以帮助进行 24x7 的长期监控,并在出现故障后回溯事发时段的系统资源情况。
与图形化工具结合:有些第三方工具(如 RRDtool、Grafana 等)可以定期读取 sar 或 sadf 输出数据,做成可视化图表,方便对资源指标进行图形分析。
通过熟练掌握 sysstat 提供的这些命令以及如何查看/解析它们的输出,可以大幅提升在 Linux 环境下进行系统性能监控、瓶颈定位和故障排查的效率和准确性。
本文暂时没有评论,来添加一个吧(●'◡'●)