dstat 通过选项组合叠加显示指标,无需配置文件;-c/-m/-n等基础选项控制列,-d/-n/-c/-s指定设备,--tcp/--top-cpu等启用高级统计,--output等调整输出格式。

直接用选项组合就能控制 dstat 显示哪些指标,不需要写配置文件或改源码。关键在于理解选项含义和拼接逻辑——它不是“开关式”启用,而是“叠加式”添加列。
按需组合基础监控项
dstat 的核心设计是把每个指标对应一个字母选项,多个选项连写即可同时显示。比如:
- -c 显示 CPU 使用率(usr/sys/idle/wai/hiq/siq)
- -m 显示内存使用(used/buff/cache/free)
- -s 显示 Swap 使用(used/free)
- -d 显示磁盘 I/O(read/write,单位 KB/s)
- -n 显示网络收发(recv/send,单位 KB/s)
- -l 显示系统负载(1/5/15 分钟平均值)
- -y 显示系统级统计(int 中断数、csw 上下文切换)
例如想只看 CPU、内存和网络:运行 dstat -cmn;想加负载和中断信息:就写 dstat -cmnly。
指定具体设备或资源范围
默认显示“total”,但可精确到某块盘、某张网卡或某个 CPU:
- 磁盘:用 -D sda,sdb,total 只监控 sda、sdb 和汇总值
- 网卡:用 -N eth0,wlan0,total 限定网络接口
- CPU:用 -C 0,2,total 查看第 0 和第 2 个逻辑 CPU 及总计
- Swap 分区:用 -S swap0,swap1 指定具体交换区
注意:-D、-N、-C、-S 必须配合对应的基础选项(-d、-n、-c、-s)才生效。
启用高级或协议级统计
除基础硬件指标外,还能深入内核或协议层:
- --tcp 和 --udp:分别显示 TCP/UDP 连接建立、重传、丢包等计数
- --socket:统计当前活跃 socket 数量
- --ipc:查看消息队列、信号量等 IPC 资源使用
- --lock:监控内核锁竞争情况(对排查高并发阻塞有用)
- --top-cpu 或 --top-mem:在底部动态列出消耗最高的进程(非列式输出,单独显示)
这些选项可与基础选项混用,例如 dstat -cnd --tcp --top-cpu 2 表示每 2 秒刷新,同时看 CPU、网络、TCP 状态,并附带 CPU 占用 Top 进程。
调整输出格式与行为
让监控更贴合使用场景:
- 加 --nocolor 关闭彩色(适合重定向到日志或远程终端)
- 加 --noheaders 只输出第一行表头,后续省略(方便导出 CSV)
- 加 --output data.csv 直接保存为 CSV 文件,可用 Excel 或 pandas 分析
- 加 --integer 强制显示整数(避免小数点后冗余位数)
- 加 -t 在每行开头显示时间戳,便于定位异常发生时刻
典型组合如:dstat -tcdngy --output monitor.csv 5 12 表示带时间戳监控 CPU/磁盘/网络/分页/系统,每 5 秒一次,共 12 次,并存入 CSV。











