查看原文
其他

Linux终端下全能系统监控工具dstat

2016-10-07 运维之美

dstat命令是一个用来替换vmstat、iostat、netstat、nfsstat和ifstat这些命令的工具,是一个全能系统信息统计工具。

与sysstat相比,dstat拥有一个彩色的界面,在手动观察性能状况时,数据比较显眼容易观察;而且dstat支持即时刷新,譬如输入dstat 3即每三秒收集一次,但最新的数据都会每秒刷新显示。

和sysstat相同的是,dstat也可以收集指定的性能资源,譬如dstat -c即显示CPU的使用情况。

下载安装

方法一

$ yum install -y dstat

方法二

官网下载地址:

$ wget http://dag.wieers.com/rpm/packages/dstat/dstat-0.6.7-1.rh7.rf.noarch.rpm
$ rpm -ivh dstat-0.6.7-1.rh7.rf.noarch.rpm

使用说明

安装完后就可以使用了,dstat非常强大,可以实时的监控cpu、磁盘、网络、IO、内存等使用情况。

直接使用dstat,默认使用的是-cdngy参数,分别显示cpu、disk、net、page、system信息,默认是1s显示一条信息。可以在最后指定显示一条信息的时间间隔,如dstat 5是没5s显示一条,dstat 5 10表示没5s显示一条,一共显示10条。




下面对显示出来的部分信息作一些说明:

  • cpu:hiq、siq分别为硬中断和软中断次数。

  • system:int、csw分别为系统的中断次数(interrupt)和上下文切换(context switch)。


其他的都很好理解。

语法

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

常用选项

-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还有很多更高级的用法,常用的基本这些选项,更高级的用法可以结合man文档。

监测界面各参数含义(部分)

Procs


  • r:运行的和等待(CPU时间片)运行的进程数,这个值也可以判断是否需要增加CPU(长期大于1)

  • b:处于不可中断状态的进程数,常见的情况是由IO引起的


Memory


  • swpd: 切换到交换内存上的内存(默认以KB为单位)。如果 swpd 的值不为0,或者还比较大,比如超过100M了,但是 si, so 的值长期为 0,这种情况我们可以不用担心,不会影响系统性能。

  • free: 空闲的物理内存

  • buff: 作为buffer cache的内存,对块设备的读写进行缓冲

  • cache: 作为page cache的内存, 文件系统的cache。如果 cache 的值大的时候,说明cache住的文件数多,如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi 会非常小。


Swap


  • si: 交换内存使用,由磁盘调入内存

  • so: 交换内存使用,由内存调入磁盘


内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响。磁盘IO和CPU资源都会被消耗。


我发现有些朋友看到空闲内存(free)很少或接近于0时,就认为内存不够用了,实际上不能光看这一点的,还要结合si,so,如果free很少,但是si,so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。


磁盘IO


  • bi: 从块设备读入的数据总量(读磁盘) (KB/s)

  • bo: 写入到块设备的数据总理(写磁盘) (KB/s)


注:随机磁盘读写的时候,这2个 值越大(如超出1M),能看到CPU在IO等待的值也会越大


System


  • in: 每秒产生的中断次数

  • cs: 每秒产生的上下文切换次数


上面这2个值越大,会看到由内核消耗的CPU时间会越多


Cpu


  • usr: 用户进程消耗的CPU时间百分比


    us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么我们就该考虑优化程序算法或者进行加速了(比如 PHP/Perl)


  • sys: 内核进程消耗的CPU时间百分比


    sys 的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。


  • wai: IO等待消耗的CPU时间百分比


    wa 的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。


  • idl: CPU处在空闲状态时间百分比


实例

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




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




这样生成的csv文件可以用excel打开,然后生成图表。

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

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




来源:Linux命令大全

原文:http://t.cn/RcrXu4v

题图:来自谷歌图片搜索

版权:本文版权归原作者所有


更多精彩热文:




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存