文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python个人记录3 mysql监控

2023-01-31 06:27

关注

#!/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])


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