程序员的知识教程库

网站首页 > 教程分享 正文

信创系统性能监控神器:sysstat 详解与实战

henian88 2025-03-29 17:46:35 教程分享 13 ℃ 0 评论

原文链接:信创系统性能监控神器:sysstat 详解与实战

今天给大家带来一篇 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 环境下进行系统性能监控、瓶颈定位和故障排查的效率和准确性。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表