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 相关文章推荐
Linux下使用python调用top命令获得CPU利用率
Mar 10 Python
Python list操作用法总结
Nov 10 Python
python之Socket网络编程详解
Sep 29 Python
如何使用VSCode愉快的写Python于调试配置步骤
Apr 06 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
Feb 22 Python
Python3实现从排序数组中删除重复项算法分析
Apr 03 Python
python可视化篇之流式数据监控的实现
Aug 07 Python
使用pyecharts生成Echarts网页的实例
Aug 12 Python
Python中zip函数如何使用
Jun 04 Python
利用Python中的Xpath实现一个在线汇率转换器
Sep 09 Python
matplotlib教程——强大的python作图工具库
Oct 15 Python
Python实现简单猜数字游戏
Feb 03 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
php 信息采集程序代码
2009/03/17 PHP
PHP实现的memcache环形队列类实例
2015/07/28 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
JS中==与===操作符的比较
2009/03/21 Javascript
自用js开发框架小成 学习js的朋友可以看看
2010/11/16 Javascript
Jquery提交表单 Form.js官方插件介绍
2012/03/01 Javascript
treepanel动态加载数据实现代码
2012/12/15 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
关于Javascript作用域链的八点总结
2013/12/06 Javascript
node.js中使用node-schedule实现定时任务实例
2014/06/03 Javascript
在linux中使用包管理器安装node.js
2015/03/13 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
Vue项目使用CDN优化首屏加载问题
2018/04/01 Javascript
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
nodejs基础之多进程实例详解
2018/12/27 NodeJs
vue封装一个简单的div框选时间的组件的方法
2019/01/06 Javascript
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
微信小程序 导入图标实现过程详解
2019/10/11 Javascript
vue实现购物车功能(商品分类)
2020/04/20 Javascript
javaScript实现一个队列的方法
2020/07/14 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
介绍Python的@property装饰器的用法
2015/04/28 Python
python中enumerate函数遍历元素用法分析
2016/03/11 Python
Python序列化基础知识(json/pickle)
2017/10/19 Python
Python实现Event回调机制的方法
2019/02/13 Python
Python坐标线性插值应用实现
2019/11/13 Python
python如何使用socketserver模块实现并发聊天
2019/12/14 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
Python grpc超时机制代码示例
2020/09/14 Python
美丽的现代设计家具:2Modern
2018/07/26 全球购物
送货司机岗位职责
2013/12/11 职场文书
广播体操比赛口号
2014/06/10 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL