1.dstat工具简介
dstat是一款功能强大的Linux系统资源监控工具,被誉为一款"全能的系统统计工具"。它能够实时收集并显示CPU、内存、磁盘I/O、网络流量、系统负载等多种性能指标,将所有关键数据集成在一个统一的界面中,为系统管理员提供全面的性能监控视图。
主要特点:
(1)多功能集成 - 替代vmstat、iostat、netstat、ifstat等多个传统工具
(2)实时监控 - 支持动态刷新,实时展示系统状态
(3)高度可定制 - 可根据需求选择监控的指标和输出格式
(4)彩色显示 - 默认彩色输出,数据更直观
(5)插件扩展 - 支持丰富的插件系统
2.命令语法
dstat [-afv] [options..] [delay [count]]
参数结构说明:
-afv:常用标志选项options:监控选项,用于指定要显示的统计信息delay:刷新间隔时间(秒),默认值为1秒count:刷新次数,默认值为无限次
基本用法示例:
(1)默认用法:每秒刷新,持续运行
dstat

(2)指定刷新间隔:每2秒刷新一次
dstat 2

(3)完整参数:每3秒刷新一次,总共刷新5次
dstat 3 5

3.核心选项详解
3.1 常用标志选项
选项 功能说明 等价命令 -a-cdngy-f-v-pmgdsc -D total
3.2 基础监控选项
# CPU相关
-c, --cpu # 启用CPU统计
-C 0,3,total # 监控指定CPU(0号、3号和总计)
# 磁盘I/O
-d, --disk # 启用磁盘统计
-D sda,total # 监控指定磁盘(sda和总计)
# 内存相关
-m, --mem # 启用内存统计
-s, --swap # 启用Swap交换分区统计
-g, --page # 启用内存分页统计
# 网络相关
-n, --net # 启用网络统计
-N eth0,total # 监控指定网卡(eth0和总计)
# 系统状态
-l, --load # 启用系统负载统计
-p, --proc # 启用进程统计
-y, --sys # 启用系统统计
3.3 高级监控选项
# 系统底层统计
--aio # 异步I/O统计
--fs, --filesystem # 文件系统统计
--ipc # IPC统计
--lock # 锁统计
--raw # 原始设备统计
# 网络协议统计
--socket # 套接字统计
--tcp # TCP协议统计
--udp # UDP协议统计
--unix # Unix域套接字统计
# 系统内核统计
--vm # 虚拟内存统计
3.4 显示控制选项
# 输出格式控制
--bits # 以bit为单位显示字节值
--float # 强制显示浮点数值
--integer # 强制显示整数值
# 界面显示控制
--bw, --blackonwhite # 为白色背景终端调整颜色
--nocolor # 禁用颜色(隐含--noupdate)
--noheaders # 禁用重复的标题行
--noupdate # 禁用中间更新
# 输出到文件
--output filename.csv # 将CSV格式输出写入文件
--profile # 退出时显示性能分析统计
4.常用监控示例
(1)示例1:基础系统监控
监控CPU、磁盘、网络、内存分页和系统负载:
dstat -cdngy

(2)示例2:磁盘I/O深度监控
监控指定磁盘并显示详细信息
dstat -d -D sda,sdb --disk-util
[root@yyzcdb81 ~]# dstat -d -D sda,sdb --disk-util
--dsk/sda-----dsk/sdb-- sda--sdb-
read writ: read writ|util:util
1552B 2538B:1420B 1224B|0.02:0.02
0 0 : 0 0 | 0: 0
0 0 : 0 0 | 0: 0
0 0 : 0 12k| 0:0.10
0 0 : 0 0 | 0: 0
0 0 : 0 0 | 0: 0
0 0 : 0 0 | 0: 0
0 0 : 0 0 | 0: 0
0 0 : 0 0 | 0: 0^C
[root@yyzcdb81 ~]#

