内容大纲
- Part01-dstat命令概述
- Part02-dstat命令安装
- Part03-dstat命令基本使用
- Part04-dstat命令参数详解
- Part05-dstat命令高级功能
- Part06-实战案例
内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。
1. dstat命令概述
dstat命令是Linux系统中的多功能系统监控工具,它可以替代vmstat、iostat、netstat、ifstat等工具,提供全面的系统监控。
学习交流加群风哥QQ113257174
# CPU监控:CPU使用率、上下文切换
# 内存监控:内存使用、交换、缓存
# 磁盘监控:磁盘I/O、磁盘使用率
# 网络监控:网络流量、网络错误
# 进程监控:进程CPU、内存使用
# 系统监控:中断、上下文切换
# 实时监控:实时显示系统状态
2. dstat命令安装
使用dnf命令安装dstat。
学习交流加群风哥微信: itpux-com
# 1. 安装dstat软件包
[root@localhost ~]# dnf install -y dstat
Updating Subscription Management repositories.
Last metadata expiration check: 0:00:01 ago on Fri 03 Apr 2026 10:00:00 CST.
Dependencies resolved.
================================================================================================================
Package Architecture Version Repository Size
================================================================================================================
Installing:
dstat noarch 0.7.4-4.el9 epel 200 k
…
Complete!
# 2. 验证安装
[root@localhost ~]# dstat –version
dstat 0.7.4
Written by Dag Wieers
Visit http://dag.wieers.com/home-made/dstat/
# 3. 启动dstat
[root@localhost ~]# dstat
3. dstat命令基本使用
使用dstat命令查看系统状态。
# 1. 查看系统状态
[root@localhost ~]# dstat
—-total-cpu-usage—- -dsk/total- -net/total- —paging– —system–
usr sys idl wai stl| read writ| recv send| in out | int csw
2 1 96 1 0| 0B 0B| 0B:0B 0B:0B| 0 0 | 10 20
3 2 95 0 0| 0B 0B| 0B:0B 0B:0B| 0 0 | 12 25
2 1 96 1 0| 0B 0B| 0B:0B 0B:0B| 0 0 | 11 22
# 2. 查看CPU和内存状态
[root@localhost ~]# dstat -cm
—-total-cpu-usage—- ——memory-usage—–
usr sys idl wai stl| used buff cach free
2 1 96 1 0| 2.0G 100M 2.0G 4.0G
3 2 95 0 0| 2.0G 100M 2.0G 4.0G
2 1 96 1 0| 2.0G 100M 2.0G 4.0G
# 3. 查看磁盘和网络状态
[root@localhost ~]# dstat -dn
-dsk/total- -net/total-
read writ| recv send
0B 0B| 0B:0B 0B:0B
0B 0B| 0B:0B 0B:0B
0B 0B| 0B:0B 0B:0B
# 4. 查看进程状态
[root@localhost ~]# dstat –top-cpu
—-total-cpu-usage—- -most-expensive-
usr sys idl wai stl| cpu process
2 1 96 1 0| systemd
3 2 95 0 0| kworker
2 1 96 1 0| mysqld
# 5. 查看内存状态
[root@localhost ~]# dstat –top-mem
—-total-cpu-usage—- -most-expensive-
usr sys idl wai stl| memory process
2 1 96 1 0| mysqld
3 2 95 0 0| nginx
2 1 96 1 0| systemd
更多学习教程公众号风哥教程itpux_com
4. dstat命令参数详解
详解dstat命令的各个参数。
# 1. CPU参数
# -c:显示CPU使用率
# –cpu-adv:显示高级CPU信息
# –cpu-count:显示CPU数量
# 2. 内存参数
# -m:显示内存使用情况
# –mem-adv:显示高级内存信息
# –swap:显示交换信息
# 3. 磁盘参数
# -d:显示磁盘I/O
# -D:显示指定磁盘的I/O
# –disk-util:显示磁盘利用率
# 4. 网络参数
# -n:显示网络流量
# -N:显示指定网络接口的流量
# –net-packets:显示网络包统计
# 5. 进程参数
# –top-cpu:显示CPU使用率最高的进程
# –top-mem:显示内存使用率最高的进程
# –top-io:显示I/O使用率最高的进程
# 6. 其他参数
# -s:显示交换信息
# -y:显示系统信息
# -l:显示负载信息
# –ipc:显示IPC信息
# –lock:显示锁信息
# –raw:显示原始数据
# –tcp:显示TCP信息
# –udp:显示UDP信息
# –unix:显示Unix套接字信息
# –vm:显示虚拟内存信息
# –vm-adv:显示高级虚拟内存信息
# –sys:显示系统信息
# –int:显示中断信息
# –fs:显示文件系统信息
# 查看详细参数说明
[root@localhost ~]# dstat –help
Usage: dstat [-afv] [options..] [delay [count]]
Versatile tool for generating system resource statistics
Dstat options:
-c, –cpu enable cpu stats
-C 0,3,total include cpu0, cpu3 and total
-d, –disk enable disk stats
-D total,hda include total and hda
-g, –page enable page stats
-i, –int enable interrupt stats
-l, –load enable load stats
-m, –mem enable memory stats
-n, –net enable network stats
-N eth1,total include eth1 and total
-p, –proc enable process stats
-r, –io enable io stats (same as -d)
-s, –swap enable swap stats
-t, –time enable time/date output
-T, –epoch enable unix time output
-y, –sys enable system stats
–aio enable aio stats
–fs, –filesystem enable fs stats
–ipc enable ipc stats
–lock enable lock stats
–raw enable raw stats
–socket enable socket stats
–tcp enable tcp stats
–udp enable udp stats
–unix enable unix stats
–vm enable vm stats
–vm-adv enable advanced vm stats
–top-cpu most expensive cpu process
–top-cputime most expensive cpu process (cumulative time)
–top-cpu-adv most expensive cpu process (advanced)
–top-io most expensive io process
–top-io-adv most expensive io process (advanced)
–top-latency most expensive latency process
–top-latency-adv most expensive latency process (advanced)
–top-mem most expensive memory process
–top-mem-adv most expensive memory process (advanced)
5. dstat命令高级功能
使用dstat命令的高级功能。
# 1. 显示所有信息
[root@localhost ~]# dstat -a
—-total-cpu-usage—- -dsk/total- -net/total- —paging– —system–
usr sys idl wai stl| read writ| recv send| in out | int csw
2 1 96 1 0| 0B 0B| 0B:0B 0B:0B| 0 0 | 10 20
3 2 95 0 0| 0B 0B| 0B:0B 0B:0B| 0 0 | 12 25
2 1 96 1 0| 0B 0B| 0B:0B 0B:0B| 0 0 | 11 22
# 2. 显示高级CPU信息
[root@localhost ~]# dstat –cpu-adv
—-total-cpu-usage—-
usr sys idl wai stl| hiq siq
2 1 96 1 0| 0 0
3 2 95 0 0| 0 0
2 1 96 1 0| 0 0
# 3. 显示高级内存信息
[root@localhost ~]# dstat –mem-adv
——memory-usage—–
used buff cach free| slab
2.0G 100M 2.0G 4.0G| 200M
2.0G 100M 2.0G 4.0G| 200M
2.0G 100M 2.0G 4.0G| 200M
# 4. 显示高级虚拟内存信息
[root@localhost ~]# dstat –vm-adv
—paging– —swap–
majflt minflt| in out
0 100| 0 0
0 100| 0 0
0 100| 0 0
# 5. 显示TCP信息
[root@localhost ~]# dstat –tcp
—-tcp-sockets—-
lis act syn tim clo
3 3 0 0 0
3 3 0 0 0
3 3 0 0 0
# 6. 显示UDP信息
[root@localhost ~]# dstat –udp
—-udp-sockets—-
lis act
2 0
2 0
2 0
# 7. 显示Unix套接字信息
[root@localhost ~]# dstat –unix
—-unix-sockets—-
dgm str lis
0 3 3
0 3 3
0 3 3
# 8. 显示文件系统信息
[root@localhost ~]# dstat –fs
—-filesystem—-
files inodes
10000 50000
10000 50000
10000 50000
风哥提示:
6. 实战案例
使用dstat命令监控系统性能。
# 1. 查看系统状态
[root@localhost ~]# dstat
—-total-cpu-usage—- -dsk/total- -net/total- —paging– —system–
usr sys idl wai stl| read writ| recv send| in out | int csw
2 1 96 1 0| 0B 0B| 0B:0B 0B:0B| 0 0 | 10 20
3 2 95 0 0| 0B 0B| 0B:0B 0B:0B| 0 0 | 12 25
2 1 96 1 0| 0B 0B| 0B:0B 0B:0B| 0 0 | 11 22
# 2. 查看CPU和内存状态
[root@localhost ~]# dstat -cm 1 3
—-total-cpu-usage—- ——memory-usage—–
usr sys idl wai stl| used buff cach free
2 1 96 1 0| 2.0G 100M 2.0G 4.0G
3 2 95 0 0| 2.0G 100M 2.0G 4.0G
2 1 96 1 0| 2.0G 100M 2.0G 4.0G
# 3. 创建监控脚本
[root@localhost ~]# cat > /usr/local/bin/dstat-monitor.sh << 'EOF'
#!/bin/bash
# script.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# dstat监控脚本
LOG_FILE="/var/log/dstat-monitor.log"
DATA_DIR="/var/log/dstat-data"
ALERT_EMAIL="admin@fgedu.net.cn"
# 记录日志函数
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}
# 创建数据目录
mkdir -p $DATA_DIR
# 启动dstat数据收集
start_dstat() {
log “Starting dstat data collection…”
dstat -cdmn –output $DATA_DIR/dstat-$(date +%Y%m%d-%H%M%S).csv &
DSTAT_PID=$!
echo $DSTAT_PID > /var/run/dstat-monitor.pid
log “Dstat data collection started with PID: $DSTAT_PID”
}
# 停止dstat数据收集
stop_dstat() {
log “Stopping dstat data collection…”
if [ -f /var/run/dstat-monitor.pid ]; then
DSTAT_PID=$(cat /var/run/dstat-monitor.pid)
kill $DSTAT_PID
rm /var/run/dstat-monitor.pid
log “Dstat data collection stopped.”
fi
}
# 分析dstat数据
analyze_dstat() {
log “Analyzing dstat data…”
# 查找最新的dstat文件
DSTAT_FILE=$(ls -t $DATA_DIR/dstat-*.csv | head -1)
if [ -f “$DSTAT_FILE” ]; then
log “Analyzing file: $DSTAT_FILE”
# 检查CPU使用率
CPU_USAGE=$(tail -1 $DSTAT_FILE | awk -F, ‘{print $100}’)
if [ $(echo “$CPU_USAGE > 80” | bc) -eq 1 ]; then
log “WARNING: CPU usage is ${CPU_USAGE}%”
echo “CPU usage is ${CPU_USAGE}%” | mail -s “WARNING: CPU usage alert” $ALERT_EMAIL
fi
# 检查内存使用率
MEMORY_USAGE=$(tail -1 $DSTAT_FILE | awk -F, ‘{print $200}’)
if [ $(echo “$MEMORY_USAGE > 80” | bc) -eq 1 ]; then
log “WARNING: Memory usage is ${MEMORY_USAGE}%”
echo “Memory usage is ${MEMORY_USAGE}%” | mail -s “WARNING: Memory usage alert” $ALERT_EMAIL
fi
fi
}
# 主函数
main() {
case “$1” in
start)
start_dstat
;;
stop)
stop_dstat
;;
analyze)
analyze_dstat
;;
*)
echo “Usage: $0 {start|stop|analyze}”
exit 1
;;
esac
}
# 执行主函数
main $@
EOF
# 4. 设置脚本执行权限
[root@localhost ~]# chmod +x /usr/local/bin/dstat-monitor.sh
# 5. 创建日志文件
[root@localhost ~]# touch /var/log/dstat-monitor.log
[root@localhost ~]# chmod 644 /var/log/dstat-monitor.log
# 6. 配置定时任务
[root@localhost ~]# cat > /etc/cron.d/dstat-monitor << 'EOF'
# 启动dstat数据收集
0 * * * * root /usr/local/bin/dstat-monitor.sh start
# 停止dstat数据收集
59 * * * * root /usr/local/bin/dstat-monitor.sh stop
# 分析dstat数据
0 1 * * * root /usr/local/bin/dstat-monitor.sh analyze
EOF
# 7. 重启cron服务
[root@localhost ~]# systemctl restart crond
# 8. 测试监控脚本
[root@localhost ~]# /usr/local/bin/dstat-monitor.sh start
# 9. 查看日志
[root@localhost ~]# tail -f /var/log/dstat-monitor.log
[2026-04-03 10:00:00] Starting dstat data collection...
[2026-04-03 10:00:01] Dstat data collection started with PID: 12345
# 10. 配置日志轮转
[root@localhost ~]# cat > /etc/logrotate.d/dstat-monitor << 'EOF'
/var/log/dstat-monitor.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0644 root root
}
/var/log/dstat-data/*.csv {
daily
rotate 30
compress
delaycompress
missingok
notifempty
}
EOF
# 11. 测试日志轮转
[root@localhost ~]# logrotate -f /etc/logrotate.d/dstat-monitor
提示
dstat是多功能系统监控工具,可以替代vmstat、iostat、netstat等工具。建议使用dstat进行系统监控,收集数据供性能分析。dstat支持多种插件,可以扩展监控功能。
from PG视频:www.itpux.com
>更多视频教程www.fgedu.net.cn
