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编程时利用wxPython来支持多线程的方法
Apr 07 Python
python中as用法实例分析
Apr 30 Python
Python爬虫DNS解析缓存方法实例分析
Jun 02 Python
详解python实现读取邮件数据并下载附件的实例
Aug 03 Python
Python利用Django如何写restful api接口详解
Jun 08 Python
python3+selenium实现126邮箱登陆并发送邮件功能
Jan 23 Python
python日志logging模块使用方法分析
May 23 Python
Python实现一个数组除以一个数的例子
Jul 20 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
Jan 02 Python
详解pytorch tensor和ndarray转换相关总结
Sep 03 Python
Python手拉手教你爬取贝壳房源数据的实战教程
May 21 Python
教你怎么用Python实现GIF动图的提取及合成
Jun 15 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
为什么夜间收到的中波电台比白天多
2021/03/01 无线电
搜索和替换文件或目录的一个好类--很实用
2006/10/09 PHP
PHP写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
PHP伪造referer实例代码
2008/09/20 PHP
PHP预定义接口――Iterator用法示例
2020/06/05 PHP
jQuery .tmpl(), .template()学习资料小结
2011/07/18 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
js 本地预览的简单实现方法
2014/02/18 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
2020/04/28 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
2016/12/25 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
使用Vue如何写一个双向数据绑定(面试常见)
2018/04/20 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
浅谈Vue页面级缓存解决方案feb-alive(上)
2019/04/14 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
python进阶教程之词典、字典、dict
2014/08/29 Python
在Python的Django框架中创建语言文件
2015/07/27 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
Python自动抢红包教程详解
2019/06/11 Python
python RC4加密操作示例【测试可用】
2019/09/26 Python
浅谈Python3实现两个矩形的交并比(IoU)
2020/01/18 Python
Django 多对多字段的更新和插入数据实例
2020/03/31 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
全国税务系统先进集体事迹材料
2014/05/19 职场文书
六查六看自查报告
2014/10/14 职场文书
个人总结格式范文
2015/03/09 职场文书
趣味运动会广播稿
2015/08/19 职场文书
《浅水洼里的小鱼》教学反思
2016/02/16 职场文书
深入详解JS函数的柯里化
2021/06/09 Javascript
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技
Python读写yaml文件
2022/03/20 Python