mirror of
				https://github.com/librenms/librenms-agent.git
				synced 2024-05-09 09:54:52 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			132 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env python2
 | |
| 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]
 |