Linux dstat性能监控工具使用简介

在做性能测试,免不了需要linux监控工具和命令,而且行业中也有很多成熟的性能监控工具,网上也是一搜一大把,对于不同项目需要的选型,也造成一定干扰,到底哪个比较好用,哪个监控比较全面,谁也没有很好的解释,最后也是自己经过一系列的查找,终于找到一个可以综合监控的小工具dstat,以下内容经过查找网上资料收集而成。

 

简述


dstat 是一个可以取代vmstat,iostat,netstatifstat这些命令的多功能产品。dstat克服了这些命令的局限并增加了一些另外的功能,增加了监控项,也变得更灵活了。dstat可以很方便监控系统运行状况并用于基准测试和排除故障。

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

dstat将以列表的形式为你提供选项信息并清晰地告诉你是在何种幅度和单位显示输出。这样更好地避免了信息混乱和误报。更重要的是,它可以让你更容易编写插件来收集你想要的数据信息,以从未有过的方式进行扩展。

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

 

特性


⒈结合了vmstat,iostat,ifstat,netstat以及更多的信息

⒉实时显示统计情况

⒊在分析和排障时可以通过启用监控项并排序

⒋模块化设计

5.使用python编写的,更方便扩展现有的工作任务

6.容易扩展和添加你的计数器(请为此做出贡献)

7.包含的许多扩展插件充分说明了增加新的监控项目是很方便的

8.可以分组统计块设备/网络设备,并给出总数

9.可以显示每台设备的当前状态

10.极准确的时间精度,即便是系统负荷较高也不会延迟显示

11.显示准确地单位和和限制转换误差范围

12.用不同的颜色显示不同的单位

13.显示中间结果延时小于1秒

14.支持输出CSV格式报表,并能导入到Gnumeric和Excel以生成图形

 

安装方法


Ubuntu/Mint和Debin系统:

本地软件库中有相关安装包,你可以用下面命令安装:

# sudo apt-get install dstat

RHEL/Centos和Fedora系统:

你可以在romforge软件库中添加有相关安装包,参照指导,使用如下命令很简单就能进行安装:

# yum install dstat

ArchLinux系统:

相关软件包在社区资源库中,你可以用这个命令来安装:

# pacman -S dstat

 

使用方法


dstat的基本用法就是输入dstat命令,输出如下:

这是默认输出显示的信息:

[root@real-server2 ~]# dd if=/dev/zero  off=/tmp/my.txt count=2048 bs=1M
dd: unrecognized operand ?.ff=/tmp/my.txt?
Try 'dd --help' for more information.
[root@real-server2 ~]# dd if=/dev/zero  of=/tmp/my.txt count=2048 bs=1M
^C2023+0 records in
2023+0 records out
2121269248 bytes (2.1 GB) copied, 36.5666 s, 58.0 MB/s


[root@real-server2 ~]# 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 
  2  95   0   0   0   3|   0    98M|  60B  346B|   0     0 | 856   164 
  0  90   0   0   0  10|   0    57M|  60B  842B|   0     0 | 537   120 
  2  96   0   0   0   2|   0    33M|  60B  346B|   0     0 | 548    77 
  0  92   0   0   0   8|   0    83M|  60B  346B|   0     0 | 415    85 
  3  86   0   0   0  11|  32k   43M|  60B  346B|   0     0 | 427   116 
  3  90   0   0   0   8|   0    54M|  60B  362B|   0     0 | 482   140 
  2  93   0   0   0   5|   0    39M| 120B  406B|   0     0 | 476   110 
  0  96   0   0   0   4|   0    55M|  60B  346B|   0     0 | 643   177 
  0  96   0   0   0   4|   0    64M| 150B  406B|   0     0 | 687   184 
  2  95   0   0   0   3|   0    75M|  60B  346B|   0     0 | 727   190 
  2  94   0   0   0   4|8192B   84M| 120B  346B|   0     0 | 739   206 
  0  85   0   0   0  15|   0    49M| 120B  362B|   0     0 | 277    98 
  0  97   0   0   0   3|   0    24M| 120B  346B|   0     0 | 400    70 

针对默认输出字段解释如下:

分组分组含义及子项字段含义
CPU状态CPU的使用率。显示了用户占比,系统占比、空闲占比、等待占比、硬中断和软中断情况。             
磁盘统计  磁盘的读写,分别显示磁盘的读、写总数。
网络统计  网络设备发送和接受的数据,分别显示的网络收、发数据总数。
分页统计  系统的分页活动。分别显示换入(in)和换出(out)。
系统统计  统计中断(int)和上下文切换(csw)。

CPU状态:CPU的使用率。这项报告更有趣的部分是显示了用户,系统和空闲部分,这更好地分析了CPU当前的使用状况。如果你看到"wait"一栏中,CPU的状态是一个高使用率值,那说明系统存在一些其它问题。当CPU的状态处在"waits"时,那是因为它正在等待I/O设备(例如内存,磁盘或者网络)的响应而且还没有收到。

磁盘统计(dsk):磁盘的读写操作,这一栏显示磁盘的读、写总数。

网络统计(net):网络设备发送和接受的数据,这一栏显示的网络收、发数据总数。

