MySQL监控工具之orzdba

安装 orzdba

代码SVN地址:http://code.taobao.org/p/orzdba/src/trunk/

说明:Perl脚本,用于对Linux主机和MySQL相关指标进行实时监控。

  • 修改代码160行左右配置MySQL的相关验证信息,如username,password,host,port,sock等
  • 安装tcprstat
  • 安装orzdba_rt_depend_perl_module.tar.gz依赖包(version模块、Class-Data-Inheritable模块、Module-Build模块、File-Lockfile模块)
shell> grep -n 'my $MYSQL' orzdba
160:my $MYSQL    = qq{mysql -s --skip-column-names -uroot -P$port };

shell> chmod +x orzdba

shell> ./orzdba --help

==========================================================================================
Info  :
        Created By [email protected]
Usage :
Command line options :

   -h,--help           Print Help Info. 
   -i,--interval       Time(second) Interval.    # 数据抓取间隔(秒)
   -C,--count          Times.                    # 抓取总次数
   -t,--time           Print The Current Time.
   -nocolor            Print NO Color.

   -l,--load           Print Load Info.
   -c,--cpu            Print Cpu  Info.
   -s,--swap           Print Swap Info.
   -d,--disk           Print Disk Info.
   -n,--net            Print Net  Info.

   -P,--port           Port number to use for mysql connection(default 3306).
   -S,--socket         Socket file to use for mysql connection.

   -com                Print MySQL Status(Com_select,Com_insert,Com_update,Com_delete).
   -hit                Print Innodb Hit%.
   -innodb_rows        Print Innodb Rows Status(Innodb_rows_inserted/updated/deleted/read).
   -innodb_pages       Print Innodb Buffer Pool Pages Status(Innodb_buffer_pool_pages_data/free/dirty/flushed)
   -innodb_data        Print Innodb Data Status(Innodb_data_reads/writes/read/written)
   -innodb_log         Print Innodb Log  Status(Innodb_os_log_fsyncs/written)
   -innodb_status      Print Innodb Status from Command: 'Show Engine Innodb Status'
                       (history list/ log unflushed/uncheckpointed bytes/ read views/ queries inside/queued)
   -T,--threads        Print Threads Status(Threads_running,Threads_connected,Threads_created,Threads_cached).
   -rt                 Print MySQL DB RT(us).
   -B,--bytes          Print Bytes received from/send to MySQL(Bytes_received,Bytes_sent).

   -mysql              Print MySQLInfo (include -t,-com,-hit,-T,-B).
   -innodb             Print InnodbInfo(include -t,-innodb_pages,-innodb_data,-innodb_log,-innodb_status)
   -sys                Print SysInfo   (include -t,-l,-c,-s).
   -lazy               Print Info      (include -t,-l,-c,-s,-com,-hit). 

   -L,--logfile        Print to Logfile.
   -logfile_by_day     One day a logfile,the suffix of logfile is 'yyyy-mm-dd';
                       and is valid with -L.

Sample :
   shell> nohup ./orzdba -lazy -d sda -C 5 -i 2 -L /tmp/orzdba.log  > /dev/null 2>&1 &
==========================================================================================

查看Linux主机指标

shell> ./orzdba -sys -C 10 -i 1 -t -d sda

.=================================================.
|       Welcome to use the orzdba tool !          | 
|          Yep...Chinese English~                 |
'=============== Date : 2014-12-31 ==============='

HOST: rac3   IP: 127.0.0.1

-------- -----load-avg---- ---cpu-usage--- ---swap--- -------------------------io-usage----------------------- 
  time  |  1m    5m   15m |usr sys idl iow|   si   so|   r/s    w/s    rkB/s    wkB/s  queue await svctm %util|
