dstat 命令详解

| 选择喜欢的代码风格  

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

dstat 命令安装:


-bash/zsh: dstat: command not found

#Debian
apt-get install dstat

#Ubuntu
apt-get install dstat

#Alpine
apk add dstat

#Arch Linux
pacman -S dstat

#Kali Linux
apt-get install dstat

#CentOS
yum install dstat

#Fedora
dnf install dstat

#OS X
brew install dstat

#Raspbian
apt-get install dstat

dstat 命令补充说明:


dstat 可以让你实时地看到所有系统资源,例如,你能够通过统计 IDE 控制器当前状态来比较磁盘利用率,或者直接通过网络带宽数值来比较磁盘的吞吐率(在相同的时间间隔内)。

dstat 将以列表的形式为你提供选项信息并清晰地告诉你是在何种幅度和单位显示输出。这样更好地避免了信息混乱和误报。

更重要的是,它可以让你更容易编写插件来收集你想要的数据信息,以从未有过的方式进行扩展。

dstat 的默认输出是专门为人们实时查看而设计的,不过你也可以将详细信息通过 CSV 输出到一个文件,并导入到 Gnumeric 或者 Excel 生成表格中。

dstat 命令语法:


dstat [-afv] [options..] [delay [count]]

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 命令实例


直接输入命令 dstat,彩色监控 UI 如下图

这是默认输出显示的信息,默认情况下分五个区域:

默认 dstat 会每一秒刷新一次,按 Ctrl+C 退出,dstat 还有许多具体的参数,可通过 man 查看
--total-cpu-usage---- CPU使用率
usr:用户空间的程序所占百分比;
sys:系统空间程序所占百分比;
idel:空闲百分比;
wai:等待磁盘I/O所消耗的百分比;
hiq:硬中断次数;
siq:软中断次数;
-dsk/total-磁盘统计
read:读总数
writ:写总数
-net/total- 网络统计
recv:网络收包总数
send:网络发包总数
---paging-- 内存分页统计
in: pagein(换入)
out:page out(换出)

注:系统的分页活动。分页指的是一种内存管理技术用于查找系统场景,一个较大的分页表明系统正在使用大量的交换空间,通常情况下当系统已经开始用交换空间的时候,就说明你的内存已经不够用了,或者说内存非常分散,理想情况下 page in(换入)和 page out(换出)的值是 0 0

--system--系统信息
int:中断次数
csw:上下文切换

注:中断(int)和上下文切换(csw)。这项统计仅在有比较基线时才有意义。这一栏中较高的统计值通常表示大量的进程造成拥塞,需要对 CPU 进行关注。你的服务器一般情况下都会运行运行一些程序,所以这项总是显示一些数值。

#报表输出的时间间隔为3秒钟,并且报表中输出10个结果
$ dstat 3 10

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 100   0   0   0| 191B   21k|   0     0 |   0     0 | 677   627 
  0   0 100   0   0   0|   0     0 |  80B  486B|   0     0 | 535   493 
  0   0 100   0   0   0|   0     0 | 159B  468B|   0     0 | 551   505 
  0   0 100   0   0   0|   0   185k|  60B  379B|   0     0 | 523   483 
  0   0 100   0   0   0|   0     0 |  60B  390B|   0     0 | 533   491 
  0   0 100   0   0   0|   0  9557B|  60B  379B|   0     0 | 535   500 
  0   0 100   0   0   0|   0     0 | 107B  458B|   0     0 | 552   506 
  0   0 100   0   0   0|   0     0 | 102B  535B|   0     0 | 541   501 
  0   0 100   0   0   0|   0     0 |  60B  282B|   0     0 | 531   501 
  0   0 100   0   0   0|   0     0 | 105B 1505B|   0     0 | 554   509 
  0   0 100   0   0   0|   0     0 |  60B  379B|   0     0 | 548   505 

如想监控 swap,process,sockets,filesystem 并显示监控的时间:

$ dstat -tsp --socket --fs

----system---- ----swap--- ---procs--- ------sockets------ --filesystem-
     time     | used  free|run blk new|tot tcp udp raw frg|files  inodes