输出字段说明:
dsk/sda:sda磁盘的读写 dsk/sdb: sdb磁盘的读写 util: 磁盘利用率百分比
(3)示例3:网络性能监控
监控指定网卡的网络流量
[root@yyzcdb81 ~]# dstat -n -N esn33,total --socket --tcp
-net/total- ------sockets------ ----tcp-sockets----
recv send|tot tcp udp raw frg|lis act syn tim clo
0 0 | 1 10 6 0 0| 18 3 0 0 0
60B 634B| 1 10 6 0 0| 18 3 0 0 0
60B 282B| 1 10 6 0 0| 18 3 0 0 0
60B 282B| 1 10 6 0 0| 18 3 0 0 0
60B 282B| 1 10 6 0 0| 18 3 0 0 0
60B 282B| 1 10 6 0 0| 18 3 0 0 0
60B 282B| 1 10 6 0 0| 18 3 0 0 0
60B 282B| 1 10 6 0 0| 18 3 0 0 0
60B 282B| 1 10 6 0 0| 18 3 0 0 0^C
[root@yyzcdb81 ~]#

可监控的TCP状态:
tcp-lis: 监听状态的TCP连接 tcp-act: 活跃状态的TCP连接 tcp-syn: SYN状态的连接 tcp-tim: TIME_WAIT状态的连接
(4)示例4:内存与进程监控
监控内存使用和进程状态
dstat -cms -p --top-cpu --top-mem

显示最耗资源的进程:
most-expensive: cpu process | memory process
(5)示例5:实时综合监控面板
创建全面的系统监控面板:下面命令同时显示时间戳、CPU、内存、磁盘、网络、Swap等核心指标,并深入监控异步I/O、文件系统、进程通信、锁、原始设备、套接字和TCP/UDP连接等底层系统活动。
dstat -tcmdns --aio --fs --ipc --lock --raw --socket --tcp --udp

5.高级应用技巧
5.1数据记录与分析
将监控数据保存到CSV文件:
[root@yyzcdb81 ~]# dstat -tcdnm --output /var/log/dstat.csv 5
----system---- ----total-cpu-usage---- -dsk/total- -net/total- ------memory-usage-----
time |usr sys idl wai hiq siq| read writ| recv send| used buff cach free
28-01 14:47:09| 0 0 100 0 0 0|5665B 29k| 0 0 |1542M 208k 5793M 468M
28-01 14:47:14| 0 0 100 0 0 0| 0 6554B| 60B 480B|1542M 208k 5793M 468M
28-01 14:47:19| 0 0 99 0 0 0| 0 13k| 84B 393B|1542M 208k 5793M 468M
28-01 14:47:24| 0 0 100 0 0 0| 0 23k| 60B 378B|1542M 208k 5793M 468M
28-01 14:47:29| 0 0 100 0 0 0| 0 6554B| 60B 375B|1542M 208k 5793M 468M
28-01 14:47:34| 0 0 100 0 0 0| 0 39k| 60B 381B|1542M 208k 5793M 468M
28-01 14:47:39| 0 0 100 0 0 0| 0 13k| 60B 378B|1542M 208k 5793M 468M
28-01 14:47:44| 0 0 100 0 0 0| 0 27k| 60B 381B|1542M 208k 5793M 468M
28-01 14:47:49| 0 0 100 0 0 0| 0 20k| 60B 381B|1542M 208k 5793M 468M
28-01 14:47:54| 0 0 100 0 0 0| 0 24k| 60B 381B|1542M 208k 5793M 468M
28-01 14:47:56| 0 0 100 0 0 0| 0 0 | 60B 378B|1542M 208k 5793M 468M^C
[root@yyzcdb81 ~]#
查看保存的数据:
[root@yyzcdb81 ~]# cat /var/log/dstat.csv
"Dstat 0.7.2 CSV output"
"Author:","Dag Wieers <dag@wieers.com>",,,,"URL:","http://dag.wieers.com/home-made/dstat/"
"Host:","yyzcdb81",,,,"User:","root"
"Cmdline:","dstat -tcdnm --output /var/log/dstat.csv 5",,,,"Date:","28 Jan 2026 14:47:09 CST"
"system","total cpu usage",,,,,,"dsk/total",,"net/total",,"memory usage",,,
"time","usr","sys","idl","wai","hiq","siq","read","writ","recv","send","used","buff","cach","free"
28-01 14:47:09,0.200,0.082,99.678,0.019,0.0,0.021,5665.123,29255.427,0.0,0.0,1616629760.0,212992.0,6074384384.0,490602496.0
28-01 14:47:14,0.051,0.051,99.847,0.0,0.0,0.051,0.0,6553.600,60.0,480.400,1616470016.0,212992.0,6074388480.0,490758144.0
28-01 14:47:19,0.255,0.255,99.491,0.0,0.0,0.0,0.0,13721.600,84.400,393.200,1616580608.0,212992.0,6074388480.0,490647552.0
28-01 14:47:24,0.254,0.102,99.593,0.0,0.0,0.051,0.0,23961.600,60.0,378.0,1616580608.0,212992.0,6074388480.0,490647552.0
28-01 14:47:29,0.204,0.051,99.694,0.051,0.0,0.0,0.0,6553.600,60.0,374.800,1616580608.0,212992.0,6074388480.0,490647552.0
28-01 14:47:34,0.255,0.153,99.592,0.0,0.0,0.0,0.0,40140.800,60.0,381.200,1616707584.0,212992.0,6074388480.0,490520576.0
28-01 14:47:39,0.306,0.102,99.541,0.0,0.0,0.051,0.0,13107.200,60.0,378.0,1616707584.0,212992.0,6074388480.0,490520576.0
28-01 14:47:44,0.153,0.102,99.694,0.051,0.0,0.0,0.0,27852.800,60.0,381.200,1616707584.0,212992.0,6074388480.0,490520576.0
28-01 14:47:49,0.255,0.102,99.643,0.0,0.0,0.0,0.0,20172.800,60.0,381.200,1616723968.0,212992.0,6074388480.0,490504192.0
28-01 14:47:54,0.306,0.153,99.541,0.0,0.0,0.0,0.0,24780.800,60.0,381.200,1616723968.0,212992.0,6074388480.0,490504192.0
[root@yyzcdb81 ~]#
5.2特定时间点监控
监控特定时间段(每2秒采样,共采样30次):
[root@yyzcdb81 ~]# timeout 60 dstat -cdnm 2
----total-cpu-usage---- -dsk/total- -net/total- ------memory-usage-----
usr sys idl wai hiq siq| read writ| recv send| used buff cach free
0 0 100 0 0 0|5663B 29k| 0 0 |1542M 208k 5793M 468M
0 0 100 0 0 0| 0 17k| 60B 586B|1542M 208k 5793M 468M
0 0 100 0 0 0| 0 25k| 60B 354B|1542M 208k 5793M 468M
0 0 100 0 0 0| 0 6144B| 60B 346B|1542M 208k 5793M 468M
0 0 100 0 0 0| 0 16k| 60B 354B|1542M 208k 5793M 468M
0 0 100 0 0 0| 0 80k| 60B 346B|1542M 208k 5793M 468M
0 0 99 0 0 0| 0 82k| 60B 354B|1542M 208k 5793M 467M
0 0 100 0 0 0| 0 16k| 60B 354B|1542M 208k 5793M 467M
0 0 99 0 0 0| 0 186k| 60B 346B|1542M 208k 5793M 467M
0 0 100 0 0 0| 0 2048B| 60B 346B|1542M 208k 5793M 467M
0 0 100 0 0 0| 0 16k| 60B 354B|1542M 208k 5793M 467M
0 0 100 0 0 0| 0 16k| 60B 346B|1542M 208k 5793M 467M
0 0 100 0 0 0| 0 0 | 60B 346B|1542M 208k 5793M 467M
0 0 100 0 0 0| 0 16k| 60B 354B|1542M 208k 5793M 467M
0 0 100 0 0 0| 0 26k| 60B 354B|1542M 208k 5793M 467M
0 0 100 0 0 0| 0 0 | 60B 346B|1542M 208k 5793M 467M
0 0 100 0 0 0| 0 26k| 60B 354B|1542M 208k 5793M 467M
1 0 99 0 0 0| 0 2048B| 60B 346B|1542M 208k 5793M 467M^C
[root@yyzcdb81 ~]#
# 结合时间戳监控
dstat -tcd --epoch 5
5.3 插件使用
查看可用插件:
[root@yyzcdb81 ~]# dstat --list
internal:
aio, cpu, cpu24, disk, disk24, disk24old, epoch, fs, int, int24, io, ipc, load, lock, mem, net, page, page24, proc, raw, socket, swap,
swapold, sys, tcp, time, udp, unix, vm
/usr/share/dstat:
battery, battery-remain, cpufreq, dbus, disk-tps, disk-util, dstat, dstat-cpu, dstat-ctxt, dstat-mem, fan, freespace, gpfs, gpfs-ops,
helloworld, innodb-buffer, innodb-io, innodb-ops, lustre, memcache-hits, mysql-io, mysql-keys, mysql5-cmds, mysql5-conn, mysql5-io,
mysql5-keys, net-packets, nfs3, nfs3-ops, nfsd3, nfsd3-ops, ntp, postfix, power, proc-count, qmail, rpc, rpcd, sendmail, snooze, squid,
test, thermal, top-bio, top-bio-adv, top-childwait, top-cpu, top-cpu-adv, top-cputime, top-cputime-avg, top-int, top-io, top-io-adv,
top-latency, top-latency-avg, top-mem, top-oom, utmp, vm-memctl, vmk-hba, vmk-int, vmk-nic, vz-cpu, vz-io, vz-ubc, wifi
[root@yyzcdb81 ~]#
使用MySQL插件监控数据库:
dstat --mysql5-conn --mysql5-cmds
使用Nginx插件监控Web服务器:
dstat --nginx-req --nginx-stat
5.4与其他工具结合
# 配合watch命令高亮变化
watch -n 1 -d dstat -cd
# 通过管道筛选关键信息
dstat -cd | grep -E "(usr|idl|read|writ)"
# 实时监控并触发报警
dstat -cdn 1 | awk '$3 > 90 {print "高CPU使用率警告!"}'
6.常用场景配置
6.1 Web服务器监控
dstat -tcdn --http --tcp --load --top-io 2
6.2 数据库服务器监控
dstat -tcdnm --io --lock --aio --raw 3
6.3 实时故障排查
dstat -af --top-cpu --top-mem --top-io 1
6.4 长期性能趋势分析
# 后台运行记录性能数据
nohup dstat -tcdnm --output /var/log/perf_$(date +%Y%m%d).csv 30 > /dev/null &
7. 输出字段详解
7.1 CPU使用率字段
usr:用户空间CPU使用率sys:内核空间CPU使用率idl:CPU空闲率wai:I/O等待CPU时间hiq:硬件中断siq:软件中断
7.2 磁盘I/O字段
read:磁盘读取速度(KB/s)writ:磁盘写入速度(KB/s)used:磁盘使用百分比
7.3网络流量字段
recv:网络接收速度(KB/s)send:网络发送速度(KB/s)
7.4内存字段
used:已使用内存buff:缓冲区内存cach:缓存内存free:空闲内存
8.实用技巧与注意事项
# 实用技巧:
快速检查:dstat -a快速查看系统整体状态
精确监控:使用-C、-D、-N指定特定设备
颜色标记:红色通常表示高负载,绿色表示正常
历史对比:保存CSV文件用于不同时段性能对比
# 注意事项:
(1)部分插件需要额外安装依赖
(2)高频率监控(如0.1秒)可能增加系统负载
(3)长期监控需注意日志文件大小
(4)在生产环境使用前建议在测试环境验证
# 性能影响:
监控dstat自身资源消耗(开另一个终端)
pidstat -p $(pgrep dstat) 1 3

9.总结
dstat作为Linux系统监控的瑞士军刀,通过一个命令提供了:
全面的监控视角 - 覆盖系统所有关键资源
灵活的配置选项 - 按需定制监控内容
实时数据分析 - 及时发现性能问题
历史记录功能 - 支持事后分析
掌握dstat的使用,能够显著提升系统监控和故障排查的效率,逐步熟悉各种选项和组合,最终形成适合自己工作场景的监控方案。
本文链接:https://kinber.cn/post/6199.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝:

支付宝微信扫一扫,打赏作者吧~