分页统计(paging):系统的分页活动。分页指的是一种内存管理技术用于查找系统场景,一个较大的分页表明系统正在使用大量的交换空间,或者说内存非常分散,大多数情况下你都希望看到page in(换入)和page out(换出)的值是0 0。

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

 

参数和插件


在dstat命令中有很多参数可选,你可以通过man dstat命令查看,大多数常用的参数有这些:

  • -l :显示负载统计量,分别是1m,5m,15m
  • -c:开启cpu统计
  • -y:开启系统统计,包括中断和上下文切换
  • -m :显示内存使用率(包括used,buffer,cache,free值)
  • -r :显示I/O统计
  • -s :显示交换分区使用情况
  • -t :将当前时间显示在第一行
  • -g:开启分页统计
  • –fs :显示文件系统统计数据(包括文件总数量和inodes值)
  • –nocolor :不显示颜色(有时候有用)
  • –socket :显示网络统计数据
  • –tcp :显示常用的TCP统计
  • –udp :显示监听的UDP接口及其当前用量的一些动态数据

当然不止这些用法,dstat附带了一些插件很大程度地扩展了它的功能。你可以通过查看/usr/share/dstat目录来查看它们的一些使用方法,常用的有这些:

  • -–disk-util :显示某一时间磁盘的忙碌状况
  • -–freespace :显示当前磁盘空间使用率
  • -–proc-count :显示正在运行的程序数量
  • -–top-bio :指出块I/O最大的进程
  • -–top-cpu :图形化显示CPU占用最大的进程
  • -–top-io :显示正常I/O最大的进程
  • -–top-mem :显示占用最多内存的进程

举一些例子:

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

[root@localhost ~]# dstat -glms --top-mem
---paging-- ---load-avg--- ------memory-usage----- ----swap--- --most-expensive-
  in   out | 1m   5m  15m | used  buff  cach  free| used  free|  memory process 
 365k  681k|0.02 0.04 0.05| 369M 2076k  455M 2193M|1748k  510M|dockerd     70.0M
   0     0 |0.02 0.04 0.05| 369M 2076k  455M 2193M|1748k  510M|dockerd     70.0M
   0     0 |0.02 0.04 0.05| 369M 2076k  455M 2193M|1748k  510M|dockerd     70.0M
   0     0 |0.02 0.04 0.05| 369M 2076k  455M 2192M|1748k  510M|dockerd     70.0M^C

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

[root@localhost ~]# dstat -cyl --top-cpu
----total-cpu-usage---- ---system-- ---load-avg--- -most-expensive-
usr sys idl wai hiq siq| int   csw | 1m   5m  15m |  cpu process   
  0   1  99   0   0   0| 151   289 |   0 0.02 0.05|containerd   0.7
  0   1  99   0   0   0| 131   250 |   0 0.02 0.05|containerd   2.0
  1   1  98   0   0   0| 142   250 |   0 0.02 0.05|                
  2   1  97   0   0   0| 142   234 |   0 0.02 0.05|                
  1   0  99   0   0   0| 139   244 |   0 0.02 0.05|                
  1   1  98   0   0   0| 149   238 |   0 0.02 0.05|kworker/0:0  1.0
  2   1  97   0   0   0| 151   256 |   0 0.02 0.05|    

想输出一个csv格式的文件用于以后,可以通过下面的命令:

# dstat –output /tmp/sampleoutput.csv -cdn


总结


常见问题
1、cpu分组中”wait”,如果一直处于高使用率,那说明系统存在一些其它问题。当CPU的状态处在”waits”时,那是因为它正在等待I/O设备(例如内存,磁盘或者网络)的响应而且还没有收到。
2、CPU的使用情况是否正常:用户态和内核态的使用是否合理;总体占比是否合理;若不合理可以用dstat对应的插件(- -top-cpu)排查最耗CPU的进程,配合mpstat、top再去下钻一下分析线程,进一步到程序(比如java可以jstack)。
3、磁盘IO读写是否正常:读写是否偏大;若不正常可以配合插件- -disk-util、- -freespace、- -top-bio、- -top-io等进行排查,也可以配合iostat排查
3、内存是否正常:一般要配合交换区内存一起判断,若不正常可以配合插件- -top-mem,可能是开启的进程太多,或者第三方程序捣乱。
4、应用程序内存是否正常:配合业务表现比如请求响应慢、没反应等,在结合第三方程序监控(如java可以用jvm监控工具(jprofiler、jconsole、jvisualvm……)监控内存)此种情况和3还不太一样,一个jvm内存一个sys内存
5、分页指的是一种内存管理技术用于查找系统场景,一个较大的分页表明系统正在使用大量的交换空间,或者说内存非常分散,大多数情况下你都希望看到page in(换入)和page out(换出)的值都是0。
6、系统统计仅在有比较基线时才有意义。中断和上下文切换较高的统计值通常表示大量的进程造成拥塞,需要对CPU进行关注。服务器一般情况下都会运行运行一些程序,所以这项总是显示一些数值。
7、使用不同的插件可以快速排查有问题的进程然后配合其他工具下钻具体问题,当然这个需要建立在你对所有的插件都比较熟悉的基础之上,知道什么情况下使用什么插件。技巧:可以将常用的命令写成脚本,执行分析,这样就不用每次都敲了。
 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值