个人记录3 mysql监控

#!/usr/bin/python

import MySQLdb

import pycurl

def master_work(ip,port):

print ip,port

conn=MySQLdb.connect(host=str(ip),user=‘***‘,passwd=‘****‘,port=int(port))

cur=conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)

cur.execute(‘show status;‘)

result=cur.fetchall()

#conn1=result[-5][‘Value‘]

for result_master in result:

if result_master[‘Variable_name‘] == ‘Threads_running‘:

conn1=result_master[‘Value‘]

print str(ip),str(port),str(conn1)

cur.execute(‘show global variables like "%conn%";‘)

result_2=cur.fetchall()

for results_master in result_2:

if results_master[‘Variable_name‘] == ‘max_user_connections‘:

max_conn=results_master[‘Value‘]

print conn1

if int(conn1) >= 700:

print ‘master_‘+str(ip)+str(port)+str(conn1)

master_monitor(‘master_‘+str(ip)+‘_‘+str(port)+‘_‘+‘threading:‘+str(conn1)+‘_max_:‘+str(max_conn))

cur.close()

conn.close()

def slave_work(ip,port,role):

print role

conn=MySQLdb.connect(host=ip,user=‘***‘,passwd=‘****‘,port=int(port))

cur=conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)

cur.execute(‘show slave status;‘)

result=cur.fetchone()

Slave_IO_Running=result[‘Slave_IO_Running‘]

Slave_SQL_Running=result[‘Slave_SQL_Running‘]

Seconds_Behind_Master=result[‘Seconds_Behind_Master‘]

if Slave_IO_Running != ‘Yes‘ or Slave_SQL_Running != ‘Yes‘:

print str(ip),str(port)+‘_error‘

slave_monitor(str(ip)+‘_‘+str(port)+‘_mysql_slave_down‘)

if Seconds_Behind_Master >= 86400 and role == ‘backup‘:

if str(ip) == ‘***‘ and str(port) == ‘***‘:

return None

elif str(ip) == ‘****‘ and str(port) == ‘***‘:

return None

else:

print str(ip),str(port)+‘_Seconds_Behind_Master:‘+str(Seconds_Behind_Master)

slave_monitor(str(ip)+‘_‘+str(port)+‘_Seconds_Behind_Master_‘+str(Seconds_Behind_Master))

elif Seconds_Behind_Master > 100 and role == ‘slave‘:

if str(ip) == ‘****‘ and str(port) == ‘****‘:

return None

elif str(ip) == ‘****‘ and str(port) == ‘***‘:

return None

else:

print str(ip),str(role),str(port)+‘_Seconds_Behind_Master:‘+str(Seconds_Behind_Master)

slave_monitor(str(ip)+‘_‘+str(port)+‘_Seconds_Behind_Master_‘+str(Seconds_Behind_Master))

cur.execute(‘show status;‘)

result_1=cur.fetchall()

for results in result_1:

if results[‘Variable_name‘] == ‘Threads_running‘:

conn1=results[‘Value‘]

cur.execute(‘show global variables like "%conn%";‘)

result_2=cur.fetchall()

for result_i in result_2:

if result_i[‘Variable_name‘] == ‘max_user_connections‘:

max_conn=result_i[‘Value‘]

print str(ip),str(port),str(max_conn)

if int(conn1) >= 700:

print str(ip),str(port),str(conn1)+‘_error‘

slave_monitor(‘slave_‘+str(ip)+‘_‘+str(port)+‘_threading:‘+str(conn1)+‘_max_conn:‘+str(max_conn))

cur.close()

conn.close()

def slave_monitor(content):

c=pycurl.Curl()