02:14:13| 0.08  0.02  0.01|  0   0 100   0|    0    0|    0.3    0.3     7.7      2.7   0.0    6.0   2.0   0.1|
02:14:14| 0.08  0.02  0.01|  0   3  97   0|    0    0|    0.0    3.0     0.0     11.9   0.0    4.0   1.3   0.4|
02:14:15| 0.08  0.02  0.01|  0   3  97   0|    0    0|    0.0    6.7     0.0     30.5   0.0    2.1   0.7   0.5|
02:14:16| 0.08  0.02  0.01|  0   2  98   0|    0    0|    0.0    0.0     0.0      0.0   0.0    0.0   0.0   0.0|
02:14:17| 0.08  0.02  0.01|  0   3  97   0|    0    0|    0.0    0.0     0.0      0.0   0.0    0.0   0.0   0.0|
02:14:18| 0.07  0.02  0.00|  0   3  96   0|    0    0|    0.0    0.0     0.0      0.0   0.0    0.0   0.0   0.0|
02:14:19| 0.07  0.02  0.00|  0   3  97   0|    0    0|    0.0    1.9     0.0      7.5   0.0    4.0   2.0   0.4|
02:14:20| 0.07  0.02  0.00|  0   4  96   0|    0    0|    0.0    5.0     0.0     51.7   0.0    0.8   0.4   0.2|
02:14:21| 0.07  0.02  0.00|  0   3  96   0|    0    0|    0.0    0.0     0.0      0.0   0.0    0.0   0.0   0.0|
02:14:22| 0.07  0.02  0.00|  0   4  96   0|    0    0|    0.0    0.0     0.0      0.0   0.0    0.0   0.0   0.0|
02:14:23| 0.07  0.02  0.00|  0   3  97   0|    0    0|    0.0    0.0     0.0      0.0   0.0    0.0   0.0   0.0|

-sys:打印系统信息,包括-t(打印当前时间)、-l(打印负载信息,分1分钟、5分钟、15分钟)、-c(打印cpu信息)、-s(打印交换分区信息)
-d:打印磁盘信息,需要指点磁盘设备名
-n:打印网络信息,接收和发送大小,需要指点网卡设备名

查看DISK(-d)和NET(-n)需要带具体的设备名(具体可以查看/proc/diskstats和/proc/net/dev中的设备或者可以取自iostat
和sar -n DEV)

Linux指标的数据都来自/proc目录下的相关系统元数据:
LOAD : /proc/loadavg
CPU : /proc/stat
SWAP : /proc/vmstat
DISK : /proc/diskstats
NET : /proc/net/dev

查看MySQL响应时间(rt)

通过调用tcprstat来监控MySQL的响应时间。

shell> ./orzdba -rt -C 10 -i 1 -t -d sda

.=================================================.
|       Welcome to use the orzdba tool !          | 
|          Yep...Chinese English~                 |
'=============== Date : 2014-12-31 ==============='

-------- -------------------------io-usage----------------------- --------tcprstat(us)-------- 
  time  |   r/s    w/s    rkB/s    wkB/s  queue await svctm %util|  count    avg 95-avg 99-avg|
01:53:22|    0.0    0.0     0.1      0.0   0.0    0.4   0.4   0.0|      0      0      0      0|
01:53:24|    0.0    0.0     0.0      0.0   0.0    0.0   0.0   0.0|      0      0      0      0|
01:53:25|    0.0    0.0     0.0      0.0   0.0    0.0   0.0   0.0|      0      0      0      0|
01:53:26|    0.0    0.0     0.0      0.0   0.0    0.0   0.0   0.0|      0      0      0      0|
01:53:27|    0.0    0.0     0.0      0.0   0.0    0.0   0.0   0.0|      0      0      0      0|
01:53:28|    0.0    0.0     0.0      0.0   0.0    0.0   0.0   0.0|      0      0      0      0|
01:53:29|    0.0    0.0     0.0      0.0   0.0    0.0   0.0   0.0|      0      0      0      0|
01:53:30|    0.0    0.0     0.0      0.0   0.0    0.0   0.0   0.0|      0      0      0      0|
01:53:31|    0.0    0.0     0.0      0.0   0.0    0.0   0.0   0.0|      0      0      0      0|
01:53:32|    0.0    0.0     0.0      0.0   0.0    0.0   0.0   0.0|      0      0      0      0|
01:53:33|    0.0    0.0     0.0      0.0   0.0    0.0   0.0   0.0|      0      0      0      0|

