站長資訊網
        最全最豐富的資訊網站

        監控mysql和mongo數據庫服務腳本

        應帥氣的領導要求,需要腳本監控生產環境mysql和mongo數據庫服務。不僅要connect successful還要進行數據交互進一步確認數據庫服務正常。

        代碼如下:

        #!/bin/bash

        #author:吳青聰

        #email:wuqingcong@aliyun.com

        #encoding: utf-8

        #聲明四個數據,存放數據庫信息 ip、用戶、密碼、端口

        declare -a host

        declare -a user

        declare -a passwd

        declare -a port

        #定義一個計數變量,初始值 0

        n=0

        #指明收件郵箱

        mail=wuqingcong@aliyun.com

        #按行讀取記錄了數據地址端口用戶名密碼信息的文件,存放進對應數組,此處文件為mysqldb_message.txt,其格式如下:

        #host:192.168.0.32 user:test passwd:123456 port:3306 注意行首無空格

        while read line

        do

        eval $(echo $line | awk -F"[: ]" '{printf("host[$n]=%s; user[$n]=%s; passwd[$n]=%s; port[$n]=%s",$2,$4,$6,$8)}')

        let n++

        done < mysqldb_message.txt

        #檢測數據庫服務

        let n–

        for i in $(seq 0 $n);do

        # 檢測命令

        mysql -h${host[$i]} -u${user[$i]} -p${passwd[$i]} -P${port[$i]} -e "select 1 from dual;" –connect-timeout=5 &> /dev/null

        #判斷執行結果$?,為0執行成功,為1出現錯誤異常

        if [ $? -ne 0 ]

        then

        python3 mail.py $mail "mysqldb down " "please check mysql-service on ${host[$i]}"

        echo "mysql$i is down"

        else

        # python3 mail.py $mail "mysqldb is fine " "Do not need check mysql-service on ${host[$i]} "

        echo "mysql$i is fine"

        fi

        done

        #檢測mongodb

        #清空計數變量

        n=0

        #按行讀取記錄了數據地址端口用戶名密碼信息的文件,存放進對應數組,此處文件為mongodb_message.txt,其格式如下:

        #host:127.0.0.1 user:root passwd:root port:27017 authDB:admin 注意行首無空格

        while read line

        do

        eval $(echo $line | awk -F"[: ]" '{printf("host[$n]=%s; user[$n]=%s; passwd[$n]=%s; port[$n]=%s; db[$n]=%s",$2,$4,$6,$8,$10)}')

        let n++

        done < mongodb_message.txt

        let n–

        for i in $(seq 0 $n);do

        echo "show tables maxTimeMS(5000)" | mongo ${host[$i]}:${port[$i]}/${db[$i]} -u ${user[$i]} -p ${passwd[$i]} &> /dev/null

        if [ $? -ne 0 ]

        then

        server=${host[$i]}

        python3 mail.py $mail "mongodb down " "please check mysql-service on $server"

        echo "mongodb$i is down"

        else

        # python3 mail.py $mail "mongodb is fine " "Do not need check mysql-service on ${host[$i]}"

        echo "mongodb$i is fine"

        fi

        done

        郵件腳本為參考他人腳本,用Python編寫,存放上述代碼腳本同目錄即可,郵件腳本代碼如下:

        #!/usr/bin/env python

        #

        # encoding: utf-8

        import sys

        import smtplib # 加載smtplib模塊

        import traceback

        from email.header import Header

        from email.mime.application import MIMEApplication

        from email.mime.multipart import MIMEMultipart

        from email.mime.text import MIMEText

        from email.utils import parseaddr, formataddr

        login_name = 'monitor@7net.cc' # 發件人郵箱賬號,為了后面易于維護,所以寫成了變量

        login_pass = '*******' # 因發博客而隱藏,自己腳本中需要指定

        smtp_port = 465

        def _format_addr(s):

        name, addr = parseaddr(s)

        return formataddr((

        Header(name, 'utf-8').encode(),

        addr))

        # addr.encode('utf-8') if isinstance(addr, unicode) else addr))

        def send_mail(sender, recps, Ccs, subject, htmlmsg, fileAttachment):

        smtpserver = 'smtp.exmail.qq.com'

        receivers = recps + Ccs

        try:

        # msg = MIMEText(htmlmsg, 'html', 'utf-8')

        msg = MIMEMultipart()

        msg.attach(MIMEText(htmlmsg, 'html', 'utf-8'))

        # msg['Subject'] = subject

        msg['Subject'] = Header(subject, 'utf-8').encode()

        # msg['From'] = sender

        msg['From'] = _format_addr(sender)

        Recp = []

        for recp in recps:

        Recp.append(_format_addr(recp))

        ccs = []

        for cc in Ccs:

        ccs.append(_format_addr(cc))

        msg['To'] = ','.join(Recp)

        msg['Cc'] = ','.join(ccs)

        # if fileAttachment!='' :

        # # 附件

        for file in fileAttachment:

        part = MIMEApplication(open(file, 'rb').read())

        attFileName = file.split('/')[-1]

        part.add_header('Content-Disposition', 'attachment', filename=attFileName)

        msg.attach(part)

        # part = MIMEApplication(open(fileAttachment, 'rb').read())

        # part.add_header('Content-Disposition', 'attachment', filename=fileAttachment)

        # msg.attach(part)

        smtp = smtplib.SMTP_SSL()

        smtp.connect(smtpserver, smtp_port)

        smtp.login(login_name, login_pass)

        # smtp.login(username, password)

        smtp.sendmail(sender, receivers, msg.as_string())

        smtp.quit()

        print('SendEmail success')

        except:

        traceback.print_exc()

        def main():

        to=sys.argv[1]

        subject=sys.argv[2]

        content=sys.argv[3]

        # send_mail("監控中心", ["吳青聰"], [], subject, "郵件內容2", "")

        send_mail("監控中心", [to], [], subject, content, "")

        if __name__ == "__main__":

        main()

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲AV成人精品网站在线播放| 亚洲愉拍99热成人精品热久久| 欧美精品色婷婷五月综合| 久久精品无码专区免费青青 | 国产乱码精品一品二品| 老湿亚洲永久精品ww47香蕉图片| 国产精品一久久香蕉产线看| 亚洲av永久无码精品网站| 精品久久久久久无码免费| 国产精品成人观看视频免费| 久久香蕉国产线看观看精品yw | 99久久精品免费观看国产| 国产精品jizz视频| 亚洲AV成人精品网站在线播放| 午夜在线视频91精品| 精品免费久久久久国产一区 | 亚洲高清国产AV拍精品青青草原| 精品亚洲欧美无人区乱码| 99久久国产主播综合精品| 女人香蕉久久**毛片精品| 国产精品美女一区二区视频| 无码人妻精品一区二区三区久久| 欧美激情精品久久久久久久九九九| 粉嫩精品美女国产在线观看| 国产成人精品日本亚洲18图| 丰满人妻熟妇乱又仑精品| 老司机性色福利精品视频| 亚洲欧洲美洲无码精品VA| 无夜精品久久久久久| 亚洲国产精品不卡毛片a在线| 麻豆精品视频在线观看| 精品人妻少妇一区二区三区| 国产内地精品毛片视频| 国产成人精品视频2021| 国产精品成人观看视频网站| 亚洲国产精品久久久久婷婷老年| 久热这里只精品99re8久| 2021最新国产精品一区| 99riav国产精品| 国产欧美日本精品| 国产免费伦精品一区二区三区|