当前位置:首页>Linux>Linux 全局监控工具实战:Glances、dstat、pidstat 全面解析

Linux 全局监控工具实战:Glances、dstat、pidstat 全面解析

  • 2026-10-11 07:59:57
Linux 全局监控工具实战:Glances、dstat、pidstat 全面解析
系统性能出了问题,你第一时间会用什么工具?top 虽然经典,但信息维度有限。本文介绍三款更强大的全局监控工具 ——Glances、dstat、pidstat,帮你一屏掌握 CPU、内存、磁盘、网络、进程的全貌,快速定位性能瓶颈。

一、Glances —— 跨平台全能监控仪表盘

Glances 是一款基于 Python(psutil 库)的跨平台命令行系统监控工具,能在一个终端界面中实时展示几乎所有系统关键指标:

  • CPU 使用率与负载

  • 内存与 Swap 使用情况

  • 磁盘 I/O 速率与文件系统空间

  • 网络 I/O 收发速率

  • 消耗资源最多的进程

  • 内核统计与运行队列

Glances 每 2 秒自动刷新,且自身 CPU 消耗通常低于 2%。

1.1 安装

# CentOS / RHELyum install epel* -yyum install python-pip python-devel -yyum install glances -y# Ubuntu / Debianapt install glances# macOSbrew install glances# 通用 pip 安装(推荐,获取最新版)pip install glances

可选扩展:

# Web 页面监控(通过浏览器远程查看)pip install bottle# 硬件温度监控pip install pysensorsyum -y install lm_sensors   # CentOS

1.2 参数速查

参数作用
-t <秒>设置刷新间隔(默认 2 秒)
-s以服务器模式运行
-B <IP>绑定服务器端 IP
-c <IP>连接远程 Glances 服务器
-p <端口>设置端口(默认 61209)
-P <密码>设置连接密码
-b网络速度以 Byte/s 显示
-e显示传感器温度
-d关闭磁盘 I/O 模块
-m关闭挂载磁盘模块
-n关闭网络模块
-f <文件>输出到文件(HTML/CSV)
-C <文件>指定配置文件
-w以 Web 模式运行(浏览器访问)

1.3 颜色告警机制

Glances 用四种颜色直观标识系统状态:

颜色状态默认阈值
绿色OK,正常< 50%
蓝色CAREFUL,需关注50% ~ 70%
紫色WARNING,警告70% ~ 90%
红色CRITICAL,严重> 90%

阈值可在配置文件 /etc/glances/glances.conf 中自定义。

1.4 输出字段说明

上半部分 —— 系统概览:

区域内容
CPU用户态、系统态、空闲、等待 I/O 等占比
Load1/5/15 分钟平均负载
Mem内存总量、已用、缓存、可用
Swap交换空间使用情况

下半部分 —— 进程列表字段:

字段含义
VIRT虚拟内存大小
RES常驻物理内存
%CPUCPU 使用率
%MEM内存使用率
PID进程 ID
USER进程所有者
TIME+累计 CPU 时间
IO_R / IO_W读/写 I/O 速率
NI优先级(Nice 值)
S状态(S=睡眠, R=运行, Z=僵尸)
NAME进程名称

1.5 实战命令

# 基本使用,2 秒刷新glances -t 2# 以 Web 模式运行(浏览器访问 http://<IP>:61208)glances -w# 输出为 HTML 格式yum -y install python-jinja2glances -o HTML -f /var/www/html# 输出为 CSV 格式(便于后续分析)glances -o CSV -f /tmp/glances.csv# 服务器/客户端模式(远程监控)# 服务端glances -s -B 192.168.1.100# 客户端glances -c 192.168.1.100

1.6 Glances 交互快捷键(补充)

快捷键功能
a自动排序进程
c按 CPU 排序
m按内存排序
i按 I/O 排序
p按进程名排序
d显示/隐藏磁盘 I/O
n显示/隐藏网络
s显示/隐藏传感器
f显示/隐藏文件系统
1切换 CPU 聚合/逐核显示
h帮助
q退出

二、dstat —— 万能统计替代者

dstat 是一款用来替代 vmstat、iostat、netstat、nfsstat、ifstat 的全能系统信息统计工具。它的优势在于:

  • 彩色输出,数据一目了然

  • 支持即时刷新,实时性强

  • 模块化设计,按需组合参数

  • 可同时展示 CPU、磁盘、网络、内存、进程等多维度数据

默认行为: 直接运行 dstat 等同于 dstat -cdngy,每秒输出一行 CPU、磁盘、网络、页面、系统信息。

dstat          # 每秒一行dstat 5# 每 5 秒一行dstat 5 10# 每 5 秒一行,共 10 行

2.1 安装

# CentOS / RHELyum install dstat -y# Ubuntu / Debian(dstat 已更名为 dool)apt install dstat    # 旧版本apt install dool     # 新版本(Ubuntu 22.04+)# macOSbrew install dstat

2.2 参数分类详解

CPU 相关

参数说明
-cCPU 状态:usr(用户)、sys(系统)、idl(空闲)、wai(等待)、hiq(硬中断)、siq(软中断)
-C 0,3,total配合 -c 使用,指定显示第 0、3 颗 CPU 及总体
-l1/5/15 分钟平均负载
--snoozeCPU 时钟频率

进程相关

参数说明
-p进程状态:可运行态、不可中断睡眠态、新进程数
--proc-count当前进程总数量
-y系统中断次数(int)和上下文切换次数(csw)
-i中断状态
-I 32,35配合 -i 指定设备号查看中断
--ipcIPC 状态:消息队列、信号量、共享内存

排查思路:-p 中就绪态进程多表示 CPU 负载高(配合 -l 确认);等待态进程多表示 I/O 可能有问题(配合 -c 的 wai 列、-d 的磁盘 I/O、-g 的换页情况综合判断)。

进程资源消耗 TOP 排行

参数说明
--top-cpu最耗 CPU 的进程名和占比
--top-cpu-adv最耗 CPU 的进程名、PID、占比和读写信息
--top-cputime累计 CPU 时间最多的进程
--top-cputime-avg平均 CPU 时间最多的进程
--top-latency延迟最高的进程
--top-latencyavg平均延迟最高的进程
--top-bio最耗块 I/O 的进程(磁盘 I/O)
--top-bio-adv最耗块 I/O 的进程详细信息
--top-io最耗总 I/O 的进程(含磁盘+内存+网络)
--top-io-adv最耗总 I/O 的进程详细信息
--top-mem最耗内存的进程
--top-oom最可能被 OOM Killer 杀死的进程
--top-childwait等待子进程最多的父进程

注意:--top-io 统计的是全部 I/O(含块 I/O、内存、网络),如果要定位磁盘读写大户,应使用 --top-bio。

内存相关

参数说明
-m内存状态:used、buffers、cache、free
--vm虚拟内存:majpf(硬缺页)、minpf(软缺页)、alloc、free

换页空间相关

参数说明
-g换页活动:in(换入)、out(换出);频繁换入换出才说明内存不足
-s交换空间使用量(有使用不代表内存不足,需配合 -g 判断)
-S swap1,total配合 -s 指定具体 swap 设备

网络相关

参数说明
-n网络总收发速率
-N eth0,total配合 -n 指定网卡
--netpackets收发包数量
--socket套接字状态:tot、tcp、udp、raw、frg
--tcpTCP 连接状态:listen、established、syn、time_wait、close
--udpUDP 连接状态:listen、active
--unixUnix 域套接字状态

磁盘与文件系统

参数说明
-d磁盘 I/O 读写速率
-D sda,total配合 -d 指定磁盘设备
--freespace各文件系统使用情况
--fs打开文件数和 inode 使用数
--lock文件锁状态:posix、flock、读锁、写锁

硬件与虚拟化

参数说明
--battery电池电量(需 ACPI)
--cpufreqCPU 频率(需 ACPI)
--thermal硬件温度(需 ACPI)
--fan风扇速度(需 ACPI)
--vm-memctlVMware 内存气球状态
--vmk-hba/int/nicVMware ESX 内核统计
--vz-cpu/io/ubcOpenVZ 虚拟机统计

dstat 自身消耗监控

参数说明
--dstatdstat 的 CPU 时间消耗和延迟
--dstat-cpudstat 详细 CPU 使用
--dstat-ctxtdstat 上下文切换
--dstat-memdstat 内存使用

2.3 实战命令组合

# 综合概览(CPU + 磁盘 + 网络 + 内存 + 系统)dstat -cdnmsy# 找出 CPU 和 I/O 大户dstat -c --top-cpu --top-bio 5# 监控网络连接状态变化dstat -n --tcp--socket 3# 全面排查:CPU + 负载 + 内存 + 进程状态 + 中断dstat -clmpyi 5# 内存瓶颈排查:内存 + 换页 + Swap + 虚拟内存dstat -mgsr --vm# 输出到 CSV 文件做后续分析dstat -cdnmsy --output /tmp/dstat_report.csv 560# 定位最耗资源进程(综合)dstat --top-cpu --top-mem --top-bio --top-io

三、pidstat —— 进程级精准定位

pidstat 是 sysstat 套件的成员,专门用于监控单个进程的 CPU、内存、I/O、上下文切换等指标。与 dstat/glances 的系统全局视角不同,pidstat 能精确到进程甚至线程级别,是定位具体问题进程的利器。

3.1 安装

# CentOS / RHELyum install sysstat -y# Ubuntu / Debianapt install sysstat

3.2 基本语法

pidstat [选项] [间隔秒数] [采集次数]

3.3 参数说明

