orzdba是淘寶DBA團隊開發出來的一個perl監控腳本,主要功能是監控mysql資料庫,也有一些磁盤和cpu的監控選項,好不好用就見仁見智,畢竟各公司需求不盡相同.
安裝:
既然是perl腳本,那當然是先裝各種perl相關的依賴包和控件:
<code>yum </code><code>install</code> <code>-y perl-Test-Simple.x86_64 perl-Time-HiRes perl-ExtUtils-CBuilder </code>
<code>yum </code><code>install</code> <code>-y perl-ExtUtils-MakeMaker perl-DBD-MySQL perl-DBI perl-Module-Build</code>
還有一個依賴指令:
<code>#先下載下傳下來</code>
<code>wget http:</code><code>//github</code><code>.com</code><code>/downloads/Lowercases/tcprstat/tcprstat-static</code><code>.v0.3.1.x86_64</code>
<code>#移動到/usr/bin</code>
<code>mv</code> <code>tcprstat-static.v0.3.1.x86_64 </code><code>/usr/bin/</code>
<code>#做個連接配接</code>
<code>ln</code> <code>-sf </code><code>/usr/bin/tcprstat-static</code><code>.v0.3.1.x86_64 </code><code>/usr/bin/tcprstat</code>
然後來下載下傳腳本和依賴包,
http://code.taobao.org/svn/orzdba/trunk
或者這樣也可以
<code>#先安裝svn用戶端</code>
<code>yum </code><code>install</code> <code>-y subversion</code>
<code>#或</code>
<code>apt-get </code><code>install</code> <code>-y subversion</code>
<code>#然後下載下傳</code>
<code>svn co http:</code><code>//code</code><code>.taobao.org</code><code>/svn/orzdba/trunk</code>
<code>A trunk</code><code>/orzdba_rt_depend_perl_module</code><code>.</code><code>tar</code><code>.gz</code>
<code>A trunk</code><code>/orzdba</code>
<code>A trunk</code><code>/orzdba</code><code>工具使用說明.pdf</code>
<code>取出版本 4。</code>
----------------------------------------------------------------------------------
這個我已經上傳到51cto了,大家可以直接去下載下傳,全部在裡面
http://down.51cto.com/data/2277755
然後這個也是修改過的腳本,直接修改26-29行的變量就行,不用跳到160行修改,
<code>cat</code> <code>orzdba</code>
<code>my $used = </code><code>'root'</code><code>; </code><code>#使用者名</code>
<code>my $pswd = </code><code>'****'</code><code>; </code><code>#密碼</code>
<code>my $ipdz = </code><code>'127.0.0.1'</code><code>; </code><code>#ip位址</code>
<code>my $port = 3306; </code><code># -P 端口号</code>
-----------------------------------------------------------------------------------
下載下傳回來的包會有個壓縮包,要安裝裡面的控件,
<code>#先解壓</code>
<code>tar</code> <code>xf orzdba_rt_depend_perl_module.</code><code>tar</code><code>.gz</code>
<code>#進去解壓後的檔案夾</code>
<code>cd</code> <code>Perl_Module</code>
<code>#裡面有幾個壓縮包,一個個來安裝</code>
<code>tar</code> <code>xf version-0.99.</code><code>tar</code><code>.gz</code>
<code>cd</code> <code>version-0.99</code>
<code>perl Makefile.PL</code>
<code>make</code>
<code>make</code> <code>install</code>
<code>cd</code> <code>..</code>
<code>tar</code> <code>xf File-Lockfile-v1.0.5.</code><code>tar</code><code>.gz </code>
<code>cd</code> <code>File-Lockfile-v1.0.5 </code>
<code>perl Build.PL</code>
<code>perl .</code><code>/Build</code>
<code>perl .</code><code>/Build</code> <code>install</code>
<code>tar</code> <code>xf Class-Data-Inheritable-0.08.</code><code>tar</code><code>.gz</code>
<code>cd</code> <code>Class-Data-Inheritable-0.08 </code>
<code>perl Makefile.PL </code>
<code>tar</code> <code>xf Module-Build-0.31.</code><code>tar</code><code>.gz </code>
<code>cd</code> <code>Module-Build-0.31 </code>
<code>perl Build.PL </code>
<code>.</code><code>/Build</code>
<code>.</code><code>/Build</code> <code>install</code>
當然了,還要改下配置,不然你怎麼确認他連的是哪裡呢?
<code>#需要在代碼160行左右配置MySQL的相關驗證資訊,如username,password,host,port,sock等,改成類似下面這樣</code>
<code>#如果你是用我上傳到51cto的包,那就改26-29行就行了</code>
<code>grep</code> <code>-n </code><code>'my $MYSQL'</code> <code>orzdba</code>
<code>160:my $MYSQL = qq{mysql -s --skip-column-names -uroot -p123123 -h127.0.0.1 -P$port };</code>
<code>#然後改一下host資訊,不然會報錯(不要在意我的計算機名)</code>
<code>cat</code> <code>/etc/hosts</code>
<code>172.17.0.2 32044b19ae8c</code>
<code>#最後,加個執行權限吧</code>
<code>chmod</code> <code>+x orzdba</code>
這個時候就可以用了.
使用:
當然了,有很多參數,請看最後面一一列舉,現在來看看怎麼用:
<code>.</code><code>/orzdba</code> <code>-lazy -rt 2></code><code>/dev/null</code>
<code>.=================================================.</code>
<code>| Welcome to use the orzdba tool ! | </code>
<code>| Yep...Chinese English~ |</code>
<code>'=============== Date : 2017-01-04 ==============='</code>
<code>HOST: 32044b19ae8c IP: 172.17.0.2</code>
<code>DB : XXX|XXX|XXX</code>
<code>Var : binlog_format[ROW] max_binlog_cache_size[17179869184G] max_binlog_size[500M] </code>
<code> </code><code>max_connect_errors[100000] max_connections[200] max_user_connections[150] </code>
<code> </code><code>open_files_limit[65535] sync_binlog[0] table_definition_cache[656] </code>
<code> </code><code>table_open_cache[512] thread_cache_size[51] </code>
<code> </code><code>innodb_adaptive_flushing[ON] innodb_adaptive_hash_index[ON] innodb_buffer_pool_size[512M] </code>
<code> </code><code>innodb_file_per_table[ON] innodb_flush_log_at_trx_commit[2] innodb_flush_method[] </code>
<code> </code><code>innodb_io_capacity[200] innodb_lock_wait_timeout[10] innodb_log_buffer_size[16M] </code>
<code> </code><code>innodb_log_file_size[512M] innodb_log_files_in_group[2] innodb_max_dirty_pages_pct[35] </code>
<code> </code><code>innodb_open_files[65535] innodb_read_io_threads[4] innodb_thread_concurrency[0] </code>
<code> </code><code>innodb_write_io_threads[4] </code>
<code>-------- -----load-avg---- ---cpu-usage--- ---swap--- -QPS- -TPS- -Hit%- --------tcprstat(us)-------- </code>
<code> </code><code>time</code> <code>| 1m 5m 15m |usr sys idl iow| si so| ins upd del sel iud| lor hit| count avg 95-avg 99-avg|</code>
<code>14:43:31| 0.36 0.23 0.17| 1 0 98 0| 0 0| 0 0 0 0 0| 0 100.00| 0 0 0 0|</code>
<code>14:43:32| 0.36 0.23 0.17| 3 1 95 0| 0 0| 0 0 0 1 0| 0 100.00| 0 0 0 0|</code>
<code>14:43:33| 0.36 0.23 0.17| 4 2 94 0| 0 0| 0 0 0 1 0| 0 100.00| 0 0 0 0|</code>
<code>14:43:34| 0.36 0.23 0.17| 4 1 95 0| 0 0| 0 0 0 1 0| 0 100.00| 0 0 0 0|</code>
<code>14:43:35| 0.33 0.23 0.17| 2 1 97 0| 0 0| 0 0 0 1 0| 0 100.00| 0 0 0 0|</code>
<code>14:43:36| 0.33 0.23 0.17| 3 1 95 0| 0 0| 0 0 0 1 0| 0 100.00| 0 0 0 0|</code>
<code>14:43:37| 0.33 0.23 0.17| 4 1 95 0| 0 0| 0 0 0 1 0| 0 100.00| 0 0 0 0|</code>
<code>14:43:38| 0.33 0.23 0.17| 3 1 97 0| 0 0| 0 0 0 1 0| 0 100.00| 0 0 0 0|</code>
<code>14:43:39| 0.30 0.22 0.16| 2 1 97 0| 0 0| 0 0 0 1 0| 0 100.00| 0 0 0 0|</code>
<code>14:43:40| 0.30 0.22 0.16| 3 1 96 0| 0 0| 0 0 0 8 0| 16 100.00| 0 0 0 0|</code>
<code>14:43:41| 0.30 0.22 0.16| 3 1 97 0| 0 0| 0 0 0 1 0| 0 100.00| 0 0 0 0|</code>
<code>14:43:42| 0.30 0.22 0.16| 2 1 97 0| 0 0| 0 0 0 1 0| 0 100.00| 0 0 0 0|</code>
注釋:
count:此間隔内處理完成的請求數量
avg:此間隔内所有完成的請求,響應的平均時間
95_avg:此間隔内,95%的請求量的平均響應時間,機關微妙,該值較能展現MySQL Server的查詢平均響應時間
注意:在mysql5.6版本之後,如果明文輸出密碼會有警告提示,造成輸出異常,是以我們需要加上這個參數:2>/dev/null,來把它過濾掉.
監控InnoDB的各項名額:
<code>.</code><code>/orzdba</code> <code>-innodb 2></code><code>/dev/null</code>
<code>DB : xxx|xxx|xxx</code>
<code>-------- ---innodb bp pages status-- -----innodb data status---- --innodb log-- his --log(byte)-- </code><code>read</code> <code>---query--- </code>
<code> </code><code>time</code> <code>| data </code><code>free</code> <code>dirty flush| reads writes </code><code>read</code> <code>written|fsyncs written| list uflush uckpt view inside que|</code>
<code>14:48:03| 0 0 0 0| 0 0 0 0| 0 0| 0 0 0 0 0 0|</code>
<code>14:48:04| 29961 1024 0 0| 0 0 0 0| 0 0| 1754 0 0 0 0 0|</code>
<code>14:48:05| 29961 1024 0 0| 0 0 0 0| 0 0| 1754 0 0 0 0 0|</code>
<code>14:48:06| 29961 1024 0 0| 0 0 0 0| 0 0| 1754 0 0 0 0 0|</code>
<code>14:48:07| 29961 1024 0 0| 0 0 0 0| 0 0| 1754 0 0 0 0 0|</code>
<code>14:48:08| 29961 1024 0 0| 0 0 0 0| 0 0| 1754 0 0 0 0 0|</code>
<code>14:48:09| 29961 1024 0 0| 0 0 0 0| 0 0| 1754 0 0 0 0 0|</code>
<code>14:48:10| 29961 1024 0 0| 0 0 0 0| 0 0| 1754 0 0 0 0 0|</code>
<code>14:48:11| 29961 1024 0 0| 0 0 0 0| 0 0| 1754 0 0 0 0 0|</code>
監控MySQL Server性能:
<code>.</code><code>/orzdba</code> <code>-mysql 2></code><code>/dev/null</code>
<code>-------- -QPS- -TPS- -Hit%- ------threads------ -----bytes---- </code>
<code> </code><code>time</code> <code>| ins upd del sel iud| lor hit| run con cre cac| recv send|</code>
<code>14:49:30| 0 0 0 0 0| 0 100.00| 0 0 0 0| 0 0|</code>
<code>14:49:31| 0 0 0 4 0| 179 100.00| 1 79 0 15| 1k 74k|</code>
<code>14:49:32| 0 0 0 5 0| 4228 100.00| 1 79 0 15| 2k 6k|</code>
<code>14:49:33| 0 0 0 1 0| 0 100.00| 1 79 0 15| 846 1k|</code>
<code>14:49:34| 0 0 0 1 0| 0 100.00| 1 79 0 15| 846 1k|</code>
<code>14:49:35| 0 0 0 1 0| 0 100.00| 1 79 0 15| 846 1k|</code>
<code>14:49:36| 0 0 0 1 0| 0 100.00| 1 79 0 15| 846 1k|</code>
<code>14:49:37| 0 0 0 1 0| 0 100.00| 1 79 0 15| 846 1k|</code>
<code>14:49:38| 0 0 0 1 0| 0 100.00| 1 79 0 15| 972 1k|</code>
<code>14:49:39| 0 0 0 1 0| 0 100.00| 1 79 0 15| 846 1k|</code>
<code>14:49:40| 0 0 0 8 0| 16 100.00| 1 79 0 15| 2k 4k|</code>
<code>14:49:41| 0 0 0 1 0| 0 100.00| 1 79 0 15| 846 1k|</code>
<code>14:49:42| 0 0 0 1 0| 0 100.00| 1 79 0 15| 846 1k|</code>
還有幾個稍微列舉下,各位自己試試了
<code>#檢視Linux主機名額</code>
<code>.</code><code>/orzdba</code> <code>-sys -C 10 -i 1 -t -d sda</code>
-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
<code>#檢視MySQL響應時間(rt)</code>
<code>.</code><code>/orzdba</code> <code>-rt -C 10 -i 1 -t -d sda</code>
-C : 列印10次
-i : 間隔1秒
注釋:
./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 &
本文轉自arthur376 51CTO部落格,原文連結:http://blog.51cto.com/arthur376/1888931,如需轉載請自行聯系原作者