站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

監(jiān)控mysql和mongo數(shù)據(jù)庫(kù)服務(wù)腳本

應(yīng)帥氣的領(lǐng)導(dǎo)要求,需要腳本監(jiān)控生產(chǎn)環(huán)境mysql和mongo數(shù)據(jù)庫(kù)服務(wù)。不僅要connect successful還要進(jìn)行數(shù)據(jù)交互進(jìn)一步確認(rèn)數(shù)據(jù)庫(kù)服務(wù)正常。

代碼如下:

#!/bin/bash

#author:吳青聰

#email:wuqingcong@aliyun.com

#encoding: utf-8

#聲明四個(gè)數(shù)據(jù),存放數(shù)據(jù)庫(kù)信息 ip、用戶、密碼、端口

declare -a host

declare -a user

declare -a passwd

declare -a port

#定義一個(gè)計(jì)數(shù)變量,初始值 0

n=0

#指明收件郵箱

mail=wuqingcong@aliyun.com

#按行讀取記錄了數(shù)據(jù)地址端口用戶名密碼信息的文件,存放進(jìn)對(duì)應(yīng)數(shù)組,此處文件為mysqldb_message.txt,其格式如下:

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

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

#檢測(cè)數(shù)據(jù)庫(kù)服務(wù)

let n–

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

# 檢測(cè)命令

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

#判斷執(zhí)行結(jié)果$?,為0執(zhí)行成功,為1出現(xiàn)錯(cuò)誤異常

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

#檢測(cè)mongodb

#清空計(jì)數(shù)變量

n=0

#按行讀取記錄了數(shù)據(jù)地址端口用戶名密碼信息的文件,存放進(jìn)對(duì)應(yīng)數(shù)組,此處文件為mongodb_message.txt,其格式如下:

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

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' # 發(fā)件人郵箱賬號(hào),為了后面易于維護(hù),所以寫成了變量

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

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("監(jiān)控中心", ["吳青聰"], [], subject, "郵件內(nèi)容2", "")

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

if __name__ == "__main__":

main()

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
99久热只有精品视频免费看| 亚洲中文字幕无码久久精品1 | 精品午夜福利1000在线观看| 亚洲日韩国产欧美一区二区三区| 国产在线精品二区韩国演艺界| 精品人妻少妇一区二区三区不卡| 亚洲国产成人精品无码一区二区| 久久99久久99精品| 久久国产精品99精品国产987| 91精品国产综合久久精品| 国产视频精品免费视频| 国产精品狼人久久久久影院| 亚洲国产精品嫩草影院久久| 天天视频国产精品| 永久免费精品影视网站| 午夜一级日韩精品制服诱惑我们这边| 日韩中文字幕精品免费一区| 日韩在线永久免费播放| 日韩av在线播放| 日韩专区在线观看| 强制高潮18XXXXHD日韩| 日韩精品久久无码人妻中文字幕| 日韩动漫av在线播放一区| 日韩av片无码一区二区三区不卡| 四虎成人精品无码永久在线| 日韩一级视频在线观看播放| 日韩成人毛片高清视频免费看| 国产午夜久久精品| 日韩免费在线中文字幕| 日韩精品无码一区二区三区不卡| 国产日韩久久久精品影院首页 | 青青青国产精品视频| 精品无码成人久久久久久 | 国产精品综合专区中文字幕免费播放| www.精品在线| 国产女人18毛片水真多18精品 | 99在线视频精品费观看视| 久久66热人妻偷产精品9| 91无码人妻精品一区二区三区L| 精品国产一区二区三区麻豆| 国产香蕉一区二区精品视频|