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

        監控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號
        主站蜘蛛池模板: 久久亚洲欧美国产精品| 国产精品国产三级专区第1集| 久久精品国产亚洲av影院| 黑人无码精品又粗又大又长| 国产精品亚洲专区在线观看| 亚洲AV无码乱码精品国产| 国产精品H片在线播放| 国产精品第13页| 精品一区二区三区无码免费视频 | 久久丝袜精品中文字幕| 99精品国产一区二区| 99精品高清视频一区二区| 久久久久久亚洲精品成人| 综合人妻久久一区二区精品| 日韩精品成人a在线观看| 精品人妻少妇一区二区三区不卡 | 国产精品无码一区二区三级| 亚洲av永久无码精品表情包| 亚洲国产精品成人一区| 蜜臀av无码人妻精品| 久久夜色精品国产www| 国产综合精品蜜芽| 国产精品嫩草影院一二三区| 97视频在线精品国自产拍 | 久久永久免费人妻精品下载| 亚洲av无码精品网站| 日韩精品少妇无码受不了| 无码人妻精品一区二区三区久久久| 亚洲精品永久在线观看| 一本之道av不卡精品| 亚洲午夜精品久久久久久app| 亚洲视频在线精品| 亚洲精品二区国产综合野狼| 亚洲精品tv久久久久久久久久| 亚洲精品无码日韩国产不卡?V | 国产玖玖玖九九精品视频| 你懂的国产精品| 久久se精品一区二区| 老司机91精品网站在线观看| 91无码人妻精品一区二区三区L| 99国产精品国产免费观看|