参数说明
-uCPU 使用统计(默认)
-r内存使用统计
-dI/O 使用统计
-w上下文切换统计
-t显示线程级统计
-p <PID>指定进程(ALL 表示全部)
-T { TASK \| CHILD \| ALL }TASK=独立任务, CHILD=子线程, ALL=全部
-l显示完整命令行
-ICPU 使用率除以核心数(SMP 环境)
-h单行输出,便于程序解析

3.4 输出字段详解

CPU 统计(-u,默认)

字段含义
UID用户 ID
PID进程 ID
%usr用户态 CPU 占比
%system内核态 CPU 占比
%guest虚拟机 CPU 占比
%CPU总 CPU 使用率
CPU运行该任务的处理器编号
Command命令名称

内存统计(-r)

字段含义
minflt/s每秒次要缺页错误数(不需要磁盘 I/O)
majflt/s每秒主要缺页错误数(需要磁盘加载)
VSZ虚拟内存大小(KB)
RSS常驻物理内存(KB)
%MEM物理内存使用百分比

补充:majflt/s 持续偏高通常意味着内存不足,系统频繁从磁盘换入页面,会显著拖慢性能。

I/O 统计(-d)

字段含义
kB_rd/s每秒读取 KB 数
kB_wr/s每秒写入 KB 数
kB_ccwr/s每秒取消写入 KB 数(写缓存取消)
iodelayI/O 延迟(时钟周期)

上下文切换统计(-w,补充)

字段含义
cswch/s每秒自愿上下文切换次数(进程主动让出 CPU,如等待 I/O)
nvcswch/s每秒非自愿上下文切换次数(时间片用尽被调度器强制切换)

补充: 非自愿切换(nvcswch/s)频繁通常说明 CPU 竞争激烈;自愿切换(cswch/s)频繁说明进程经常等待 I/O 或锁。

3.5 实战命令

# 查看所有进程的 CPU 使用率pidstat -u# 查看指定进程的 CPU、内存、I/O(每 3 秒一次,共 2 次)pidstat -urd -h -p 10370 3 2# 每秒输出 5 次指定进程的 I/O 统计pidstat -d -p 10370 1 5# 查看进程的线程级统计pidstat -t -p 10370# 查看所有进程的上下文切换情况pidstat -w 1 5# 查看指定进程的内存统计(每 2 秒一次)pidstat -r -p 10370 2# 全面监控:CPU + 内存 + I/O + 上下文切换pidstat -urdw -p 10370 1 10

四、实战场景:三工具协同排查(补充)

场景 1:系统变慢,不知道瓶颈在哪

第一步:Glances 全局扫描

glances

观察 CPU、内存、磁盘 I/O、网络哪个指标异常(红色/紫色区域)。

第二步:dstat 定位资源大户

# 根据 Glances 发现的瓶颈方向选择参数dstat -c --top-cpu --top-bio 3# CPU 或 I/O 瓶颈dstat -m --top-mem 3# 内存瓶颈dstat -n --top-io 3# 网络瓶颈

第三步:pidstat 精确定位

# 拿到可疑进程 PID 后,深入分析pidstat -urdw -p <PID> 1 10

场景 2:判断内存是否真的不足

# Step 1: 查看 swap 使用(有使用不代表不足)dstat -s# Step 2: 查看换页活动(频繁换入换出才是真的不足)dstat -g -s 3# Step 3: 查看哪个进程在频繁缺页pidstat -r 1 5# 关注 majflt/s 列,持续大于 0 说明该进程触发了磁盘换页

场景 3:I/O 等待高,定位磁盘 I/O 来源

# Step 1: 确认 I/O 等待dstat -c# 关注 wai 列# Step 2: 找出 I/O 大户dstat --top-bio-adv 3# Step 3: 精确分析该进程的 I/O 模式pidstat -d -p <PID> 1 10

五、三大工具对比总结

维度Glancesdstatpidstat
定位全局仪表盘多维度实时统计进程级精准监控
监控粒度系统级系统级进程/线程级
输出方式交互式 TUI / Web流式文本流式文本
数据导出CSV / HTML / APICSV文本
远程监控支持(C/S 模式 + Web)不支持不支持
适用场景日常巡检、远程监控性能趋势分析、多维关联定位具体问题进程
安装pip / 包管理器包管理器sysstat 套件

六、延伸工具推荐(补充)

工具特点
nmonIBM 出品,适合长时间采集性能数据并生成报告
atop带历史回放功能,可追溯过去某时刻的系统状态
sarsysstat 套件,按时间段统计历史性能数据
vmstat经典虚拟内存统计,dstat 的前身
iostat专注磁盘 I/O 统计,dstat 的磁盘部分更为详细
bpftop / bcc-tools基于 eBPF 的现代性能分析工具集,功能强大
Prometheus + Grafana生产环境标配的监控告警方案,适合集群级监控

Glances 看全貌,dstat 挖趋势,pidstat 定元凶 —— 三者配合使用,形成从"发现问题"到"定位根因"的完整排查链路。建议在日常运维中多加练习,逐步形成自己的性能分析方法论。

最新文章

随机文章