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 THREADING模块中的JOIN()方法深入理解
Feb 18 Python
python中循环语句while用法实例
May 16 Python
详解python的几种标准输出重定向方式
Aug 15 Python
Python 遍历子文件和所有子文件夹的代码实例
Dec 21 Python
centos 安装Python3 及对应的pip教程详解
Jun 28 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
Jul 05 Python
python代码编写计算器小程序
Mar 30 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
Sep 25 Python
python字典排序的方法
Oct 12 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
Jun 24 Python
Python列表元素删除和remove()方法详解
Jan 04 Python
python内置进制转换函数的操作
Jun 02 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
拼音码表的生成
2006/10/09 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
2015/05/13 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
让您的菜单不离网站
2006/10/03 Javascript
jQuery 可以拖动的div实现代码 脚本之家修正版
2009/06/26 Javascript
jquery.cookie用法详细解析
2013/12/18 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
js获取时间函数及扩展函数的方法
2016/10/30 Javascript
JavaScript数据结构之二叉树的遍历算法示例
2017/04/13 Javascript
使用nodeJs来安装less及编译less文件为css文件的方法
2017/11/20 NodeJs
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
VUE2.0中Jsonp的使用方法
2018/05/22 Javascript
老生常谈JS中的继承及实现代码
2018/07/06 Javascript
今天,小程序正式支持 SVG
2019/04/20 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
Python设计模式之工厂方法模式实例详解
2019/01/18 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
解决python父线程关闭后子线程不关闭问题
2020/04/25 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
python 绘制国旗的示例
2020/09/27 Python
linux面试题参考答案(1)
2016/01/22 面试题
企业安全生产承诺书
2014/05/22 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
2014年教研组工作总结
2014/11/26 职场文书
2014教师专业技术工作总结
2014/12/03 职场文书
一年级语文上册复习计划
2015/01/17 职场文书
酒店办公室主任岗位职责
2015/04/01 职场文书
办公室规章制度范本
2015/08/04 职场文书
Python基础之进程详解
2021/05/21 Python
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
2022/04/14 Python
python的html标准库
2022/04/29 Python