02-08 11:47:13|   0     0 |  0   0 1.8|176   7   7   0   0| 1408    140k
02-08 11:47:14|   0     0 |  0   0   0|176   7   7   0   0| 1408    140k
02-08 11:47:15|   0     0 |  0   0   0|176   7   7   0   0| 1408    140k
02-08 11:47:16|   0     0 |  0   0   0|176   7   7   0   0| 1408    140k
02-08 11:47:17|   0     0 |  0   0   0|176   7   7   0   0| 1408    140k
02-08 11:47:18|   0     0 |  0   0   0|176   7   7   0   0| 1408    140k
02-08 11:47:19|   0     0 |  0   0   0|176   7   7   0   0| 1408    140k
02-08 11:47:20|   0     0 |  0   0   0|176   7   7   0   0| 1408    140k
02-08 11:47:21|   0     0 |  0   0   0|176   7   7   0   0| 1408    140k

若要将结果输出到文件可以加 --output filename

dstat -tsp --socket --fs --output /commandnotfound/ds.csv

查看全部内存都有谁在占用:

$ dstat -g -l -m -s --top-mem

---paging-- ---load-avg--- ------memory-usage----- ----swap--- --most-expensive-
  in   out | 1m   5m  15m | used  buff  cach  free| used  free|  memory process 
   0     0 |0.01 0.06 0.05|1787M  197M 10.1G 3560M|   0     0 |mysqld       208M
   0     0 |0.01 0.06 0.05|1787M  197M 10.1G 3560M|   0     0 |mysqld       208M
   0     0 |0.01 0.06 0.05|1787M  197M 10.1G 3560M|   0     0 |mysqld       208M
   0     0 |0.01 0.06 0.05|1787M  197M 10.1G 3560M|   0     0 |mysqld       208M
   0     0 |0.01 0.06 0.05|1787M  197M 10.1G 3560M|   0     0 |mysqld       208M

显示一些关于 CPU 资源损耗的数据:

$ dstat -c -y -l --proc-count --top-cpu

----total-cpu-usage---- ---system-- ---load-avg--- proc -most-expensive-
usr sys idl wai hiq siq| int   csw | 1m   5m  15m |tota|  cpu process   
  0   0 100   0   0   0| 678   628 |   0 0.04 0.05| 167|AliYunDun    0.0
  0   0 100   0   0   0| 540   500 |   0 0.04 0.05| 167|                
  0   0 100   0   0   0| 543   499 |   0 0.04 0.05| 167|                
  0   0 100   0   0   0| 563   513 |   0 0.04 0.05| 167|sshd: commandnotfound@0.1
  0   0 100   0   0   0| 570   526 |   0 0.04 0.05| 167|                
  0   0 100   0   0   0| 580   513 |   0 0.04 0.05| 167|AliYunDun    0.1
  0   0 100   0   0   0| 554   507 |   0 0.04 0.05| 167|AliYunDun    0.1
  0   0 100   0   0   0| 545   501 |   0 0.04 0.05| 167|                
  0   0 100   0   0   0| 601   531 |   0 0.04 0.05| 167|                
  0   0 100   0   0   0| 575   518 |   0 0.04 0.05| 167|mysqld       0.1
  0   0 100   0   0   0| 555   503 |   0 0.04 0.05| 167|                
  0   0 100   0   0   0| 561   510 |   0 0.04 0.05| 167|AliYunDunUpda0.1
  0   0 100   0   0   0| 548   514 |   0 0.04 0.05| 167|redis-server 0.1
  0   0 100   0   0   0| 552   505 |   0 0.04 0.05| 167|AliYunDun    0.1
  0   0 100   0   0   0| 545   501 |   0 0.04 0.05| 167|                
  0   0 100   0   0   0| 590   519 |   0 0.04 0.05| 167|

通过 dstat --list 可以查看 dstat 能使用的所有参数,其中上面 internal 是 dstat 本身自带的一些监控参数,下面 /usr/share/dstat 中是 dstat 的插件,这些插件可以扩展 dstat 的功能,如可以监控电源(battery)、mysql 等。

$ 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

/usr/share/dstat 下面这些插件并不是都可以直接使用的,有的还依赖其他包,如想监控 mysql,必须要装 python 连接 mysql 的一些包。

dstat 命令扩展阅读:




dstat 命令评论

共收录到 512Linux 命令