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批量提交沙箱问题实例
Oct 08 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
Jan 12 Python
Python利用matplotlib生成图片背景及图例透明的效果
Apr 27 Python
python opencv 图像尺寸变换方法
Apr 02 Python
Python用csv写入文件_消除空余行的方法
Jul 06 Python
对PyQt5中树结构的实现方法详解
Jun 17 Python
利用Python脚本实现自动刷网课
Feb 03 Python
python pprint模块中print()和pprint()两者的区别
Feb 10 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
Mar 10 Python
增大python字体的方法步骤
Jul 05 Python
python爬虫之爬取笔趣阁小说
Apr 22 Python
详解用Python把PDF转为Word方法总结
Apr 27 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/03/24 PHP
php使用timthumb生成缩略图的方法
2016/01/22 PHP
Js 订制自己的AlertBox(信息提示框)
2009/01/09 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
2015/10/28 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
2016/08/03 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
2016/08/16 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
2016/08/20 Javascript
Javascript基础回顾之(一) 类型
2017/01/31 Javascript
ng2学习笔记之bootstrap中的component使用教程
2017/03/09 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
使用D3.js制作图表详解
2017/08/13 Javascript
javascript将list转换成树状结构的实例
2017/09/08 Javascript
JS跳转手机站url的若干注意事项
2017/10/18 Javascript
微信小程序实现星星评价效果
2018/11/02 Javascript
Vue实现图书管理小案例
2020/12/03 Vue.js
Python获取央视节目单的实现代码
2015/07/25 Python
Python处理JSON数据并生成条形图
2016/08/05 Python
Django ORM 自定义 char 类型字段解析
2019/08/09 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
python实现一个点绕另一个点旋转后的坐标
2019/12/04 Python
python编写微信公众号首图思路详解
2019/12/13 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
2020/02/26 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
Python基于爬虫实现全网搜索并下载音乐
2021/02/14 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
2020/05/26 HTML / CSS
打造经典复古风格的品牌:Alice + Olivia(爱丽丝+奥利维亚)
2016/09/07 全球购物
Famous Footwear加拿大:美国多品牌运动休闲鞋店
2018/12/05 全球购物
餐饮加盟计划书
2014/01/10 职场文书
文明礼仪伴我行演讲稿
2014/05/12 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
优秀大学生申请书
2019/06/24 职场文书
八年级作文之友情
2019/11/25 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python