Python 腳本 監控數據庫狀態


打算用這個腳本通過zabbix 監控Mariadb的,無奈要等Mariadb完全上線才行,所以先寫一個粗略大致功能的版本。

#coding:utf-8
#author:shiyiwen
#version:1.1
#display:monitor mariadb galera cluster
import os
import sys
import MySQLdb
import subprocess
import time
import re

def mysqlprocessstatus():
    runcmd = 'service mysql start'
    p = subprocess.Popen('netstat -ntlp|grep mysql',shell=True,stdout=subprocess.PIPE)  #將stdout緩存進pipe
    #p1 = subprocess.Popen('grep java',shell=True,stdin=p.stdout,stdout=subprocess.PIPE) #篩選出mysql進程並存入stdout
    status = p.stdout.readlines()
    if len(status) > 0:
        return 'Sucess'
    else:
        sys.stderr.write('%s process down, running [%s] \n' % ('Mysql',runcmd))
        subprocess.Popen(runcmd,shell=True)
        if len(status) == 0:
            return 'Mysql Down'

def initconn():
    try:
        conn = MySQLdb.connect(host='172.16.38.175', user='root', passwd='anjubao.com', port=3306)
        return conn
    except MySQLdb.Connect().Error,e:
        print "Mysql connet Error"


def clusterwsrepstatus(conn,item):

    query = 'show status like "wsrep%"'
    cur = conn.cursor()
    cur.execute(query)                      #返回code 這個code 為 數據條數,也可以通過fetchmany來接受數據,但是要指定數據條數,對沒錯就是這個code!
    result = cur.fetchall()                 #直接接受所有數據,返回多個tuple
    conn.commit()                           #真正commit DDL DML
    cur.close()
    for t in  result:
        for i in t:
            if i == item:
                return t[1]


def analysis():
    pass

def execerror():
    pass

def insertdb():
    pass


if __name__ == '__main__':
    #mysqlprocessstatus()
    wsrep_conn=clusterwsrepstatus(initconn(),'wsrep_connected')
    wsrep_uuid=clusterwsrepstatus(initconn(),'wsrep_cluster_state_uuid')
    wsrep_size=clusterwsrepstatus(initconn(),'wsrep_cluster_size')

    if wsrep_conn=='on' and wsrep_size=='3' and wsrep_uuid=='BBBB-BBBB':
        print "mengmengda"
    else:
        print "Error"

用pip安裝MySQLdb庫,需要會提示找不到Python.h 需要安裝python-dev(ubuntu)  pip install MySql-python

里面包含了許多基礎知識,怕忘記 記錄一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM