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中zip()函数用法实例教程
Jul 31 Python
Python max内置函数详细介绍
Nov 17 Python
Python基于递归实现电话号码映射功能示例
Apr 13 Python
python实现监控某个服务 服务崩溃即发送邮件报告
Jun 21 Python
python的继承知识点总结
Dec 10 Python
Python中函数的基本定义与调用及内置函数详解
May 13 Python
Python实现决策树并且使用Graphviz可视化的例子
Aug 09 Python
python脚本调用iftop 统计业务应用流量的思路详解
Oct 11 Python
pygame用blit()实现动画效果的示例代码
May 28 Python
Python如何向SQLServer存储二进制图片
Jun 08 Python
python对execl 处理操作代码
Jun 22 Python
python中HTMLParser模块知识点总结
Jan 25 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
vs中通过剪切板循环来循环粘贴不同内容
2011/04/30 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
深入讲解PHP的对象注入(Object Injection)
2017/03/01 PHP
laravel 5.3中自定义加密服务的方案详解
2017/05/09 PHP
javascript调试说明
2010/06/07 Javascript
jQuery的deferred对象使用详解
2011/08/20 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
JS长整型精度问题实例分析
2015/01/13 Javascript
JavaScript原生对象之Number对象的属性和方法详解
2015/03/13 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
Javascript基础教程之比较null和undefined值
2016/05/16 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
2016/05/31 Javascript
jquery获取点击控件的绝对位置简单实例
2016/10/13 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
2016/11/02 Javascript
通过sails和阿里大于实现短信验证
2017/01/04 Javascript
jQuery实现字体颜色渐变效果的方法
2017/03/29 jQuery
微信小程序 登录的简单实现
2017/04/19 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
python基础教程之缩进介绍
2014/08/29 Python
python多线程分块读取文件
2019/08/29 Python
详解Python利用configparser对配置文件进行读写操作
2020/11/03 Python
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
英国景点门票网站:attractiontix
2019/08/27 全球购物
Urban Decay官方网站:美国化妆品品牌
2020/06/04 全球购物
党的群众路线教育实践活动个人批评与自我批评
2014/10/16 职场文书
委托函范文
2015/01/29 职场文书
交通事故被告答辩状
2015/05/22 职场文书
2015年创先争优工作总结
2015/05/23 职场文书