c.setopt(c.URL,‘http://****/new/?service=mysql_slave&checkpoint=mysql_slave_error&title=%s&content=%s&cluster=public&grade=2‘%(content,content))

c.perform()

def master_monitor(content):

c=pycurl.Curl()

c.setopt(c.URL,‘http://*****/new/?service=mysql_master&checkpoint=mysql_master_error&title=%s&content=%s&cluster=public&grade=2‘%(content,content))

c.perform()

conn=MySQLdb.connect(host=‘****‘,user=‘***‘,passwd=‘****‘,db=‘****‘,port=***)

cur=conn.cursor()

cur.execute(‘select distinct port from node order by port;‘)

res=cur.fetchall()

list_1=[]

dict_1={}

dict_2={}

for i in res:

cur.execute(‘select distinct host,port,type from node where port=%s‘%str(i[0]))

res1=cur.fetchall()

list_1.append(res1)

for ii in list_1:

for iii in ii:

ip_1=iii[0]

port_1=iii[1]

dict_2[port_1]=ip_1

if iii[2] == ‘master‘:

master_ip=iii[0]

port=iii[1]

dict_1[port]=master_ip

master_work(master_ip,port)

cur.close()

conn.close()

for aa in list_1:

for aaa in aa:

port_2=aaa[1]

if aaa[0] == dict_1[port_2]:

pass

else:

slave_work(aaa[0],aaa[1],aaa[2])

时间: 2024-10-17 21:52:36

个人记录3 mysql监控的相关文章

MySQL监控、性能分析——工具篇

MySQL越来越被更多企业接受,随着企业发展,MySQL存储数据日益膨胀,MySQL的性能分析.监控预警.容量扩展议题越来越多.“工欲善其 事,必先利其器”,那么我们如何在进行MySQL性能分析.监控预警.容量扩展问题上得到更好的解决方案,就要利用各种工具来对MySQL各种指标进行分 析.本文是读书笔记,下面提及的工具,读者可能都用过,或打算准备是使用.MySQL服务器的发布包没有包含那些能完成许多常见任务的工具,例如监控服务器的工具.比较服务器间数据的工具.我们把这些工具分成以下几类:界面.监

MySQL监控

Mysql 监控mysql大多数问题出现在SQL语句和索引上. 一.慢查询日志分析 show variables like '%slow%' /*查看是否开启了慢查询日志*/ set @@global.slow_query_log = ON /*开启全局慢查询日志,重启mysql失效*/ 如果想重启之后有效,需要修改mysql的配置文件my.cnf.在my.cnf的最后添加上: 1 slow_query_log //开启慢查询日志 2 slow_query_log_file=/usr/local

详解 Spotlight on MySQL监控MySQL服务器

详解 Spotlight on MySQL监控MySQL服务器 前一章详解了Spotlight on Unix 监控Linux服务器 ,今天再来看看Spotlight on MySQL怎么监控MySQL服务器. 注:http://www.cnblogs.com/Javame/p/3685512.html 第一步: 下载并安装mysql-connector-3.5x Spotlight on MySQL 连接mysql必须使用mysql-connector-3.5x,5.3.2版本我试了下不行,有

mysql监控、性能调优及三范式理解

原文:mysql监控.性能调优及三范式理解 1监控 工具:sp on mysql     sp系列可监控各种数据库 2调优 2.1 DB层操作与调优 2.1.1.开启慢查询 在My.cnf文件中添加如下内容(如果不知道my.cnf的路径可使用find / -name my.cnf进行查找): 在mysqld下添加 Log_slow_queries = ON  作用:开启慢查询服务 Log-slow-queries = /var/log/slowqueries.log 作用:慢查询日志存储路径.

MySQL性能调优与架构设计——第 18 章 高可用设计之 MySQL 监控

第 18 章 高可用设计之 MySQL 监控 前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一个系统,无论如何设计如何维护,都无法完全避免出现异常的可能,监控系统就是根据系统的各项状态的分析,让我们能够尽可能多的提前预知系统可能会出现的异常状况.即使没有及时发现将要发生的异常,也要在异常出现后的第一时间知道系统已经出现异常,否则之前的设计工作很可能就白费了. 18.1 监控系统设计 系统监控

Spotlight on MySQL监控MySQL服务器

第一步: 下载并安装mysql-connector-3.5x Spotlight on MySQL 连接mysql必须使用mysql-connector-3.5x,5.3.2版本我试了下不行,有兴趣可以试试 1.下载 官网下载地址 http://dev.mysql.com/downloads/connector/odbc/ mysql-connector-3.5x下载地址 http://yunpan.cn/QiV5FC6QE7cxT  访问密码 78a6 2.安装 一路默认安装. 第二步:下载并

京东MySQL监控之Zabbix优化、自动化

随着京东业务的飞速发展, MySQL数据库的使用更加普及.服务器量级飞速增长,这对京东MySQL DBA团队的要求也越来越高.监控系统为数据库管理和维护提供了精确的数据依据,是数据库运维人员的千里眼和顺风耳. 准确.及时.有效的监控,能够使运维人员对生产服务系统运行情况了如指掌.通过分析获得的监控信息,判断被监控数据库的运行状态,对可能出现的问题进行预测,可以及时制定出适当的优化方案,从而保证整个系统正常.高效地运行.这也就在很大程度上保证了数据库的安全性,避免了一些不必要的损失.所以,我们有必

MySQL 监控指标

为了排查问题,对数据库的监控是必不可少的,在此介绍下 MySQL 中的常用监控指标. 简介 MySQL 有多个分支版本,常见的有 MySQL.Percona.MariaDB,各个版本所对应的监控项也会有些区别,在此仅介绍一些通用的监控项. 通常,监控项的源码是在 mysql/mysqld.cc 文件中定义,其内容如下所示. SHOW_VAR status_vars[]= { {"Aborted_clients", (char*) &aborted_threads, SHOW_L

构建高大上的MySQL监控平台

概述 对于MySQL的监控平台,相信大家实现起来有很多了:基于天兔的监控,还有基于zabbix相关的二次开发.相信很多同行都应该已经开始玩起来了.我这边的选型是prometheus + granafa的实现方式.简而言之就是我现在的生产环境使用的是prometheus,还有就是granafa满足的我的日常工作需要.在入门的简介和安装,大家可以参考这里:https://blog.51cto.com/cloumn/detail/77 1.首先看下我们的监控效果.mysql主从 2.mysql状态: