cpu监控:dstat

首先我们使用dstat命令来查看下我们的CPU情况,他能够实时的输出我们的信息,

dstat 2 10(每2秒采集一次共采集10次)

安装
[root@node01 ~]# yum -y install dstat
[root@node01 ~]# dstat 2 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   1  98   1   0   0|  96k 7914B|   0     0 |   0     0 |  71    87 
  0   0 100   0   0   0|   0     0 |  90B  189B|   0     0 |  46    40 
  0   1 100   0   0   0|   0     0 |  90B   85B|   0     0 |  45    36 
  0   0 100   0   0   0|   0     0 |  90B   85B|   0     0 |  51    42 
  1   1  99   0   0   0|   0     0 |  90B   85B|   0     0 |  45    36 
  0   0 100   0   0   0|   0     0 | 150B   85B|   0     0 |  43    34 
  0   0 100   0   0   0|   0     0 | 210B  115B|   0     0 |  50    39 
  0   1  99   0   0   0|   0   768B|  90B   85B|   0     0 |  48    41 
  1   1  99   0   0   0|   0     0 | 120B   85B|   0     0 |  60    48 
  0   0 100   0   0   0|   0     0 | 120B  115B|   0     0 |  44    36 
  0   1  99   0   0   0|   0     0 |  90B   85B|   0     0 |  44    35 

结果说明:

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

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

二、介绍

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

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

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

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

特性

  • 结合了vmstat,iostat,ifstat,netstat以及更多的信息
  • 实时显示统计情况
  • 在分析和排障时可以通过启用监控项并排序
  • 模块化设计
  • 使用python编写的,更方便扩展现有的工作任务
  • 容易扩展和添加你的计数器(请为此做出贡献)
  • 包含的许多扩展插件充分说明了增加新的监控项目是很方便的
  • 可以分组统计块设备/网络设备,并给出总数
  • 可以显示每台设备的当前状态
  • 极准确的时间精度,即便是系统负荷较高也不会延迟显示
  • 显示准确地单位和和限制转换误差范围
  • 用不同的颜色显示不同的单位
  • 显示中间结果延时小于1秒
  • 支持输出CSV格式报表,并能导入到Gnumeric和Excel以生成图形

使用方法

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

[root@node01 ~]# 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  98   1   0   0|  86k 7160B|   0     0 |   0     0 |  69    82 
  0   0 100   0   0   0|   0    18k|  60B  378B|   0     0 |  87    90 
  0   0 100   0   0   0|   0     0 | 120B  230B|   0     0 |  87    76 
  0   1  99   0   0   0|   0     0 |  60B  170B|   0     0 |  85    77 
  0   0 100   0   0   0|   0     0 |  60B  170B|   0     0 |  88    77 
  0   1  99   0   0   0|   0     0 |  60B  170B|   0     0 |  85    79 
  0   0 100   0   0   0|   0     0 |  60B  170B|   0     0 |  82    75 
  0   1  99   0   0   0|   0     0 |  60B  170B|   0     0 |  87    78 
  0   0 100   0   0   0|   0     0 |  60B  170B|   0     0 |  86    76 
  1   1  98   0   0   0|   0     0 |  60B  170B|   0     0 |  93    86 
  0   0 100   0   0   0|   0     0 |  60B  170B|   0     0 |  90    78 
  0   0 100   0   0   0|   0     0 |  60B  170B|   0     0 |  89    79 
  0   1  99   0   0   0|   0     0 |  60B  170B|   0     0 |  76    70 

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

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个结果,你可以运行如下命令:

  1. dstat 3 10

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

  • -l :显示负载统计量
  • -m :显示内存使用率(包括used,buffer,cache,free值)
  • -r :显示I/O统计
  • -s :显示交换分区使用情况
  • -t :将当前时间显示在第一行
  • –fs :显示文件系统统计数据(包括文件总数量和inodes值)
  • –nocolor :不显示颜色(有时候有用)
  • –socket :显示网络统计数据
  • –tcp :显示常用的TCP统计
  • –udp :显示监听的UDP接口及其当前用量的一些动态数据
  • -c:表示只显示我们的CPU信息

  • -p:表示只显示我们的进程信息

  •  -n:表示只显示我们的网络信息

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

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

举一些例子:

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

[root@node01 ~]# 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 0.02 0.05| 130M 2232k  177M  666M|   0  1000M|tuned       16.0M
   0     0 |   0 0.02 0.05| 130M 2232k  177M  666M|   0  1000M|tuned       16.0M
   0     0 |   0 0.02 0.05| 130M 2232k  177M  666M|   0  1000M|tuned       16.0M
   0     0 |   0 0.02 0.05| 130M 2232k  177M  666M|   0  1000M|tuned       16.0M
   0     0 |   0 0.02 0.05| 130M 2232k  177M  666M|   0  1000M|tuned       16.0M
   0     0 |   0 0.02 0.05| 130M 2232k  177M  666M|   0  1000M|tuned       16.0M
   0     0 |   0 0.02 0.05| 130M 2232k  177M  666M|   0  1000M|tuned       16.0M
   0     0 |   0 0.02 0.05| 130M 2232k  177M  666M|   0  1000M|tuned       16.0M
   0     0 |   0 0.02 0.05| 130M 2232k  177M  666M|   0  1000M|tuned       16.0M
   0     0 |   0 0.02 0.05| 130M 2232k  177M  666M|   0  1000M|tuned       16.0M
   0     0 |   0 0.02 0.05| 130M 2232k  177M  666M|   0  1000M|tuned       16.0M
   0     0 |   0 0.02 0.05| 130M 2232k  177M  666M|   0  1000M|tuned       16.0M
   0     0 |   0 0.02 0.05| 130M 2232k  177M  666M|   0  1000M|tuned       16.0M
   0     0 |   0 0.02 0.05| 130M 2232k  177M  666M|   0  1000M|tuned       16.0M
   0     0 |   0 0.02 0.05| 130M 2232k  177M  666M|   0  1000M|tuned       16.0M
   0     0 |   0 0.02 0.05| 130M 2232k  177M  666M|   0  1000M|tuned       16.0M
   0     0 |   0 0.02 0.05| 130M 2232k  177M  666M|   0  1000M|tuned       16.0M
   0     0 |   0 0.02 0.05| 130M 2232k  177M  666M|   0  1000M|tuned       16.0M

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

[root@node01 ~]# 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  98   1   0   0|  68    80 |   0 0.01 0.05|  92|vmtoolsd     0.2
  1   0  99   0   0   0|  46    42 |   0 0.01 0.05|  92|                
  1   2  97   0   0   0|  86    52 |   0 0.01 0.05|  92|kworker/0:0  1.0
  3   1  96   0   0   0|  84    50 |   0 0.01 0.05|  92|                
  1   1  98   0   0   0|  77    46 |   0 0.01 0.05|  92|vmtoolsd     1.0
  2   1  97   0   0   0|  75    41 |   0 0.01 0.05|  92|                
  3   2  95   0   0   0| 115    66 |   0 0.01 0.05|  92|tuned        1.0
  2   1  97   0   0   0|  92    61 |   0 0.01 0.05|  92|rsyslogd     1.0
  2   1  97   0   0   0|  86    49 |   0 0.01 0.05|  92|                
  2   1  97   0   0   0|  82    48 |   0 0.01 0.05|  92|sshd: root@pt1.0
  2   2  96   0   0   0|  88    49 |   0 0.01 0.05|  92|kworker/0:0  1.0
原文地址:https://www.cnblogs.com/liujunjun/p/12513082.html