orzdba 是淘宝开源的一款MySQL实时性能监控工具,使用Perl语言开发,最近在github上看到一款python版本的orzdba,功能与Perl版本差不多,试用了一下,总体感觉还不错,也发现了一些问题。
监控项:
-
CPU负载
-
磁盘IO
-
网络流量
-
swap
-
MySQL QPS
-
MySQL InnoDB
-
MySQL 连接线程
-
MySQL 缓存命中率
-
MySQL 响应时间
1、下载
git clone https://github.com/cnlubo/orzdba.git
2、使用
cd orzdba
python2.7 orzdba.py -S /mysql/data/mysql.sock -p’123456′ -t -com -c -l -n eth0
输出结果:
——– —–load-avg—- —cpu-usage— —–net(B)—– ———–QPS–TPS———–
time | 1m 5m 15m |usr sys idl iow| recv send | ins upd del sel iud|
21:39:54| 0.06 0.06 0.64| 0 0 100 0| 0b 0b| 0 0 0 0 0|
21:39:55| 0.06 0.06 0.64| 0 0 100 0| 5k 6k| 0 0 0 1 0|
21:39:57| 0.05 0.06 0.64| 0 0 100 0| 6k 5k| 0 0 0 1 0|
21:39:58| 0.05 0.06 0.64| 0 0 100 0| 6k 5k| 0 0 0 1 0|
21:39:59| 0.05 0.06 0.64| 0 0 100 0| 5k 4k| 0 0 0 1 0|
21:40:00| 0.05 0.06 0.64| 0 0 100 0| 5k 4k| 0 0 0 1 0|
21:40:01| 0.05 0.06 0.64| 0 0 100 0| 9k 8k| 0 0 0 2 0|
21:40:02| 0.05 0.06 0.64| 0 0 100 0| 6k 5k| 0 0 0 1 0|
21:40:03| 0.05 0.06 0.64| 0 0 100 0| 6k 4k| 0 0 0 1 0|
21:40:04| 0.05 0.06 0.64| 0 0 100 0| 6k 5k| 0 0 0 1 0|
21:40:05| 0.05 0.06 0.64| 0 0 100 0| 6k 4k| 0 0 0 1 0|
21:40:06| 0.05 0.06 0.64| 0 0 100 0| 5k 5k| 0 0 0 1 0|
21:40:07| 0.04 0.06 0.63| 0 0 100 0| 6k 5k| 0 0 0 1 0|
21:40:08| 0.04 0.06 0.63| 0 0 100 0| 5k 4k| 0 0 0 1 0|
21:40:09| 0.04 0.06 0.63| 0 0 100 0| 6k 5k| 0 0 0 1 0|
3、参数
几个重要的参数:
-
-t 显示时间
-
-l 显示cpu负载
-
-c 显示cpu占用
-
-d 显示磁盘IO,如-d vdb
-
-n 显示网络流量,如-n eth0
-
-com 显示MySQL QPS
-
-innodb 显示InnoDB监控信息
-
-T 显示MySQL连接线程信息
-
-B 显示MySQL接收,发送的数据量
-
-rt 显示响应时间
-
-hit 显示MySQL缓存命中率
全部参数,如下:
optional arguments:
-h, –help show this help message and exit
-i INTERVAL, –interval INTERVAL
Time(second) Interval.
-t, –time Print The Current Time.
-sys print SysInfo (include -l,-c,-s).
-l, –load Print Load Info.
-c, –cpu Print Cpu Info.
-d DISK, –disk DISK Print Disk Info.
-n NET, –net NET Print Net Info.Time.
-s, –swap Print The Swap Info.
-com print mysql status.
-innodb_rows Print Innodb Rows Status.
-innodb_pages Print Innodb Buffer Pool Pages Status.
-innodb_data Print Innodb Data Status.
-innodb_log Print Innodb Log Status.
-innodb_status Print Innodb Status from Command: “Show Engine Innodb
Status”.
-innodb Print Innodb Info.
-T, –threads Print Threads Status.
-B, –bytes Print Bytes Status.
-rt Print MySQL DB RT.
-hit Print Innodb Hit%
-mysql print SysInfo (Print MySQLInfo (include
-t,-com,-hit,-T,-B).
-P PORT, –port PORT Port number to use for mysql connection(default 3306).
-S SOCKET, –socket SOCKET
Socket file to use for mysql connection.
-p PWD, –pwd PWD root user password.
-C COUNT, –count COUNT
Times.
-L LOGFILE, –logfile LOGFILE
ath of logfile.
-logfile_by_day one day a logfile.
-lazy Print Info (include -t,-l,-c,-s,-m,-hit).
4、问题
-
-n 参数监控网络流量,在RedHat 6.3 上流量值不准确。代码中通过周期性读取 /proc/net/dev 中的值来计算网卡流量,不同Linux发行版 /proc/net/dev 读出来的值格式不同,可能源码作者也没有在RedHat 6.3上测试过。
-
-com 监控MySQL QPS时,有一些SQL无法被监控,比如insert,只取了MySQL状态变量中的Com_insert,而Com_insert_select没有计算在内,导致insert的QPS计算不准确。