MySQL性能监控工具 orzdba python版本
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计算不准确。
文章评论