dstat 是一款功能强大的 Linux 系统监控工具,它通过整合多种系统资源数据,以清晰的实时动态视图呈现系统状态,成为运维人员和系统管理员的首利工具,相较于传统的 vmstat、iostat、ifstat 等单一功能工具,dstat 的最大优势在于能够同时展示 CPU、磁盘 I/O、网络、内存、进程等多维度数据,并通过灵活的输出格式和自定义选项,满足不同场景下的监控需求。

核心功能与数据采集能力
dstat 的核心价值在于其全面的数据采集能力,默认情况下,dstat 每秒更新一次数据,并支持自定义采样间隔(通过 -c 参数指定),它能够监控的关键指标包括:
- CPU 使用率:分别显示用户态(usr)、内核态(sys)、空闲(idle)、等待(iowait)等状态占比,帮助识别 CPU 瓶颈是否由 I/O 等待引起。
- 磁盘 I/O 性能:统计每秒读取(read)、写入(write)的数据量(通常以 KB/s 为单位),并显示磁盘 I/O 请求次数(d/s),快速定位磁盘繁忙进程。
- 网络流量:实时监控网络接口的接收(recv)和发送(send)速度(KB/s),支持多接口同时展示,便于排查网络拥堵问题。
- 内存与交换空间:展示已用内存(used)、空闲内存(free)、缓存(buff/cache)以及交换分区(swap)的使用情况,结合
--top-bio或--top-cpu参数可进一步定位内存消耗大户。 - 系统负载与进程:通过
--load参数显示 1 分钟、5 分钟、15 分钟的平均负载,--proc模块则可展示活跃进程数、僵尸进程数等进程状态信息。
灵活的输出与自定义选项
dstat 的输出格式兼具可读性与机器友好性,默认以表格形式实时刷新,同时支持 CSV、CSV 导出(--output 参数)等格式,便于后续导入 Excel 或数据库进行长期分析,其强大的自定义能力体现在:

- 模块化监控:通过
--list参数可查看所有可用模块(如 disk、net、mem、cpu 等),并选择性启用特定模块,dstat --cpu --disk --net仅显示这三类数据,避免信息过载。 - 排序与排序:结合
--top-cpu、--top-mem等参数,可按 CPU 或内存使用率对进程进行排序,快速定位资源消耗异常的进程。 - 单位调整:通过
--bits参数可将网络流量单位从 KB/s 转换为 Kb/s,适应不同网络环境下的数据对比需求。
实战应用场景
在系统运维中,dstat 的多场景适用性尤为突出:
- 性能瓶颈排查:当系统响应缓慢时,通过观察 dstat 输出中 iowait 是否持续高位可判断是否为磁盘 I/O 瓶颈;若网络流量接近带宽上限且 CPU 系统态占用高,则可能存在网络中断处理密集型进程。
- 容量规划:长期记录 dstat 输出的 CSV 数据,可分析 CPU、内存、磁盘的利用率趋势,为硬件扩容或资源调度提供数据支撑。
- 故障应急:在系统负载突增时,通过
dstat --top-cpu实时监控进程级 CPU 使用情况,可快速终止异常进程或重启服务,避免系统崩溃。
使用技巧与注意事项
为充分发挥 dstat 的效能,需掌握以下技巧:

- 权限要求:dstat 需要普通用户权限即可运行,但部分模块(如磁盘 I/O 统计)可能需要 root 权限才能获取完整数据,建议使用
sudo执行。 - 参数组合:合理组合参数可提升监控效率,
dstat -tcmdrn --disk-util --top-cpu可同时显示时间戳、CPU、磁盘、网络、磁盘利用率及 Top 进程,适合全面诊断。 - 输出重定向:长时间监控时,需通过
dstat --output /var/log/dstat.csv 2>&1 &将输出保存至文件,避免终端关闭导致数据丢失。
dstat 以其简洁的命令行接口、丰富的监控维度和灵活的扩展性,成为 Linux 系统监控领域不可或替代的工具,无论是日常巡检还是应急排查,掌握 dstat 的使用都能显著提升系统运维效率,为稳定运行提供坚实保障。


















