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单元测试unittest实例详解
May 11 Python
浅谈python字符串方法的简单使用
Jul 18 Python
python中子类继承父类的__init__方法实例
Dec 15 Python
Python创建对称矩阵的方法示例【基于numpy模块】
Oct 12 Python
Python基于OpenCV实现视频的人脸检测
Jan 23 Python
Python3非对称加密算法RSA实例详解
Dec 06 Python
Python3 解决读取中文文件txt编码的问题
Dec 20 Python
tensorflow 查看梯度方式
Feb 04 Python
使用Python实现将多表分批次从数据库导出到Excel
May 15 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
python opencv实现简易画图板
Aug 27 Python
微信小程序调用python模型
Apr 21 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
php开发微信支付获取用户地址
2015/10/04 PHP
JavaScript中奇葩的假值示例应用
2014/03/11 Javascript
javascript清空table表格的方法
2015/05/14 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
Vue项目打包压缩的实现(让页面更快响应)
2020/03/10 Javascript
vue打包npm run build时候界面报错的解决
2020/08/13 Javascript
python实现根据图标提取分类应用程序实例
2014/09/28 Python
Python采集代理ip并判断是否可用和定时更新的方法
2018/05/07 Python
使用python将图片按标签分入不同文件夹的方法
2018/12/08 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
Python实例方法、类方法、静态方法的区别与作用详解
2019/03/25 Python
Centos7 下安装最新的python3.8
2019/10/28 Python
.img/.hdr格式转.nii格式的操作
2020/07/01 Python
Python Flask异步发送邮件实现方法解析
2020/08/01 Python
python collections模块的使用
2020/10/16 Python
python 写一个水果忍者游戏
2021/01/13 Python
Html5 Canvas动画基础碰撞检测的实现
2018/12/06 HTML / CSS
总经理助理岗位职责
2013/11/08 职场文书
仓库门卫岗位职责
2013/12/22 职场文书
家长对小学生的评语
2014/01/28 职场文书
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
社会实践先进工作者事迹材料
2014/05/06 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
2015年资料员工作总结
2015/04/25 职场文书
离婚起诉书范本
2015/05/18 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
2021/06/26 Python
用JS创建一个录屏功能
2021/11/11 Javascript
python中validators库的使用方法详解
2022/09/23 Python