python实现监控某个服务 服务崩溃即发送邮件报告
作者:黑面狐
这篇文章主要为大家详细介绍了python实现监控某个服务,服务崩溃发送邮件报告,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
前言:最近我们的升级服务器有点不太稳定,经常崩溃掉。然后客户连接不上,跟我们反馈才知道。所以写这个脚本的目的就是为了比客户提前知道升级服务的运行状况,一旦崩溃掉,就能第一时间登录上去,开启服务,避免客户投诉。
目标:Python实现监控某个服务,服务崩溃发送邮件报告。
原理:服务对应着端口,服务关闭的时候端口也会关闭。所以可以简化为监控某个端口,端口关闭发送邮件报告
方法:需要用到简单邮件服务器和端口探测的方法
废话不多说直接上代码:
#-*- encoding:utf-8 -*- #!/usr/bin/env python # name IsOpen.py import os import socket import time import smtplib from email.mime.text import MIMEText mailto_list=["872766492@qq.com"] mail_host="smtp.qq.com" #设置服务器 mail_user="1124794084" #用户名 mail_pass="密码" #口令 mail_postfix="qq.com" #发件箱的后缀 def send_mail(to_list,sub,content): #to_list:收件人;sub:主题;content:邮件内容 me="升级服务器报告"+"<"+mail_user+"@"+mail_postfix+">" #这里的hello可以任意设置,收到信后,将按照设置显示 msg = MIMEText(content,_subtype='html',_charset='gb2312') #创建一个实例,这里设置为html格式邮件 msg['Subject'] = sub #设置主题 msg['From'] = me msg['To'] = ";".join(to_list) try: s = smtplib.SMTP() s.connect(mail_host) #连接smtp服务器 s.login(mail_user,mail_pass) #登陆服务器 s.sendmail(me, to_list, msg.as_string()) #发送邮件 s.close() return True except Exception, e: print str(e) return False def IsOpen(ip,port,flag): s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) try: s.connect((ip,int(port))) s.shutdown(2) print '%d is open' % port return True except: print '%d is down' % port return False if __name__ == '__main__': while(1>0): flag=1 IsOpen('127.0.0.1',9906) time.sleep(60) flag=IsOpen('127.0.0.1',9906) print flag if flag==False: send_mail(mailto_list,"XX升级服务器监测异常","error") time.sleep(1800) #设置一分钟监测一次,如果发现端口9906消失则发送邮件报告,设置延迟为半小时,避免一直重复发送邮件
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- Python 如何调试程序崩溃错误
- Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
- jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
- 解决python多线程报错:AttributeError: Can''t pickle local object问题
- Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
- python错误:AttributeError: ''module'' object has no attribute ''setdefaultencoding''问题的解决方法
- Python进程崩溃AttributeError异常问题解决