#!/usr/bin/env python import warnings import re warnings.filterwarnings(action="ignore", message='the sets module is deprecated') import sets import MySQLdb import base64 conn = MySQLdb.connect(host='', user='', passwd='', db='') cursor = conn.cursor () cursor.execute ("SHOW GLOBAL STATUS") rows = cursor.fetchall() datavariables = { 'Command Counters': ['Com_delete','Com_insert','Com_insert_select','Com_load','Com_replace','Com_replace_select', 'Com_select', 'Com_update', 'Com_update_multi'], 'Connections': ['max_connections', 'Max_used_connections', 'Aborted_clients', 'Aborted_connects','Threads_connected','Connections'], 'Files and Tables': ['table_open_cache','Open_files','Open_tables','Opened_tables'], 'InnoDB Buffer Pool': ['ib_bpool_size','ib_bpool_dbpages', 'ib_bpool_free','ib_bpool_modpages'], 'InnoDB Buffer Pool Activity': ['ib_bpool_read','ib_bpool_created', 'ib_bpool_written'], 'InnoDB Insert Buffer': ['ib_ibuf_inserts','ib_ibuf_merged_rec', 'ib_ibuf_merges'], 'InnoDB IO': ['ib_io_read','ib_io_write','ib_io_log', 'ib_io_fsync'], 'InnoDB IO Pending': ['ib_iop_log','ib_iop_sync', 'ib_iop_flush_log', 'ib_iop_flush_bpool', 'ib_iop_ibuf_aio','ib_iop_aioread','ib_iop_aiowrite'], 'InnoDB Log': ['innodb_log_buffer_size','ib_log_flush','ib_log_written'], 'InnoDB Row Operations': ['Innodb_rows_deleted','Innodb_rows_inserted','Innodb_rows_read','Innodb_rows_updated'], 'InnoDB Semaphores': ['ib_spin_rounds','ib_spin_waits','ib_os_waits'], 'InnoDB Transactions': ['ib_tnx'], 'MyISAM Indexes': ['Key_read_requests','Key_reads','Key_write_requests','Key_writes'], 'Network Traffic': ['Bytes_received','Bytes_sent'], 'Query Cache': ['Qcache_queries_in_cache','Qcache_hits','Qcache_inserts','Qcache_not_cached','Qcache_lowmem_prunes'], 'Query Cache Memory': ['query_cache_size','Qcache_free_memory'], 'Select Types': ['Select_full_join','Select_full_range_join','Select_range','Select_range_check','Select_scan'], 'Slow Queries': ['Slow_queries'], 'Sorts': ['Sort_rows','Sort_range','Sort_merge_passes','Sort_scan'], 'Table Locks': ['Table_locks_immediate','Table_locks_waited'], 'Temporary Objects': ['Created_tmp_disk_tables','Created_tmp_tables','Created_tmp_files'] } data = {} for row in rows: data[row[0]] = row[1] cursor = "" cursor = conn.cursor () cursor.execute ("SHOW VARIABLES") rows = cursor.fetchall() for row in rows: data[row[0]] = row[1] cursor = "" cursor = conn.cursor() cursor.execute("SHOW ENGINE INNODB STATUS") rows = cursor.fetchall() for row in rows: for line in row[2].split("\n"): ib_bpool_size = re.match(r"Buffer\spool\ssize\s+(\d+)", line) ib_bpool_free = re.match(r"Free\sbuffers\s+(\d+)", line) ib_bpool_dbpages = re.match(r"Database\spages\s+(\d+)", line) ib_bpool_modpages = re.match(r"Modified\sdb\spages\s+(\d+)", line) ib_b_reg = re.match(r"Pages\sread\s(\d+),\screated\s(\d+),\swritten (\d+)", line) ib_insert_buffer = re.match(r"(\d+)\sinserts,\s(\d+)\smerged\srecs,\s(\d+)", line) ib_io = re.match(r"(\d+)\sOS\sfile\sreads,\s(\d+)\sOS\sfile\swrites,\s(\d+)\sOS\sfsyncs", line) ib_io_log = re.match(r"(\d+)\slog\si\/o's\sdone.*", line) ib_io_p1 = re.match(r"Pending\snormal\saio\sreads:\s(\d+),\saio\swrites:\s(\d+),", line) ib_io_p2 = re.match(r"\s?ibuf\saio\sreads:\s(\d+),\slog\si\/o's:\s(\d+),\ssync\si\/o's:\s(\d+)", line) ib_io_p3 = re.match(r"\s?Pending\sflushes\s\(fsync\)\slog:\s(\d+);\sbuffer\spool:\s(\d+)\s?", line) ib_log_p1 = re.match(r"\s?Log\ssequence\snumber\s([[a-fA-F\d]+)(?: (\d+))?", line) ib_log_p2 = re.match(r"\s?Log\sflushed\sup\sto\s+([[a-fA-F\d]+)(?: (\d+))?", line) ib_semaphore = re.match(r"\s?Mutex\sspin\swaits\s(\d+),\srounds\s(\d+),\sOS waits\s(\d+)", line) ib_tnx = re.match(r"\s?Trx\sid\scounter\s([[a-fA-F\d]+)(?: (\d+))?", line) if ib_bpool_size: data['ib_bpool_size'] = ib_bpool_size.group(1) elif ib_bpool_free: data['ib_bpool_free'] = ib_bpool_free.group(1) elif ib_bpool_dbpages: data['ib_bpool_dbpages'] = ib_bpool_dbpages.group(1) elif ib_bpool_modpages: data['ib_bpool_modpages'] = ib_bpool_modpages.group(1) elif ib_insert_buffer: data['ib_ibuf_inserts'] = ib_insert_buffer.group(1) data['ib_ibuf_merged_rec'] = ib_insert_buffer.group(2) data['ib_ibuf_merges'] = ib_insert_buffer.group(3) elif ib_io: data['ib_io_read'] = ib_io.group(1) data['ib_io_write'] = ib_io.group(2) data['ib_io_fsync'] = ib_io.group(3) elif ib_io_log: data['ib_io_log'] = ib_io_log.group(1) elif ib_io_p1: data['ib_iop_aioread'] = ib_io_p1.group(1) data['ib_iop_aiowrite'] = ib_io_p1.group(2) elif ib_io_p2: data['ib_iop_ibuf_aio'] = ib_io_p2.group(1) data['ib_iop_log'] = ib_io_p2.group(2) data['ib_iop_sync'] = ib_io_p2.group(3) elif ib_io_p3: data['ib_iop_flush_log'] = ib_io_p3.group(1) data['ib_iop_flush_bpool'] = ib_io_p3.group(2) elif ib_log_p1: data['ib_log_written'] = ib_log_p1.group(1) if ib_log_p1.group(2): data['ib_log_written'] = int(data['ib_log_written']) + int(ib_log_p1.group(2)) elif ib_log_p2: data['ib_log_flush'] = ib_log_p2.group(1) if ib_log_p2.group(2): data['ib_log_flush'] = int(data['ib_log_flush']) + int(ib_log_p2.group(2)) elif ib_semaphore: data['ib_spin_waits'] = ib_semaphore.group(1) data['ib_spin_rounds'] = ib_semaphore.group(2) data['ib_os_waits'] = ib_semaphore.group(3) elif ib_tnx: data['ib_tnx'] = ib_tnx.group(1) if ib_tnx.group(2): data['ib_tnx'] = int(data['ib_tnx']) + int(ib_tnx.group(2)) elif ib_b_reg: data['ib_bpool_read'] = ib_b_reg.group(1) data['ib_bpool_created'] = ib_b_reg.group(2) data['ib_bpool_written'] = ib_b_reg.group(3) for category in datavariables: for variable in datavariables[category]: if variable in data: print data[variable]