python实现监控某个服务 服务崩溃即发送邮件报告


Posted in Python onJune 21, 2018

前言:最近我们的升级服务器有点不太稳定,经常崩溃掉。然后客户连接不上,跟我们反馈才知道。所以写这个脚本的目的就是为了比客户提前知道升级服务的运行状况,一旦崩溃掉,就能第一时间登录上去,开启服务,避免客户投诉。

目标: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网络编程学习笔记(10):webpy框架
Jun 09 Python
python进阶教程之循环对象
Aug 30 Python
详解Python的Django框架中inclusion_tag的使用
Jul 21 Python
python模拟事件触发机制详解
Jan 19 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
Mar 19 Python
Numpy中的mask的使用
Jul 21 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
Jun 05 Python
python3.7调试的实例方法
Jul 21 Python
Python Pivot table透视表使用方法解析
Sep 11 Python
Python代码覆盖率统计工具coverage.py用法详解
Nov 25 Python
Python 中如何使用 virtualenv 管理虚拟环境
Jan 21 Python
Python中Permission denied的解决方案
Apr 02 Python
python实现简易内存监控
Jun 21 #Python
Python实现的微信好友数据分析功能示例
Jun 21 #Python
python skimage 连通性区域检测方法
Jun 21 #Python
python3实现windows下同名进程监控
Jun 21 #Python
python检测主机的连通性并记录到文件的实例
Jun 21 #Python
Python基于xlrd模块操作Excel的方法示例
Jun 21 #Python
python实现自动发送报警监控邮件
Jun 21 #Python
You might like
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
Laravel框架实现的上传图片到七牛功能详解
2019/09/06 PHP
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
2015/09/23 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
Js apply方法详解
2017/02/16 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
2017/06/28 jQuery
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
微信小程序实现添加手机联系人功能示例
2017/11/30 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
Node批量爬取头条视频并保存方法
2018/09/20 Javascript
JavaScript箭头函数中的this详解
2019/06/19 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
python元组操作实例解析
2014/09/23 Python
Python使用filetype精确判断文件类型
2017/07/02 Python
python实现分页效果
2017/10/25 Python
批量将ppt转换为pdf的Python代码 只要27行!
2018/02/26 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
2019/01/29 Python
python实时检测键盘输入函数的示例
2019/07/17 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
就业自荐书
2013/12/05 职场文书
统计专业自荐书
2014/07/06 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
2014年质量管理工作总结
2014/12/01 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
2016年大学校运会广播稿件
2015/12/21 职场文书