MySQL監控工具之orzdba

svoid發表於2014-12-30

安裝 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 zhuxu@taobao.com
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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29733787/viewspace-1385509/,如需轉載,請註明出處,否則將追究法律責任。

相關文章