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

監控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號
99久久99久久精品| 青青青青久久精品国产h| 国产日韩精品视频| 久久只有这精品99| 日韩精品亚洲人成在线观看| 91久久亚洲国产成人精品性色| 国产日韩一区二区三区| 人人妻人人澡人人爽人人精品浪潮| 精品亚洲A∨无码一区二区三区 | 日韩在线不卡视频| 国产精品手机在线亚洲| 国产精品第一区揄拍| 91精品国产品国语在线不卡| 国产成人精品久久| 天堂精品高清1区2区3区| 日韩精品免费一级视频 | 亚洲精品中文字幕无乱码麻豆| 欧洲精品久久久av无码电影| 国产精品视频二区不卡| 亚洲精品~无码抽插| 日韩爆乳一区二区无码| 国产成人精品免费视频软件| 日韩精品一区二区三区在线观看l| 内射精品无码中文字幕| 久久久久久午夜精品| 国产精品青草久久久久婷婷 | 国产午夜亚洲精品不卡| 国产精品资源在线| 日本精品啪啪一区二区三区| 东京热一精品无码AV| 精品麻豆国产色欲色欲色欲www| 亚洲色在线无码国产精品不卡| 国产精品ⅴ无码大片在线看| 亚洲精品无码专区在线在线播放 | 久久精品国产精油按摩| 久久精品视频一区二区三区| 无码少妇精品一区二区免费动态| 精品一区二区三区免费视频| 日韩字幕一中文在线综合| 老司机福利精品视频| 精品久久国产字幕高潮|