最近系统出现一次宕机,因为部署环境不受自己控制,但是短时间内系统稳定性要求比较高,所以就写了个python脚本,每隔一段时间访问系统的一个固定地址,如果访问失败就给自己发一封邮件。(此方案属于临时性监控,和运维监控无关,仅是个人学习python的一个实践)
1、发送邮件的python代码
#coding: utf-8
import smtplib
from email.mime.text import MIMEText
from email.header import Header
mailto_list=["[email protected] 接收预警邮件"]
mail_host="smtp.163.com"
mail_user="xxxx 发送邮件的账号"
mail_pass="xxx 发送邮件的密码"
mail_postfix="163.com"
def send_mail(sub,content):
me="Monitor<"+mail_user+"@"+mail_postfix+">"
msg=MIMEText(content,_subtype='plain',_charset='gb2312')
msg['Subject']=sub
msg['From']=me
msg['To']=";".join(mailto_list)
try:
server=smtplib.SMTP()
server.connect(mail_host)
server.login(mail_user,mail_pass)
server.sendmail(me,mailto_list,msg.as_string())
server.close()
return True
except Exception,e:
print str(e)
return False
if __name__=="__main__":
if send_mail("Monitor","System Failed"):
print "finished"
else:
print "error"
2、监控系统URL的python代码
import urllib2
import mail
try:
s=urllib2.urlopen("http://xxx.xxx.xxx/xxxx.do").read()
if "xxxx 页面内某段内容是否输出了" in s:
print "System is ok"
else:
print "System is down"
mail.send_mail("Monitor","System Failed")
except Exception,e:
print str(e)
3、在服务器上执行crontab -e
输入*/30 * * * * python /home/monitor/monitor.py
每隔30分钟调用一次,mail.py和monitor.py都放在一个目录下