├── README.md ├── bin ├── __pycache__ │ └── mongo.cpython-35.pyc ├── insert_mysql.py ├── mongo.py └── select_mysql.py ├── conf └── conf ├── index.py └── lib ├── __pycache__ ├── innodb_autid.cpython-35.pyc ├── innodb_con.cpython-35.pyc ├── innodb_status.cpython-35.pyc ├── select.cpython-35.pyc └── slave_status.cpython-35.pyc ├── innodb_autid.py ├── innodb_con.py ├── innodb_status.py └── slave_status.py /README.md: -------------------------------------------------------------------------------- 1 | # On-Site-Inspection 2 | 3 | -1.要先进行mongo安装和配置 启动用户和密码 创建abc库 4 | 5 | -mongo 用户配置在conf下面conf 6 | -2.启动要巡检的MySQL程序 7 | -收集要巡检的MySQL的信息 8 | -执行 9 | -bin目录下面inser_mysql.py 10 | -录入相关信息 11 | -3.录入好之后 执行 index.py 12 | -把巡检信息收集到mongo中 13 | -4.通过 bin目录下select_mysql 进行巡检分析 14 | - 15 | -5. lib下面二个文件 是MySQL的一个收集参数文件和手机状态信息文件 16 | - 17 | -index.py 是收集程序 18 | - 19 | -内部使用 没做异常处理 20 | -------------------------------------------------------------------------------- /bin/__pycache__/mongo.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/enmotplinux/On-Site-Inspection/f662e68e4441d93dd77570adb36afda544a50be1/bin/__pycache__/mongo.cpython-35.pyc -------------------------------------------------------------------------------- /bin/insert_mysql.py: -------------------------------------------------------------------------------- 1 | # coding = utf-8 2 | import sys,os,json 3 | from pymongo import MongoClient 4 | sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 5 | 6 | 7 | 8 | def conf_mo(host,user,password,db,port): 9 | 10 | a_json = json.load(open('../conf/conf','r')) 11 | conn = MongoClient(a_json['host'], int(a_json['port'])) 12 | db_auth=conn.abc 13 | db_auth.authenticate(a_json['user'], a_json['passwd']) 14 | db_auth.user.insert({'host':host,'user':user,'password':password ,'db':db,'port':port}) 15 | 16 | host_host=input('host:') 17 | user_user=input('user:') 18 | paswd=input('password:') 19 | db_db='mysql' 20 | port_port=str(input('port:')) 21 | 22 | conf_mo(host_host,user_user,paswd,db_db,port_port) 23 | 24 | 25 | -------------------------------------------------------------------------------- /bin/mongo.py: -------------------------------------------------------------------------------- 1 | # coding = utf-8 2 | import sys,os,json 3 | from pymongo import MongoClient 4 | sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 5 | from lib import innodb_con as lib_conf 6 | from lib import innodb_status as lib_status 7 | from lib import slave_status as lib_slave 8 | from lib import innodb_autid as lib_autid 9 | 10 | 11 | def conf_conf(host,user,password,db,port): 12 | a_b=lib_conf.conf(host,user,password,db,port) 13 | json_json=json.dumps(a_b) 14 | return json_json 15 | 16 | 17 | def status_status(host,user,password,db,port): 18 | b_c=lib_status.mysql_page(host,user,password,db,port) 19 | json_json=json.dumps(b_c) 20 | return json_json 21 | 22 | 23 | def slave_status(host,user,password,db,port): 24 | b_c=lib_slave.slave_slave(host,user,password,db,port) 25 | json_json=json.dumps(b_c) 26 | return json_json 27 | 28 | 29 | def aut_status(host,user,password,db,port): 30 | b_c=lib_autid.auth_status(host,user,password,db,port) 31 | json_json=json.dumps(b_c) 32 | return json_json 33 | 34 | def conf_mo(ip_port,host,user,password,db,port): 35 | a_json = json.load(open('./conf/conf', 'r')) 36 | conn=MongoClient(a_json['host'],int(a_json['port'])) 37 | db_auth=conn.abc 38 | db_auth.authenticate(a_json['user'],a_json['passwd']) 39 | aa=conf_conf(host,user,password,db,port) 40 | #print(aa) 41 | db_auth.conf.insert({'ip':ip_port,'local':aa}) 42 | 43 | 44 | def conf_status(ip_port,host,user,password,db,port): 45 | a_json = json.load(open('./conf/conf', 'r')) 46 | conn = MongoClient(a_json['host'], int(a_json['port'])) 47 | db_auth=conn.abc 48 | db_auth.authenticate(a_json['user'], a_json['passwd']) 49 | aa=status_status(host,user,password,db,port) 50 | #print(aa) 51 | db_auth.status.insert({'ip':ip_port,'local':aa}) 52 | 53 | 54 | def conf_slave(ip_port,host,user,password,db,port): 55 | a_json = json.load(open('./conf/conf', 'r')) 56 | conn = MongoClient(a_json['host'], int(a_json['port'])) 57 | db_auth=conn.abc 58 | db_auth.authenticate(a_json['user'], a_json['passwd']) 59 | aa=slave_status(host,user,password,db,port) 60 | #print(aa) 61 | db_auth.slave.insert({'ip':ip_port,'local':aa}) 62 | 63 | def conf_autid(ip_port,host,user,password,db,port): 64 | a_json = json.load(open('./conf/conf', 'r')) 65 | conn = MongoClient(a_json['host'], int(a_json['port'])) 66 | db_auth=conn.abc 67 | db_auth.authenticate(a_json['user'], a_json['passwd']) 68 | aa=aut_status(host,user,password,db,port) 69 | #print(aa) 70 | db_auth.aut.insert({'ip':ip_port,'local':aa}) 71 | 72 | 73 | 74 | 75 | def main (ip,host,user,password,db,port): 76 | conf_mo(ip,host,user,password,db,port) 77 | conf_status(ip,host,user,password,db,port) 78 | conf_slave(ip,host,user,password,db,port) 79 | conf_autid(ip, host, user, password, db, port) -------------------------------------------------------------------------------- /bin/select_mysql.py: -------------------------------------------------------------------------------- 1 | # coding = utf-8 2 | from pymongo import MongoClient 3 | import json 4 | a_json = json.load(open('../conf/conf', 'r')) 5 | conn = MongoClient(a_json['host'], int(a_json['port'])) 6 | db_auth = conn.abc 7 | 8 | 9 | def conf(ip_port): 10 | for data in db_auth.conf.find({'ip':ip_port}): 11 | aa=eval(data['local']) 12 | abc=''' 13 | -------------------------------------------------------------------------------------------- 14 | 'server_id'=%s 15 | 'log_bin' =%s 16 | 'port'=%s 17 | 'sql_mode'=%s 18 | 'datadir'=%s 19 | 'binlog_format'=%s 20 | 'read_only'=%s 21 | 'log_slave_updates'=%s 22 | 'innodb_file_per_table'=%s 23 | 'slave_skip_errors'=%s 24 | -------------------------------------------------------------------------------------------- 25 | 'innodb_flush_log_at_trx_commit' = %s 26 | 'sync_binlog'=%s 27 | --------------------------------------------------------------------------------------------- 28 | 'innodb_buffer_pool_size'=%s 29 | 'innodb_log_file_size'=%s 30 | 'query_cache_type'=%s 31 | 'query_cache_size'=%s 32 | 'sort_buffer_size'=%s 33 | 'join_buffer_size'=%s 34 | 'thread_cache_size'=%s 35 | 'key_buffer_size'=%s 36 | 'read_buffer_size'=%s 37 | 'read_rnd_buffer_size'=%s 38 | --------------------------------------------------------------------------------------------- 39 | innodb_lock_wait_timeout=%s 40 | innodb_rollback_on_timeout=%s 41 | gtid_mode=%s 42 | enforce_gtid_consistency=%s 43 | master_info_repository=%s 44 | relay_log_info_repository=%s 45 | slow_query_log_file=%s 46 | interactive_timeout=%s 47 | open_files_limit=%s 48 | max_connections=%s 49 | max_connect_errors=%s 50 | innodb_file_per_table=%s 51 | --------------------------------------------------------------------------------------------- 52 | 53 | '''%(aa['server_id'],aa['log_bin'],aa['port'],aa['sql_mode'],aa['datadir'],aa['binlog_format'], 54 | aa['read_only'],aa['log_slave_updates'],aa['innodb_file_per_table'],aa['slave_skip_errors'], 55 | aa['innodb_flush_log_at_trx_commit'],aa['sync_binlog'],aa['innodb_buffer_pool_size'], 56 | aa['innodb_log_file_size'],aa['query_cache_type'],aa['query_cache_size'], 57 | aa['sort_buffer_size'],aa['join_buffer_size'],aa['thread_cache_size'], 58 | aa['key_buffer_size'],aa['read_buffer_size'],aa['read_rnd_buffer_size'], 59 | aa['innodb_lock_wait_timeout'],aa['innodb_rollback_on_timeout'], 60 | aa['gtid_mode'],aa['enforce_gtid_consistency'],aa['master_info_repository'], 61 | aa['relay_log_info_repository'],aa['slow_query_log_file'],aa['interactive_timeout'], 62 | aa['open_files_limit'],aa['max_connections'],aa['max_connect_errors'],aa['innodb_file_per_table'] ) 63 | 64 | return abc 65 | 66 | def status(ip_port): 67 | for data in db_auth.status.find({'ip':ip_port}): 68 | aa=eval(data['local']) 69 | abb=''' 70 | --------------------------------------------------------------------------------------------- 71 | insert=%s 72 | select=%s 73 | update=%s 74 | delete=%s 75 | questions=%s 76 | com_commit=%s 77 | com_rollback=%s 78 | Innodb_rows_inserted=%s 79 | Innodb_rows_read=%s 80 | Innodb_rows_updated=%s 81 | innodb_rows_deleted=%s 82 | queries=%s 83 | --------------------------------------------------------------------------------------------- 84 | innodb_row_lock_waits=%s 85 | innodb_log_waits=%s 86 | innodb_row_lock_current_waits=%s 87 | innodb_row_lock_time=%s 88 | innodb_row_lock_current_waits=%s 89 | innodb_row_lock_time=%s 90 | table_locks_waited=%s 91 | ---------------------------------------------------------------------------------------------- 92 | threads_running=%s 93 | threads_connected=%s 94 | Aborted_clients=%s 95 | Aborted_connects=%s 96 | Connections=%s 97 | Max_used_connections=%s 98 | --------------------------------------------------------------------------------------------- 99 | 100 | '''%(aa['insert'],aa['select'],aa['update'],aa['delete'],aa['questions'],aa['com_commit'],aa['com_rollback'], 101 | aa['Innodb_rows_inserted'],aa['Innodb_rows_read'],aa['Innodb_rows_updated'], 102 | aa['innodb_rows_deleted'], 103 | aa['queries'], aa['innodb_row_lock_waits'], aa['innodb_log_waits'], aa['innodb_row_lock_current_waits'], 104 | aa['innodb_row_lock_time'], aa['innodb_row_lock_current_waits'], aa['innodb_row_lock_time'], 105 | aa['table_locks_waited'],aa['threads_running'],aa['threads_connected'],aa['Aborted_clients'], 106 | aa['Aborted_connects'],aa['Connections'],aa['Max_used_connections'] 107 | ) 108 | return abb 109 | 110 | 111 | 112 | def main(ip_port): 113 | print(conf(ip_port)) 114 | print(status(ip_port)) 115 | 116 | 117 | ip_port1 = input('ip_port:') 118 | main(ip_port=ip_port1) 119 | -------------------------------------------------------------------------------- /conf/conf: -------------------------------------------------------------------------------- 1 | { 2 | "host":"192.168.230.134", 3 | "user":"tplinux", 4 | "passwd":"redhat", 5 | "db":"abc", 6 | "port":27017 7 | } -------------------------------------------------------------------------------- /index.py: -------------------------------------------------------------------------------- 1 | # coding = utf-8 2 | import sys,os,json 3 | from pymongo import MongoClient 4 | 5 | 6 | sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 7 | from bin import mongo as bin_mongo 8 | 9 | # coding = utf-8 10 | def main (): 11 | a_json = json.load(open('./conf/conf', 'r')) 12 | conn=MongoClient(a_json['host'],int(a_json['port'])) 13 | db_auth = conn.abc 14 | db_auth.authenticate(a_json['user'], a_json['passwd']) 15 | 16 | for i in db_auth.user.find(): 17 | user_user=i['user'] 18 | host_host=i['host'] 19 | paswd=i['password'] 20 | db_db=i['db'] 21 | port_port=i['port'] 22 | user_port=host_host+'_'+port_port 23 | print(user_port,user_user,host_host,paswd,db_db,port_port ) 24 | bin_mongo.main(user_port,host_host,user_user,paswd,db_db,int(port_port)) 25 | 26 | 27 | main() -------------------------------------------------------------------------------- /lib/__pycache__/innodb_autid.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/enmotplinux/On-Site-Inspection/f662e68e4441d93dd77570adb36afda544a50be1/lib/__pycache__/innodb_autid.cpython-35.pyc -------------------------------------------------------------------------------- /lib/__pycache__/innodb_con.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/enmotplinux/On-Site-Inspection/f662e68e4441d93dd77570adb36afda544a50be1/lib/__pycache__/innodb_con.cpython-35.pyc -------------------------------------------------------------------------------- /lib/__pycache__/innodb_status.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/enmotplinux/On-Site-Inspection/f662e68e4441d93dd77570adb36afda544a50be1/lib/__pycache__/innodb_status.cpython-35.pyc -------------------------------------------------------------------------------- /lib/__pycache__/select.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/enmotplinux/On-Site-Inspection/f662e68e4441d93dd77570adb36afda544a50be1/lib/__pycache__/select.cpython-35.pyc -------------------------------------------------------------------------------- /lib/__pycache__/slave_status.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/enmotplinux/On-Site-Inspection/f662e68e4441d93dd77570adb36afda544a50be1/lib/__pycache__/slave_status.cpython-35.pyc -------------------------------------------------------------------------------- /lib/innodb_autid.py: -------------------------------------------------------------------------------- 1 | # coding = utf-8 2 | import pymysql 3 | def auth_status(host,user,password,db,port): 4 | conn=pymysql.connect(host=host,user=user,passwd=password,db=db,port=port) 5 | cur=conn.cursor() 6 | cur.execute('SELECT table_schema,table_name,engine,Auto_increment FROM information_schema.tables where TABLE_SCHEMA ' 7 | 'not in ("information_schema" ,"performance_schema","mysql","sys")') 8 | alldata = cur.fetchall() 9 | 10 | aa = str(host) + '_' + str(port) 11 | new_slave = { 12 | 'id': aa, 13 | 'status': alldata 14 | } 15 | return new_slave 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /lib/innodb_con.py: -------------------------------------------------------------------------------- 1 | # coding = utf-8 2 | import pymysql 3 | def conf(host,user,password,db,port): 4 | conn=pymysql.connect(host=host,user=user,passwd=password,db=db,port=port) 5 | cur=conn.cursor() 6 | cur.execute('SHOW GLOBAL VARIABLES') 7 | data_list = cur.fetchall() 8 | data_dic = {} 9 | for item in data_list: 10 | data_dic[item[0]] = item[1] 11 | return { 12 | "innodb_buffer_pool_size": data_dic['innodb_buffer_pool_size'], 13 | "sync_binlog": data_dic['sync_binlog'], 14 | 'binlog_format': data_dic['binlog_format'], 15 | 'innodb_flush_log_at_trx_commit': data_dic['innodb_flush_log_at_trx_commit'], 16 | 'read_only': data_dic['read_only'], 17 | 'innodb_log_file_size': data_dic['innodb_log_file_size'], 18 | 'log_slave_updates': data_dic['log_slave_updates'], 19 | 'innodb_io_capacity': data_dic['innodb_io_capacity'], 20 | 'innodb_max_dirty_pages_pct': data_dic['innodb_max_dirty_pages_pct'], 21 | 'query_cache_type': data_dic['query_cache_type'], 22 | 'query_cache_size': data_dic['query_cache_size'], 23 | 'innodb_file_per_table': data_dic['innodb_file_per_table'], 24 | 'max_connections': data_dic['max_connections'], 25 | 'max_connect_errors': data_dic['max_connect_errors'], 26 | 'table_open_cache': data_dic['table_open_cache'], 27 | 'slave_skip_errors': data_dic['slave_skip_errors'], 28 | 'datadir':data_dic['datadir'], 29 | 'open_files_limit':data_dic['open_files_limit'], 30 | 'sort_buffer_size':data_dic['sort_buffer_size'], 31 | 'join_buffer_size':data_dic['join_buffer_size'], 32 | 'thread_cache_size':data_dic['thread_cache_size'], 33 | 'interactive_timeout':data_dic['interactive_timeout'], 34 | 'wait_timeout':data_dic['wait_timeout'], 35 | 'log_error':data_dic['log_error'], 36 | 'slow_query_log_file':data_dic['slow_query_log_file'], 37 | 'log_queries_not_using_indexes':data_dic['log_queries_not_using_indexes'], 38 | 'server_id':data_dic['server_id'], 39 | 'log_bin':data_dic['log_bin'], 40 | 'expire_logs_days' :data_dic['expire_logs_days'], 41 | 'master_info_repository':data_dic['master_info_repository'], 42 | 'relay_log_info_repository' :data_dic['relay_log_info_repository'], 43 | 'gtid_mode' :data_dic['gtid_mode'], 44 | 'enforce_gtid_consistency':data_dic['enforce_gtid_consistency'], 45 | 'relay_log_recovery':data_dic['relay_log_recovery'], 46 | 'key_buffer_size' :data_dic['key_buffer_size'], 47 | 'read_buffer_size':data_dic['read_buffer_size'], 48 | 'read_rnd_buffer_size':data_dic['read_rnd_buffer_size'], 49 | 'port':data_dic['port'], 50 | 'innodb_file_format_max':data_dic['innodb_file_format_max'], 51 | 'innodb_lock_wait_timeout':data_dic['innodb_lock_wait_timeout'], 52 | 'innodb_rollback_on_timeout':data_dic['innodb_rollback_on_timeout'], 53 | 'sql_mode': data_dic['sql_mode'] 54 | } 55 | -------------------------------------------------------------------------------- /lib/innodb_status.py: -------------------------------------------------------------------------------- 1 | # coding = utf-8 2 | import pymysql,time 3 | def mysql_page(host,user,password,db,port): 4 | 5 | conn=pymysql.connect(host=host,user=user,passwd=password,db=db,port=port) 6 | cur=conn.cursor() 7 | cur.execute('SHOW GLOBAL STATUS') 8 | data_list = cur.fetchall() 9 | data_dic = {} 10 | for item in data_list: 11 | data_dic[item[0]] = item[1] 12 | 13 | time.sleep(1) 14 | cur.execute('SHOW GLOBAL STATUS') 15 | data_list_new = cur.fetchall() 16 | data_dic_new = {} 17 | for item_new in data_list_new: 18 | data_dic_new[item_new[0]] = item_new[1] 19 | 20 | return{ 21 | 'insert' : (int(data_dic_new['Com_insert']) - int(data_dic['Com_insert'])), 22 | 'select': (int(data_dic_new['Com_select']) - int(data_dic['Com_select'])), 23 | 'update':(int(data_dic_new['Com_update']) - int(data_dic['Com_update'])), 24 | 'delete':(int(data_dic_new['Com_delete']) - int(data_dic['Com_delete'])), 25 | 'questions':(int(data_dic_new['Questions']) - int(data_dic['Questions'])), 26 | 'com_commit':(int(data_dic_new['Com_commit']) - int(data_dic['Com_commit'])), 27 | 'com_replace': (int(data_dic_new['Com_replace']) - int(data_dic['Com_replace'])), 28 | 'com_rollback': (int(data_dic_new['Com_rollback']) - int(data_dic['Com_rollback'])), 29 | 'innodb_rows_deleted': (int(data_dic_new['Innodb_rows_deleted']) - int(data_dic['Innodb_rows_deleted'])), 30 | 'Innodb_rows_inserted': (int(data_dic_new['Innodb_rows_inserted']) - int(data_dic['Innodb_rows_inserted'])), 31 | 'Innodb_rows_read': (int(data_dic_new['Innodb_rows_read']) - int(data_dic['Innodb_rows_read'])), 32 | 'Innodb_rows_updated': (int(data_dic_new['Innodb_rows_updated']) - int(data_dic['Innodb_rows_updated'])), 33 | 'queries': (int(data_dic_new['Queries']) - int(data_dic['Queries'])), 34 | 'qcache_hits':(int(data_dic_new['Qcache_hits']) - int(data_dic['Qcache_hits'])), 35 | 'innodb_row_lock_waits':(int(data_dic_new['Innodb_row_lock_waits']) ), 36 | 'innodb_log_waits': (int(data_dic_new['Innodb_log_waits'])), 37 | 'innodb_row_lock_current_waits': (int(data_dic_new['Innodb_row_lock_current_waits'])), 38 | 'innodb_row_lock_time': (data_dic_new['Innodb_row_lock_time']), 39 | 'open_files': data_dic_new['Open_files'], 40 | 'open_tables': data_dic_new['Open_tables'], 41 | 'threads_created': data_dic_new['Threads_created'], 42 | 'table_locks_waited':data_dic_new['Table_locks_waited'], 43 | 'threads_running':data_dic_new['Threads_running'], 44 | 'threads_connected':data_dic_new['Threads_connected'], 45 | 'Aborted_clients':data_dic_new['Aborted_clients'], 46 | 'Aborted_connects':data_dic_new['Aborted_connects'], 47 | 'Connections':data_dic_new['Connections'], 48 | 'Max_used_connections':data_dic_new['Max_used_connections'], 49 | } 50 | 51 | #print(mysql_page('192.168.1.102','slave','redhat','mysql',3306)) -------------------------------------------------------------------------------- /lib/slave_status.py: -------------------------------------------------------------------------------- 1 | # coding = utf-8 2 | # coding = utf-8 3 | import pymysql 4 | def slave_slave(host,user,password,db,port): 5 | conn=pymysql.connect(host=host,user=user,passwd=password,db=db,port=port) 6 | cur=conn.cursor() 7 | cur.execute('show slave status') 8 | alldata = cur.fetchone() 9 | aa=str(host)+'_'+str(port) 10 | new_slave={ 11 | 'id':aa, 12 | 'status':alldata 13 | } 14 | return new_slave 15 | 16 | --------------------------------------------------------------------------------