(Linux系统之dstat命令的基本使用)
一、dstat命令介绍
1. dstat简介
dstat是一个通用的系统资源统计工具,stat命令是一个用来替换vmstat、iostat、netstat、nfsstat和ifstat这些命令,是一个全能系统信息统计工具。
2. dstat特点
- 实时的监控cpu、磁盘、网络、IO、内存等使用情况
- 全能系统信息统计
- 安装方便快速,上手简单
- 功能强大,是运维的好帮手
二、本次实践介绍
1. 本地环境规划
本地环境规划:
hostname | IP地址 | dstat版本 | 操作系统版本 |
---|---|---|---|
jeven | 192.168.3.166 | 3.28.2-10 | centos 7.6 |
2. 本次实践介绍
1.本次实践环境为个人测试环境; 2.本次实践为在centos7.6系统上安装dstat工具; 3.学会dstat工具的基本使用。
三、本地环境检查
1. 检查操作系统版本
检查本地操作系统版本
[root@jeven test]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
2. 查看系统内核版本
查看系统内核版本
[root@jeven test]# uname -r
3.10.0-957.el7.x86_64
3. 检查本地yum仓库源状态
检查本地yum仓库的状态
[root@server001 ~]# yum repolist all |grep enable
!base/7/x86_64 CentOS-7 - Base - m enabled: 10,072
!docker-ce-stable/7/x86_64 Docker CE Stable - enabled: 234
!epel/x86_64 Extra Packages for enabled: 13,785
!extras/7/x86_64 CentOS-7 - Extras - enabled: 515
!mysql-connectors-community/x86_64 MySQL Connectors Co enabled: 220
!mysql-tools-community/x86_64 MySQL Tools Communi enabled: 98
!mysql80-community/x86_64 MySQL 8.0 Community enabled: 405
!remi-safe Safe Remi's RPM rep enabled: 5,159
!updates/7/x86_64 CentOS-7 - Updates enabled: 4,926
!webmin Webmin Distribution enabled: 243
!zabbix/x86_64 Zabbix Official Rep enabled: 114
!zabbix-agent2-plugins/x86_64 Zabbix Official Rep enabled: 4
!zabbix-non-supported/x86_64 Zabbix Official Rep enabled: 5
四、安装dstat工具
1. 搜索dstat软件
使用yum查找dstat软件
[root@server001 ~]# yum search dstat
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* remi-safe: mirrors.tuna.tsinghua.edu.cn
=================================================================================== N/S matched: dstat ===================================================================================
dstat.noarch : Versatile resource statistics tool
Name and summary matches only, use "search all" for everything.
查看dstat的软件版本
[root@server001 ~]# yum list all|grep dstat
dstat.noarch 0.7.2-12.el7 base
2. 安装dstat工具
使用yum直接安装dstat工具
[root@jeven ~]# yum -y install dstat
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* epel: mirrors.cqu.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package dstat.noarch 0:0.7.2-12.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==========================================================================================================================================================================================
Package Arch Version Repository Size
==========================================================================================================================================================================================
Installing:
dstat noarch 0.7.2-12.el7 base 163 k
Transaction Summary
==========================================================================================================================================================================================
Install 1 Package
Total download size: 163 k
Installed size: 752 k
Downloading packages:
dstat-0.7.2-12.el7.noarch.rpm | 163 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : dstat-0.7.2-12.el7.noarch 1/1
Verifying : dstat-0.7.2-12.el7.noarch 1/1
Installed:
dstat.noarch 0:0.7.2-12.el7
Complete!
3. 查看dstat版本
查看dstat版本
[root@jeven ~]# dstat --version
Dstat 0.7.2
Written by Dag Wieers <dag@wieers.com>
Homepage at http://dag.wieers.com/home-made/dstat/
Platform posix/linux2
Kernel 3.10.0-957.el7.x86_64
Python 2.7.5 (default, Oct 30 2018, 23:45:53)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
Terminal type: xterm (color support)
Terminal size: 39 lines, 186 columns
Processors: 4
Pagesize: 4096
Clock ticks per secs: 100
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
五、dstat命令的帮助信息
1. 在命令行的帮助信息
在centos命令行终端的dstat的帮助信息
[root@jeven ~]# 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 hda and total
-g, --page enable page stats
-i, --int enable interrupt stats
-I 5,eth2 include int5 and interrupt used by eth2
-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 (I/O requests completed)
-s, --swap enable swap stats
-S swap1,total include swap1 and total
-t, --time enable time/date output
-T, --epoch enable time counter (seconds since epoch)
-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
--plugin-name enable plugins by plugin name (see manual)
--list list all available plugins
-a, --all equals -cdngy (default)
-f, --full automatically expand -C, -D, -I, -N and -S lists
-v, --vmstat equals -pmgdsc -D total
--bits force bits for values expressed in bytes
--float force float values on screen
--integer force integer values on screen
--bw, --blackonwhite change colors for white background terminal
--nocolor disable colors (implies --noupdate)
--noheaders disable repetitive headers
--noupdate disable intermediate updates
--output file write CSV output to file
--profile show profiling statistics when exiting dstat
delay is the delay in seconds between each update (default: 1)
count is the number of updates to display before exiting (default: unlimited)
2. dstat命令常用选项
dstat命令常用选项
-c:显示CPU系统占用,用户占用,空闲,等待,中断,软件中断等信息。
-C:当有多个CPU时候,此参数可按需分别显示cpu状态,例:-C 0,1 是显示cpu0和cpu1的信息。
-d:显示磁盘读写数据大小。
-D hda,total:include hda and total。
-n:显示网络状态。
-N eth1,total:有多块网卡时,指定要显示的网卡。
-l:显示系统负载情况。
-m:显示内存使用情况。
-g:显示页面使用情况。
-p:显示进程状态。
-s:显示交换分区使用情况。
-S:类似D/N。
-r:I/O请求情况。
-y:系统状态。
--ipc:显示ipc消息队列,信号等信息。
--socket:用来显示tcp udp端口状态。
-a:此为默认选项,等同于-cdngy。
-v:等同于 -pmgdsc -D total。
--output 文件:此选项也比较有用,可以把状态信息以csv的格式重定向到指定的文件中,以便日后查看。例:dstat --output /root/dstat.csv & 此时让程序默默的在后台运行并把结果输出到/root/dstat.csv文件中。
六、dstat命令的基本使用
1. 直接使用dstat命令
直接使用dstat命令,默认使用的是-cdngy参数,分别显示cpu、disk、net、page、system信息,默认是1s显示一条信息。 在命令后面加上--output ,可以把状态信息以csv的格式重定向到指定的文件中,以便日后查看。
[root@jeven ~]# dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
0 0 99 0 0 0| 221k 35k| 0 0 | 0 0 | 141 195
0 0 100 0 0 0| 0 0 | 328B 938B| 0 0 | 76 111
0 0 100 0 0 0| 0 0 | 254B 398B| 0 0 | 57 78
0 0 100 0 0 0| 0 0 | 314B 458B| 0 0 | 46 60
0 0 100 0 0 0| 0 0 | 254B 458B| 0 0 | 58 73
0 0 100 0 0 0| 0 0 | 254B 398B| 0 0 | 49 67
- CPU部分解释
usr:用户空间的程序所占百分比;
sys:系统空间程序所占百分比;
idel:空闲百分比;
wai:等待磁盘I/O所消耗的百分比;
hiq:硬中断次数;
siq:软中断次数;
- disk部分解释
read:磁盘读带宽;
writ:磁盘写带宽
- system部分解释
int、csw分别为系统的中断次数(interrupt)和上下文切换(context switch)。
- net部分解释
recv:网络收包带宽
send:网络发包带宽
- paging内存分页统计
in: page in(换入)
out:page out(换出)
2. 指定时间间隔显示
可以在最后指定显示一条信息的时间间隔,如dstat3是每3s显示一条,dstat 3 6表示每3s显示一条,一共显示6条。
[root@jeven ~]# dstat 3
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
0 0 99 0 0 0| 212k 33k| 0 0 | 0 0 | 137 190
0 0 100 0 0 0| 0 0 | 254B 573B| 0 0 | 55 71
0 0 100 0 0 0| 0 0 | 334B 387B| 0 0 | 59 82
0 0 100 0 0 0| 0 0 | 254B 387B| 0 0 | 70 78
0 0 100 0 0 0| 0 0 | 234B 407B| 0 0 | 53 74
0 0 100 0 0 0| 0 0 | 254B 387B| 0 0 | 51 68
0 0 100 0 0 0| 0 0 | 454B 407B| 0 0 | 55 74
0 0 100 0 0 0| 0 0 | 254B 407B| 0 0 | 56 78
[root@jeven ~]# dstat 3 6
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
0 0 99 0 0 0| 210k 33k| 0 0 | 0 0 | 137 190
0 0 100 0 0 0| 0 0 | 254B 573B| 0 0 | 57 77
0 0 100 0 0 0| 0 0 | 428B 387B| 0 0 | 77 110
0 0 100 0 0 0| 0 0 | 294B 407B| 0 0 | 76 102
0 0 100 0 0 0| 0 0 | 254B 407B| 0 0 | 84 90
0 0 100 0 0 0| 0 0 | 228B 387B| 0 0 | 55 79
0 0 100 0 0 0| 0 0 | 214B 407B| 0 0 | 51 73
3. 查看dstat能使用的所有参数
查看dstat能使用的所有参数使用dstat --list
[root@jeven ~]# 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
4. 监控系统的进程
检查查看系统的进程
[root@jeven ~]# dstat -p 5 10
---procs---
run blk new
0 0 3.8
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0.4 0 0
0 0 1.6
0 0 0
0 0 0
七、dstat命令的日常用法
1. 显示最耗CPU的进程
查看当前最耗CPU的进程名、PID和CPU占比以及读写信息。
[root@jeven ~]# dstat -t --top-cpu-adv 2 6
----system---- -------most-expensive-cpu-process-------
time |process pid cpu read write
14-05 05:16:31|vmtoolsd 9177 0.0%2094B 1B
14-05 05:16:33|python2 9868 0.1% 0 0
14-05 05:16:35|kworker/1:1 224830.1% 0 0
14-05 05:16:37|
14-05 05:16:39|
14-05 05:16:41|kworker/0:1 40 0.1% 0 0
14-05 05:16:43|rngd 9141 0.1% 0 0
2. 显示最高磁盘IO的进程
查看当前最耗block I/O的进程名、PID和读写容量以及CPU占比。
[root@jeven ~]# dstat -t --top-bio-adv 2 6
----system---- ----most-expensive-block-i/o-process----
time |process pid read write cpu
14-05 05:18:38|systemd 1 68k 20k0.0%
14-05 05:18:40|
14-05 05:18:42|
14-05 05:18:44|
14-05 05:18:46|
14-05 05:18:48|
14-05 05:18:50|
3. 显示最耗内存的进程
查看当前最耗内存的进程
[root@jeven ~]# dstat -t --top-mem 2 6
----system---- --most-expensive-
time | memory process
14-05 05:52:02|gnome-shell 133M
14-05 05:52:05|gnome-shell 133M
14-05 05:52:07|gnome-shell 133M
14-05 05:52:09|gnome-shell 133M
14-05 05:52:10|gnome-shell 133M
14-05 05:52:13|gnome-shell 133M
14-05 05:52:15|gnome-shell 133M
4. 监控磁盘读写
监控磁盘sda的读写状态
[root@jeven ~]# dstat -t -dD sda,total 2 6
----system---- --dsk/sda----dsk/total-
time | read writ: read writ
14-05 05:23:05| 164k 26k: 164k 26k
14-05 05:23:07| 0 0 : 0 0
14-05 05:23:09| 0 0 : 0 0
14-05 05:23:11| 0 0 : 0 0
14-05 05:23:13| 0 15k: 0 15k
14-05 05:23:15| 0 0 : 0 0
14-05 05:23:17| 0 0 : 0 0
5. 监控网卡的流量
监控系统的某个网卡,例如ens33网卡的流量情况。
[root@jeven ~]# dstat -t -n -N ens33,total 2 6
----system---- -net/ens33---net/total-
time | recv send: recv send
14-05 05:24:59| 0 0 : 0 0
14-05 05:25:01| 224B 378B: 224B 378B
14-05 05:25:03| 284B 312B: 284B 312B
14-05 05:25:05| 224B 282B: 224B 282B
14-05 05:25:07| 224B 312B: 224B 312B
14-05 05:25:09| 194B 282B: 194B 282B
14-05 05:25:11| 224B 312B: 224B 312B
[root@jeven ~]#
6. 监控内存状态
监控系统内存的状态,显示内存的各项信息。
[root@jeven ~]# dstat -t -m 2 6
----system---- ------memory-usage-----
time | used buff cach free
14-05 05:26:43|1209M 6168k 822M 9798M
14-05 05:26:45|1209M 6168k 822M 9798M
14-05 05:26:47|1209M 6168k 822M 9798M
14-05 05:26:49|1209M 6168k 822M 9798M
14-05 05:26:51|1209M 6168k 822M 9798M
14-05 05:26:53|1209M 6168k 822M 9798M
14-05 05:26:55|1209M 6168k 822M 9798M