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模仿POST提交HTTP数据及使用Cookie值的方法
Nov 10 Python
Python中的条件判断语句基础学习教程
Feb 07 Python
浅谈Python中用datetime包进行对时间的一些操作
Jun 23 Python
关于Django显示时间你应该知道的一些问题
Dec 25 Python
python 读写文件,按行修改文件的方法
Jul 12 Python
python+selenium实现QQ邮箱自动发送功能
Jan 23 Python
Python中函数的返回值示例浅析
Aug 28 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
Jan 16 Python
python 给图像添加透明度(alpha通道)
Apr 09 Python
如何用python处理excel表格
Jun 09 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
Jun 23 Python
Django如何实现防止XSS攻击
Oct 13 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/03 咖啡文化
PHP生成指定随机字符串的简单实现方法
2015/04/01 PHP
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
javascript DOM编程实例(智播客学习)
2009/11/23 Javascript
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
jQuery实现的简单提示信息插件
2015/12/08 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
完美JQuery图片切换效果的简单实现
2016/07/21 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
python判断链表是否有环的实例代码
2020/01/31 Python
Lombok插件安装(IDEA)及配置jar包使用详解
2020/11/04 Python
python 实现图片批量压缩的示例
2020/12/18 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
详解HTML5表单新增属性
2016/12/21 HTML / CSS
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
美的官方商城:Midea
2016/09/14 全球购物
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
电子商务专业个人的自我评价
2013/11/19 职场文书
法制教育观后感
2015/06/17 职场文书
工作态度怎么写
2015/06/25 职场文书
python基于tkinter制作下班倒计时工具
2021/04/28 Python
解决python绘图使用subplots出现标题重叠的问题
2021/04/30 Python
zabbix监控mysql的实例方法
2021/06/02 MySQL