1.编写python的监控脚本

A.通过获取mysql库中的状态值来判断这个mysql主从状态是否正常

b8af4af01b379b6b4523cea629f38bc9.png

B.进行两个状态值的判断

d3e8080649b35271a715260c93bf21e4.png

C.进行调取钉钉机器人,发送消息

9d6408940563a23e8cbf870d5b5f8ae0.png

2.设置定时任务进行脚本运行

crontab -e    添加定时任务

*/5 * * * * source ~/.bashrc && /usr/bin/python /lvdata/send_msg.py

给脚本执行权限  chmod +x /lvdata/send_msg.py

这里出现一个问题,就是手工能执行脚本,但定时任务时不能执行python脚本,参考解决方法:

1.将脚本中的中文进行删除或更改为英文

2.在对日志监控查看时,脚本确以执行,但没有达到预期的效果

tail -f /var/log/cron

Sep  4 18:25:01 VM_DATA_ANALYSIS_DB_38 CROND[20870]: (root) CMD (/usr/bin/python /lvdata/send_msg.py)

然后将定时任务进行修改 */5 * * * * source ~/.bashrc && /usr/bin/python /lvdata/send_msg.py,再次查看,能够正常运行

整个脚本

#!/usr/bin/python

import os

import json

import urllib2

def get_fljr189_status():

#获取SQL_Running 的状态值

SQL=os.popen("mysql -uroot -p密码-S /tmp/mysql.sock "-e show slave '自定义名称' statusG"|grep "Slave_SQL_Running"")

#获取IO_Running 的状态值

IO=os.popen("mysql -uroot -p密码 -S /tmp/mysql.sock "-e show slave '自定义名称' statusG"|grep "Slave_IO_Running"")

#获取IP地址

IP=os.popen("mysql -uroot -p密码 -S /tmp/mysql.sock "-e show slave '自定义名称' statusG"|grep "Master_Host"")

#对SQL_Running 和 IO_Running状态值进行判断

sql_status=cmp(SQL.read().split(":")[1].strip(),"Yes")

io_status=cmp(IO.read().split(":")[1].strip(),"Yes")

ip=IP.read().split(":")[1]

#如果这两个值都为Yes,则不报警

if(sql_status==0 and io_status==0):

pass

else:

#如果有不为Yes的值,则开发通过python 调用钉钉发送信息到群中

send_msg(ip)

#调用钉钉发送信息到群中

def send_msg(ip):

#钉钉的webhook 值,如有不知道可自行百度

url="https://oapi.dingtalk.com/robot/send?access_token="

headers={

"Content-Type":"application/json",

"Charset":"UTF-8"

}

data={

"msgtype":"text",

"text":{

"content":str(ip)+"master-slave Error"

},

"at":{

"isAtAll":True

}

}

data=json.dumps(data)

request=urllib2.Request(url,data=data,headers=headers)

response=urllib2.urlopen(request)

print(response.read())

get_fljr189_status()

内容来源于网络如有侵权请私信删除

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