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

Posted ITPUB技术小栈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 终端下全能系统监控工具 dstat相关的知识,希望对你有一定的参考价值。

点击蓝色字关注 "CU技术社区" 一起玩耍哦~



dstat 命令是一个用来替换  vmstatiostatnetstatnfsstat 和  ifstat 这些命令的工具,是一个全能系统信息统计工具。与 sysstat 相比,dstat 拥有一个彩色的界面,在手动观察性能状况时,数据比较显眼容易观察;而且 dstat 支持即时刷新,譬如输入  dstat 3 即每三秒收集一次,但最新的数据都会每秒刷新显示。和 sysstat 相同的是,dstat 也可以收集指定的性能资源,譬如  dstat -c 即显示 CPU 的使用情况。

 下载安装 

方法一

yum install -y dstat

方法二 官网下载地址:

http://dag.wieers.com/rpm/packages/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 条。

[root@iZ23uulau1tZ ~]# dstat 
----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|7706B 164k| 0 0 | 0 0 | 189 225
0 0 100 0 0 0| 0 0 |4436B 826B| 0 0 | 195 248
1 0 99 0 0 0| 0 0 |4744B 346B| 0 0 | 203 242
0 0 100 0 0 0| 0 0 |5080B 346B| 0 0 | 206 242
0 1 99 0 0 0| 0 0 |5458B 444B| 0 0 | 214 244
1 0 99 0 0 0| 0 0 |5080B 346B| 0 0 | 208 242

下面对显示出来的部分信息作一些说明: 
  1. cpu:hiq、siq 分别为硬中断和软中断次数。 
  2. 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 并显示监控的时间:

[root@iZ23uulau1tZ ~]# dstat -tsp --socket --fs
----system---- ----swap--- ---procs--- ------sockets------ --filesystem-
date/time | used free|run blk new|tot tcp udp raw frg|files inodes
26-07 09:23:48| 0 0 | 0 0 0.0|104 8 5 0 0| 704 6488
26-07 09:23:49| 0 0 | 0 0 0|104 8 5 0 0| 704 6488
26-07 09:23:50| 0 0 | 0 0 0|104 8 5 0 0| 704 6489
26-07 09:23:51| 0 0 | 0 0 0|104 8 5 0 0| 704 6489
26-07 09:23:52| 0 0 | 0 0 0|104 8 5 0 0| 704 6489
26-07 09:23:53| 0 0 | 0 0 0|104 8 5 0 0| 704 6489


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

[root@iZ23uulau1tZ ~]# dstat -tsp --socket --fs --output /tmp/ds.csv 
----system---- ----swap--- ---procs--- ------sockets------ --filesystem-
date/time | used free|run blk new|tot tcp udp raw frg|files inodes
26-07 09:25:31| 0 0 | 0 0 0.0|104 8 5 0 0| 736 6493
26-07 09:25:32| 0 0 | 0 0 0|104 8 5 0 0| 736 6493
26-07 09:25:33| 0 0 | 0 0 0|104 8 5 0 0| 736 6493
26-07 09:25:34| 0 0 | 0 0 0|104 8 5 0 0| 736 6493
26-07 09:25:35| 0 0 | 0 0 0|104 8 5 0 0| 736 6494
26-07 09:25:36| 0 0 | 0 0 0|104 8 5 0 0| 736 6494

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

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

[root@iZ23uulau1tZ ~]# 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-util, 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, rpc, rpcd, sendmail, snooze, thermal, top-bio, top-cpu, top-cputime, top-cputime-avg, top-io, 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 命令的基本用法就说到这里,更多用法有待摸索,如果您需要补充内容在后台留言,谢谢!


公众号 ID | 运维之美
来自 | Linux 命令大全
原文 | http://man.linuxde.net/dstat

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

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

数领先机 智赢未来

DTCC2018

中国数据库技术大会(简称 DTCC)是国内数据库及大数据领域规模最大、最受欢迎的技术交流盛会,每年一届。自 2010 年以来,迄今已成功举办了八届,累计参与人次达到 20000+。DTCC 每年都将邀请百余位行业专家,就热点技术话题进行分享,为数据库人群、大数据从业人员、广大互联网人士及行业相关人士提供最具价值的交流平台。


2018 年 5 月 10-12 日,第九届中国数据库技术大会(DTCC2018)将如约而至。本届大会以 “数领先机 • 智赢未来” 为主题,设定 2 大主会场及 20 个技术专场,邀请来自国内外互联网、金融、教育等行业百余位技术专家,共同探讨 Oracle、MySQL、NoSQL、大数据、机器学习、区块链、数据可视化等领域的前瞻性热点话题与技术。

点击左下阅读原文,立即购票~

以上是关于Linux 终端下全能系统监控工具 dstat的主要内容,如果未能解决你的问题,请参考以下文章

Linux终端下 dstat 监控工具

Linux终端下 dstat 监控工具

Linux性能监控器-dstat

Linux操作系统监控服务器CPU内存磁盘网络和dstat

dstat下性能监控工具之----dstat

dstat下性能监控工具之----dstat