python实现简单的系统监控

来源:互联网 发布:tcp ip网络协议分析 编辑:程序博客网 时间:2024/04/30 09:08

最近系统出现一次宕机,因为部署环境不受自己控制,但是短时间内系统稳定性要求比较高,所以就写了个python脚本,每隔一段时间访问系统的一个固定地址,如果访问失败就给自己发一封邮件。(此方案属于临时性监控,和运维监控无关,仅是个人学习python的一个实践)

1、发送邮件的python代码 <mail.py>

#coding: utf-8
import smtplib
from email.mime.text import MIMEText
from email.header import Header
mailto_list=["xxx@xxx.com 接收预警邮件"]
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代码 <monitor.py>

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都放在一个目录下

0 0
原创粉丝点击