dstat 是一个能够取代vmstat,iostat,netstat和ifstat这些命令的多功能产品。dstat克服了这些命令的局限并增长了一些另外的功能,增长了监控项,也变得更灵活了。dstat能够很方便监控系统运行情况并用于基准测试和排除故障。python
dstat可让你实时地看到全部系统资源,例如,你可以经过统计IDE控制器当前状态来比较磁盘利用率,或者直接经过网络带宽数值来比较磁盘的吞吐率(在相同的时间间隔内)。ios
dstat将以列表的形式为你提供选项信息并清晰地告诉你是在何种幅度和单位显示输出。这样更好地避免了信息混乱和误报。更重要的是,它可让你更容易编写插件来收集你想要的数据信息,以从未有过的方式进行扩展。服务器
Dstat的默认输出是专门为人们实时查看而设计的,不过你也能够将详细信息经过CSV输出到一个文件,并导入到Gnumeric或者Excel生成表格中。网络
特性socket
结合了vmstat,iostat,ifstat,netstat以及更多的信息tcp
实时显示统计状况ide
在分析和排障时能够经过启用监控项并排序模块化
模块化设计测试
使用python编写的,更方便扩展示有的工做任务spa
容易扩展和添加你的计数器(请为此作出贡献)
包含的许多扩展插件充分说明了增长新的监控项目是很方便的
能够分组统计块设备/网络设备,并给出总数
能够显示每台设备的当前状态
极准确的时间精度,即使是系统负荷较高也不会延迟显示
显示准确地单位和和限制转换偏差范围
用不一样的颜色显示不一样的单位
显示中间结果延时小于1秒
支持输出CSV格式报表,并能导入到Gnumeric和Excel以生成图形
安装方法
# yum install -y dstat
使用方法
dstat的基本用法就是输入dstat命令,输出以下:
[root@test2 ~]# 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 100 0 0 0| 465B 1103B| 0 0 | 0 0 | 53 50
0 0 100 0 0 0| 0 0 | 423B 870B| 0 0 | 68 49
0 0 100 0 0 0| 0 0 | 277B 390B| 0 0 | 74 61
0 0 100 0 0 0| 0 0 | 303B 390B| 0 0 | 83 62
0 1 99 0 0 0| 0 3388k| 270B 390B| 0 0 | 185 103
0 0 100 0 0 0| 0 0 | 303B 390B| 0 0 | 104 91
0 0 100 0 0 0| 0 0 | 266B 390B| 0 0 | 107 100
0 0 100 0 0 0| 0 0 | 303B 390B| 0 0 | 107 100
0 0 100 0 0 0| 0 0 | 120B 390B| 0 0 | 87 83
0 0 100 0 0 0| 0 0 | 303B 390B| 0 0 | 105 94
0 0 100 0 0 0| 0 0 | 180B 390B| 0 0 | 94 89
0 0 100 0 0 0| 0 0 | 303B 390B| 0 0 | 100 89
这是默认输出显示的信息:
CPU状态: CPU的使用率。这项报告更有趣的部分是显示了用户,系统和空闲部分,这更好地分析了CPU当前的使用情况。若是你看到"wait"一栏中,CPU的状态是一个高使用率值,那说明系统存在一些其它问题。当CPU的状态处在"waits"时,那是由于它正在等待I/O设备(例如内存,磁盘或者网络)的响应并且尚未收到。
磁盘统计:磁盘的读写操做,这一栏显示磁盘的读、写总数。
网络统计:网络设备发送和接受的数据,这一栏显示的网络收、发数据总数。
分页统计:系统的分页活动。分页指的是一种内存管理技术用于查找系统场景,一个较大的分页代表系统正在使用大量的交换空间,或者说内存很是分散,大多数状况下你都但愿看到page in(换入)和page out(换出)的值是0 0。
系通通计:这一项显示的是中断(int)和上下文切换(csw)。这项统计仅在有比较基线时才有意义。这一栏中较高的统计值一般表示大量的进程形成拥塞,须要对CPU进行关注。你的服务器通常状况下都会运行运行一些程序,因此这项老是显示一些数值。
默认状况下,dstat每秒都会刷新数据。若是想退出dstat,你能够按"CTRL-C"键。
须要注意的是报告的第一行,一般这里全部的统计都不显示数值的。
这是因为dstat会经过上一次的报告来给出一个总结,因此第一次运行时是没有平均值和总值的相关数据。
可是dstat能够经过传递2个参数运行来控制报告间隔和报告数量。例如,若是你想要dstat输出默认监控、报表输出的时间间隔为3秒钟,而且报表中输出10个结果,你能够运行以下命令:
dstat 3 10
在dstat命令中有不少参数可选,你能够经过man dstat命令查看,大多数经常使用的参数有这些:
dstat [-afv] [options..] [delay [count]]
-a, --all:使用-cdngy 缺省的就是这样显示
-f, --full:使用 -C, -D, -I, -N and -S 显示
-v, --vmstat:使用-pmgdsc -D 显示
-c:显示CPU系统占用,用户占用,空闲,等待,中断,软件中断等信息。
-C 0,3 : 是显示cpu0和cpu3的信息。
-d:显示磁盘读写数据大小。
-D hda,total:include hda and total。
-n:显示网络状态。
-N eth1,total:有多块网卡时,指定要显示的网卡。
-l:显示系统负载状况。
-m:显示内存使用状况。
-g:显示页面使用状况。
-p:显示进程状态。
-s:显示交换分区使用状况。
-S:相似D/N。
-r:I/O请求状况。
-t:输出当前日期和时间。
-T:输出当前时间戳。
-y:系统状态。
--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
-–disk-util :显示某一时间磁盘的忙碌情况。
-–freespace :显示当前磁盘空间使用率。
-–proc-count :显示正在运行的程序数量。
-–top-bio :指出块I/O最大的进程。
-–top-cpu :图形化显示CPU占用最大的进程。
-–top-io :显示正常I/O最大的进程。
-–top-mem :显示占用最多内存的进程。
--ipc:显示ipc消息队列,信号等信息。
--socket:用来显示tcp udp端口状态。
--output 文件:此选项也比较有用,能够把状态信息以csv的格式重定向到指定的文件中,以便往后查看。例:dstat --output /root/dstat.csv & 此时让程序默默的在后台运行并把结果输出到/root/dstat.csv文件中。