轉(zhuǎn)載:http://blog.51cto.com/arthur376/1888931
orzdba是淘寶DBA團(tuán)隊開發(fā)出來的一個perl監(jiān)控腳本,主要功能是監(jiān)控mysql數(shù)據(jù)庫,也有一些磁盤和cpu的監(jiān)控選項,好不好用就見仁見智,畢竟各公司需求不盡相同.
安裝:
既然是perl腳本,那當(dāng)然是先裝各種perl相關(guān)的依賴包和控件:
yum?install-y?perl-Test-Simple.x86_64?perl-Time-HiRes?perl-ExtUtils-CBuilder?
yum?install-y?perl-ExtUtils-MakeMaker?perl-DBD-MySQL?perl-DBI?perl-Module-Build
還有一個依賴命令:
#先下載下來
wget?http://github.com/downloads/Lowercases/tcprstat/tcprstat-static.v0.3.1.x86_64
#移動到/usr/bin
mvtcprstat-static.v0.3.1.x86_64??/usr/bin/
#做個連接
ln-sf?/usr/bin/tcprstat-static.v0.3.1.x86_64?/usr/bin/tcprstat
然后來下載腳本和依賴包,
http://code.taobao.org/svn/orzdba/trunk
或者這樣也可以
#先安裝svn客戶端
yum?install-y?subversion
#或
apt-get?install-y?subversion
#然后下載
svn?co?http://code.taobao.org/svn/orzdba/trunk
A????trunk/orzdba_rt_depend_perl_module.tar.gz
A????trunk/orzdba
A????trunk/orzdba工具使用說明.pdf
取出版本?4。
----------------------------------------------------------------------------------
這個我已經(jīng)上傳到51cto了,大家可以直接去下載,全部在里面
http://down.51cto.com/data/2277755
然后這個也是修改過的腳本,直接修改26-29行的變量就行,不用跳到160行修改,
catorzdba
my??$used?=?'root';????#用戶名
my??$pswd?=?'****';????#密碼
my??$ipdz?=?'127.0.0.1';????#ip地址
my??$port?=?3306;???????#?-P?端口號
-----------------------------------------------------------------------------------
下載回來的包會有個壓縮包,要安裝里面的控件,
#先解壓
tarxf?orzdba_rt_depend_perl_module.tar.gz
#進(jìn)去解壓后的文件夾
cdPerl_Module
#里面有幾個壓縮包,一個個來安裝
tarxf?version-0.99.tar.gz
cdversion-0.99
perl?Makefile.PL
make
makeinstall
cd..
tarxf?File-Lockfile-v1.0.5.tar.gz?
cdFile-Lockfile-v1.0.5?
perl?Build.PL
perl?./Build
perl?./Buildinstall
cd..
tarxf?Class-Data-Inheritable-0.08.tar.gz
cdClass-Data-Inheritable-0.08?
perl?Makefile.PL?
make
makeinstall
cd..
tarxf?Module-Build-0.31.tar.gz?
cdModule-Build-0.31?
perl?Build.PL?
./Build
./Buildinstall
當(dāng)然了,還要改下配置,不然你怎么確認(rèn)他連的是哪里呢?
#需要在代碼160行左右配置MySQL的相關(guān)驗證信息,如username,password,host,port,sock等,改成類似下面這樣
#如果你是用我上傳到51cto的包,那就改26-29行就行了
grep-n?'my?$MYSQL'orzdba
160:my?$MYSQL?=?qq{mysql?-s?--skip-column-names?-uroot?-p123123?-h127.0.0.1?-P$port?};
#然后改一下host信息,不然會報錯(不要在意我的計算機(jī)名)
cat/etc/hosts
172.17.0.2????32044b19ae8c
#最后,加個執(zhí)行權(quán)限吧
chmod+x?orzdba
這個時候就可以用了.
使用:
當(dāng)然了,有很多參數(shù),請看最后面一一列舉,現(xiàn)在來看看怎么用:
./orzdba-lazy?-rt?2>/dev/null
.=================================================.
|???????Welcome?to?use?the?orzdba?tool?!??????????|?
|??????????Yep...Chinese?English~?????????????????|
'===============?Date?:?2017-01-04?==============='
HOST:?32044b19ae8c???IP:?172.17.0.2
DB??:?XXX|XXX|XXX
Var?:?binlog_format[ROW]?max_binlog_cache_size[17179869184G]?max_binlog_size[500M]?
??????max_connect_errors[100000]?max_connections[200]?max_user_connections[150]?
??????open_files_limit[65535]?sync_binlog[0]?table_definition_cache[656]?
??????table_open_cache[512]?thread_cache_size[51]?
??????innodb_adaptive_flushing[ON]?innodb_adaptive_hash_index[ON]?innodb_buffer_pool_size[512M]?
??????innodb_file_per_table[ON]?innodb_flush_log_at_trx_commit[2]?innodb_flush_method[]?
??????innodb_io_capacity[200]?innodb_lock_wait_timeout[10]?innodb_log_buffer_size[16M]?
??????innodb_log_file_size[512M]?innodb_log_files_in_group[2]?innodb_max_dirty_pages_pct[35]?
??????innodb_open_files[65535]?innodb_read_io_threads[4]?innodb_thread_concurrency[0]?
??????innodb_write_io_threads[4]?
--------?-----load-avg----?---cpu-usage---?---swap---?????????????????????-QPS-?-TPS-?????????-Hit%-?--------tcprstat(us)--------?
??time|??1m????5m???15m?|usr?sys?idl?iow|???si???so|??ins???upd???del????sel???iud|?????lor????hit|??count????avg?95-avg?99-avg|
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|
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|
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|
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|
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|
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|
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|
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|
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|
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|
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|
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|
注釋:
count:此間隔內(nèi)處理完成的請求數(shù)量
avg:此間隔內(nèi)所有完成的請求,響應(yīng)的平均時間
95_avg:此間隔內(nèi),95%的請求量的平均響應(yīng)時間,單位微妙,該值較能體現(xiàn)MySQL Server的查詢平均響應(yīng)時間
注意:在mysql5.6版本之后,如果明文輸出密碼會有警告提示,造成輸出異常,所以我們需要加上這個參數(shù):2>/dev/null,來把它過濾掉.
監(jiān)控InnoDB的各項指標(biāo):
./orzdba-innodb?2>/dev/null
.=================================================.
|???????Welcome?to?use?the?orzdba?tool?!??????????|?
|??????????Yep...Chinese?English~?????????????????|
'===============?Date?:?2017-01-04?==============='
HOST:?32044b19ae8c???IP:?172.17.0.2
DB??:?xxx|xxx|xxx
Var?:?binlog_format[ROW]?max_binlog_cache_size[17179869184G]?max_binlog_size[500M]?
??????max_connect_errors[100000]?max_connections[200]?max_user_connections[150]?
??????open_files_limit[65535]?sync_binlog[0]?table_definition_cache[656]?
??????table_open_cache[512]?thread_cache_size[51]?
??????innodb_adaptive_flushing[ON]?innodb_adaptive_hash_index[ON]?innodb_buffer_pool_size[512M]?
??????innodb_file_per_table[ON]?innodb_flush_log_at_trx_commit[2]?innodb_flush_method[]?
??????innodb_io_capacity[200]?innodb_lock_wait_timeout[10]?innodb_log_buffer_size[16M]?
??????innodb_log_file_size[512M]?innodb_log_files_in_group[2]?innodb_max_dirty_pages_pct[35]?
??????innodb_open_files[65535]?innodb_read_io_threads[4]?innodb_thread_concurrency[0]?
??????innodb_write_io_threads[4]?
--------?---innodb?bp?pages?status--?-----innodb?data?status----?--innodb?log--???his?--log(byte)--??read---query---?
??time|???data???freedirty?flush|?reads?writes??readwritten|fsyncs?written|?list?uflush??uckpt??view?inside??que|
14:48:03|??????0??????0??????0?????0|?????0??????0??????0??????0|?????0???????0|????0??????0??????0?????0?????0?????0|
14:48:04|??29961???1024??????0?????0|?????0??????0??????0??????0|?????0???????0|?1754??????0???????0????0?????0?????0|
14:48:05|??29961???1024??????0?????0|?????0??????0??????0??????0|?????0???????0|?1754??????0???????0????0?????0?????0|
14:48:06|??29961???1024??????0?????0|?????0??????0??????0??????0|?????0???????0|?1754??????0???????0????0?????0?????0|
14:48:07|??29961???1024??????0?????0|?????0??????0??????0??????0|?????0???????0|?1754??????0???????0????0?????0?????0|
14:48:08|??29961???1024??????0?????0|?????0??????0??????0??????0|?????0???????0|?1754??????0???????0????0?????0?????0|
14:48:09|??29961???1024??????0?????0|?????0??????0??????0??????0|?????0???????0|?1754??????0???????0????0?????0?????0|
14:48:10|??29961???1024??????0?????0|?????0??????0??????0??????0|?????0???????0|?1754??????0???????0????0?????0?????0|
14:48:11|??29961???1024??????0?????0|?????0??????0??????0??????0|?????0???????0|?1754??????0???????0????0?????0?????0|
監(jiān)控MySQL Server性能:
./orzdba-mysql?2>/dev/null
.=================================================.
|???????Welcome?to?use?the?orzdba?tool?!??????????|?
|??????????Yep...Chinese?English~?????????????????|
'===============?Date?:?2017-01-04?==============='
HOST:?32044b19ae8c???IP:?172.17.0.2
DB??:?xxx|xxx|xxx
Var?:?binlog_format[ROW]?max_binlog_cache_size[17179869184G]?max_binlog_size[500M]?
??????max_connect_errors[100000]?max_connections[200]?max_user_connections[150]?
??????open_files_limit[65535]?sync_binlog[0]?table_definition_cache[656]?
??????table_open_cache[512]?thread_cache_size[51]?
??????innodb_adaptive_flushing[ON]?innodb_adaptive_hash_index[ON]?innodb_buffer_pool_size[512M]?
??????innodb_file_per_table[ON]?innodb_flush_log_at_trx_commit[2]?innodb_flush_method[]?
??????innodb_io_capacity[200]?innodb_lock_wait_timeout[10]?innodb_log_buffer_size[16M]?
??????innodb_log_file_size[512M]?innodb_log_files_in_group[2]?innodb_max_dirty_pages_pct[35]?
??????innodb_open_files[65535]?innodb_read_io_threads[4]?innodb_thread_concurrency[0]?
??????innodb_write_io_threads[4]?
--------?????????????????????-QPS-?-TPS-?????????-Hit%-?------threads------?-----bytes----?
??time|??ins???upd???del????sel???iud|?????lor????hit|?run??con??cre??cac|???recv???send|
14:49:30|????0?????0?????0??????0?????0|???????0?100.00|???0????0????0????0|??????0??????0|
14:49:31|????0?????0?????0??????4?????0|?????179?100.00|???1???79????0???15|?????1k????74k|
14:49:32|????0?????0?????0??????5?????0|????4228?100.00|???1???79????0???15|?????2k?????6k|
14:49:33|????0?????0?????0??????1?????0|???????0?100.00|???1???79????0???15|????846?????1k|
14:49:34|????0?????0?????0??????1?????0|???????0?100.00|???1???79????0???15|????846?????1k|
14:49:35|????0?????0?????0??????1?????0|???????0?100.00|???1???79????0???15|????846?????1k|
14:49:36|????0?????0?????0??????1?????0|???????0?100.00|???1???79????0???15|????846?????1k|
14:49:37|????0?????0?????0??????1?????0|???????0?100.00|???1???79????0???15|????846?????1k|
14:49:38|????0?????0?????0??????1?????0|???????0?100.00|???1???79????0???15|????972?????1k|
14:49:39|????0?????0?????0??????1?????0|???????0?100.00|???1???79????0???15|????846?????1k|
14:49:40|????0?????0?????0??????8?????0|??????16?100.00|???1???79????0???15|?????2k?????4k|
14:49:41|????0?????0?????0??????1?????0|???????0?100.00|???1???79????0???15|????846?????1k|
14:49:42|????0?????0?????0??????1?????0|???????0?100.00|???1???79????0???15|????846?????1k|
還有幾個稍微列舉下,各位自己試試了
#查看Linux主機(jī)指標(biāo)
./orzdba-sys?-C?10?-i?1?-t?-d?sda
-sys:打印系統(tǒng)信息,包括-t(打印當(dāng)前時間)、-l(打印負(fù)載信息,分1分鐘、5分鐘、15分鐘)、-c(打印cpu信息)、-s(打印交換分區(qū)信息)
-d:打印磁盤信息,需要指點磁盤設(shè)備名
-n:打印網(wǎng)絡(luò)信息,接收和發(fā)送大小,需要指點網(wǎng)卡設(shè)備名
查看DISK(-d)和NET(-n)需要帶具體的設(shè)備名(具體可以查看/proc/diskstats和/proc/net/dev中的設(shè)備或者可以取自iostat
和sar -n DEV)
Linux指標(biāo)的數(shù)據(jù)都來自/proc目錄下的相關(guān)系統(tǒng)元數(shù)據(jù):
LOAD : /proc/loadavg
CPU : /proc/stat
SWAP : /proc/vmstat
DISK : /proc/diskstats
NET : /proc/net/dev
#查看MySQL響應(yīng)時間(rt)
./orzdba-rt?-C?10?-i?1?-t?-d?sda
-C : 打印10次
-i : 間隔1秒
注釋:
./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 &
==========================================================================================