代码SVN地址:http://code.taobao.org/p/orzdba/src/trunk/
说明:Perl脚本,用于对Linux主机和MySQL相关指标进行实时监控。
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 &
==========================================================================================
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
通过调用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|
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|
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