监控InnoDB的性能指标

shell> ./orzdba -innodb -C 10 -i 1

.=================================================.
|       Welcome to use the orzdba tool !          | 
|          Yep...Chinese English~                 |
'=============== Date : 2014-12-31 ==============='

-------- ---innodb bp pages status-- -----innodb data status---- --innodb log--   his --log(byte)--  read ---query--- 
  time  |   data   free  dirty flush| reads writes  read written|fsyncs written| list uflush  uckpt  view inside  que|
01:48:38|      0      0      0     0|     0      0      0      0|     0       0|    0      0      0     0     0     0|
01:48:39|    638   7553      0     0|     0      0      0      0|     0       0|  350      0       0    0     0     0|
01:48:40|    638   7553      0     0|     0      0      0      0|     0       0|  350      0       0    0     0     0|
01:48:41|    638   7553      0     0|     0      0      0      0|     0       0|  350      0       0    0     0     0|
01:48:42|    638   7553      0     0|     0      0      0      0|     0       0|  350      0       0    0     0     0|
01:48:43|    638   7553      0     0|     0      0      0      0|     0       0|  350      0       0    0     0     0|
01:48:44|    638   7553      0     0|     0      0      0      0|     0       0|  350      0       0    0     0     0|
01:48:45|    638   7553      0     0|     0      0      0      0|     0       0|  350      0       0    0     0     0|
01:48:46|    638   7553      0     0|     0      0      0      0|     0       0|  350      0       0    0     0     0|
01:48:47|    638   7553      0     0|     0      0      0      0|     0       0|  350      0       0    0     0     0|
01:48:48|    638   7553      0     0|     0      0      0      0|     0       0|  350      0       0    0     0     0|

监控MySQL Server性能

shell> ./orzdba -mysql -C 10 -i 1

.=================================================.
|       Welcome to use the orzdba tool !          | 
|          Yep...Chinese English~                 |
'=============== Date : 2014-12-31 ==============='

--------                     -QPS- -TPS-         -Hit%- ------threads------ -----bytes---- 
  time  |  ins   upd   del    sel   iud|     lor    hit| run  con  cre  cac|   recv   send|
01:45:58|    0     0     0      0     0|       0 100.00|   0    0    0    0|      0      0|
01:45:59|    0     0     0      1     0|       0 100.00|   1    2    0    0|    839     1k|
01:46:01|    0     0     0      1     0|       0 100.00|   1    2    0    0|    839     1k|
01:46:02|    0     0     0      1     0|       0 100.00|   1    2    0    0|    839     1k|
01:46:03|    0     0     0      1     0|       0 100.00|   1    2    0    0|    839     1k|
01:46:04|    0     0     0      1     0|       0 100.00|   1    2    0    0|    839     1k|
01:46:05|    0     0     0      1     0|       0 100.00|   1    2    0    0|    839     1k|
01:46:06|    0     0     0      1     0|       0 100.00|   1    2    0    0|    839     1k|
01:46:07|    0     0     0      1     0|       0 100.00|   1    2    0    0|    839     1k|
01:46:08|    0     0     0      1     0|       0 100.00|   1    2    0    0|    839     1k|
01:46:09|    0     0     0      1     0|       0 100.00|   1    2    0    0|    839     1k|

安装问题:
Usage: Socket::inet_ntoa(ip_address_sv) at ./orz line 477

因主机名不能解析,将主机名和IP写到/etc/hosts文件。

参考:
http://code.taobao.org/svn/orzdba/trunk/orzdba%E5%B7%A5%E5%85%B7%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E.pdf

整理自网络

Svoid
2014-12-30

你可能感兴趣的:(MySQL相关工具)