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、问题
  1. -n 参数监控网络流量,在RedHat 6.3 上流量值不准确。代码中通过周期性读取 /proc/net/dev 中的值来计算网卡流量,不同Linux发行版 /proc/net/dev 读出来的值格式不同,可能源码作者也没有在RedHat 6.3上测试过。
  2. -com 监控MySQL QPS时,有一些SQL无法被监控,比如insert,只取了MySQL状态变量中的Com_insert,而Com_insert_select没有计算在内,导致insert的QPS计算不准确。

发表评论