Python实现监控Nginx配置文件的不同并发送邮件报警功能示例


Posted in Python onFebruary 26, 2019

本文实例讲述了Python实现监控Nginx配置文件的不同并发送邮件报警功能。分享给大家供大家参考,具体如下:

因为项目中经常涉及到多个Nginx之间的配置文件更改,可能回导致最后Nginx之间的配置文件有所不同,这样会对项目产生影响,最典型的就是可能当访问域名解析到其中一台Nginx的时候,可能是正常的,当域名解析到另外一台Nginx的时候,由于配置文件的不同,导致访问出错之类的,影响体验,所以用python写了一个监控配置文件不同的脚本,如果发现不同,就报警,并且以HTML的形式发送邮件指出具体的文件不同地方。

下面是代码:

#!/usr/bin/python2.7
# -*- encoding: utf-8 -*-
import difflib ##用于文件比较的库
import sys
import smtplib
import getpass
from os.path import getsize
from email.MIMEText import MIMEText
#检查文件的大小是否相同
def check_files_size(file1, file2):
  size1 = getsize(file1)
  size2 = getsize(file2)
  if int(size1) != int(size2):
  return True
#比较文件的内容,并且声称HTML页面
def files_compare(file1, file2):
  text1_lines = file1.splitlines()
  text2_lines = file2.splitlines()
  d = difflib.HtmlDiff()
  msg = d.make_file(text1_lines, text2_lines)
  return msg
#邮件报警,使用Linux自带的postfix发送邮件
def alert_by_email(subject, msg, mailto):
  senduser = getpass.getuser()###获取当前Linux登录的用户
  smail = smtplib.SMTP('127.0.0.1')
  #smail.set_debuglevel(1) ##设置为调试模式,可以看到邮件发送的过程和成功与否
  message = MIMEText(msg, 'html', _charset='utf-8')
  message['From'] = senduser
  message['To'] = mailto
  message['Subject'] = subject
  smail.sendmail('root@localhost', mailto, message.as_string())
  smail.quit()
if __name__ == '__main__':
  reload(sys)
  sys.setdefaultencoding('utf-8')#设置编码为utf-8
  file1 = '/home/*/nginx1/nginx.conf'
  file2 = '/home/*/nginx2/nginx.conf'
  mailto = '***@***' #发送到你想要接收的邮箱地址
  subject = u'nginx配置文件监控' #邮件主题
  if check_files_size(file1, file2) == True: #如果两个文件大小不同,就进行文件内容比较,发送邮件报警
  with open(file1) as f:
    text1 = f.read().strip()
  with open(file2) as f:
    text2 = f.read().strip()
  msg = files_compare(text1, text2)
  alert_by_email(subject, msg, mailto)
  else:
  sys.exit(0)

这里贴上报警截图:

Python实现监控Nginx配置文件的不同并发送邮件报警功能示例

总体的思路就是:增加一台管理控制机器,然后备份不同服务器上的Nginx配置文件,使用上面的检测脚本进行监控,每隔十分钟或者你想要的时间长度进行监控(crontab定时任务就可以)。

以上就是实践过程中遇到的问题和解决思路,如果有错误或者更好的方法,还请各位大神帮忙指正。

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中分数的相关使用教程
Mar 30 Python
python使用Tkinter实现在线音乐播放器
Jan 30 Python
如何用python整理附件
May 13 Python
Pycharm 创建 Django admin 用户名和密码的实例
May 30 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
pandas数据筛选和csv操作的实现方法
Jul 02 Python
python实现大文本文件分割
Jul 22 Python
python3 下载网络图片代码实例
Aug 27 Python
详解Python self 参数
Aug 30 Python
python运用sklearn实现KNN分类算法
Oct 16 Python
python 实现关联规则算法Apriori的示例
Sep 30 Python
pytorch 实现L2和L1正则化regularization的操作
Mar 03 Python
利用python实现对web服务器的目录探测的方法
Feb 26 #Python
python selenium 弹出框处理的实现
Feb 26 #Python
python实现学员管理系统
Feb 26 #Python
python实现电子产品商店
Feb 26 #Python
Python selenium根据class定位页面元素的方法
Feb 26 #Python
python实现诗歌游戏(类继承)
Feb 26 #Python
Python实现简单查找最长子串功能示例
Feb 26 #Python
You might like
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
IE 缓存策略的BUG的解决方法
2007/07/21 Javascript
Javascript的闭包
2009/12/31 Javascript
javascript smipleChart 简单图标类
2011/01/12 Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
Javascript 颜色渐变效果的实现代码
2013/10/01 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
2018/04/09 Javascript
Vue父子组件之间的通信实例详解
2018/09/28 Javascript
node和vue实现商城用户地址模块
2018/12/05 Javascript
详解VUE调用本地json的使用方法
2019/05/15 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
JS实现多选框的操作
2020/06/24 Javascript
JavaScript枚举选择jquery插件代码实例
2020/11/17 jQuery
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
[48:46]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第二场 11.19
2020/11/19 DOTA
Python检测QQ在线状态的方法
2015/05/09 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
html5的localstorage详解
2017/05/09 HTML / CSS
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
39美元购买一副眼镜或太阳镜:39DollarGlasses.com
2018/06/17 全球购物
SQL面试题
2013/04/30 面试题
大学生军训自我评价分享
2013/11/09 职场文书
医学专业毕业生个人的求职信
2013/12/04 职场文书
应届毕业生求职信范例分享
2013/12/17 职场文书
工作会议方案
2014/05/21 职场文书
公司踏青活动方案
2014/08/16 职场文书
民间借贷协议书范本
2014/10/01 职场文书
财务检查整改报告
2014/11/06 职场文书
先进教师事迹材料
2014/12/16 职场文书
校园广播站开场白
2015/06/01 职场文书
返乡农民工证明
2015/06/24 职场文书