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实现从url中提取域名的几种方法
Sep 26 Python
详解Python的Django框架中的templates设置
May 11 Python
Python实现读取txt文件并转换为excel的方法示例
May 17 Python
python实现寻找最长回文子序列的方法
Jun 02 Python
使用Python来开发微信功能
Jun 13 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
Aug 03 Python
python绘制地震散点图
Jun 18 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
Aug 17 Python
Python 变量的创建过程详解
Sep 02 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 Python
python编写softmax函数、交叉熵函数实例
Jun 11 Python
Pytorch如何切换 cpu和gpu的使用详解
Mar 01 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常用函数小技巧
2008/09/11 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
2019/08/12 PHP
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
js中eval详解
2012/03/30 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
2015/12/26 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
2020/05/12 Javascript
[33:19]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第一场 11.26
2020/11/30 DOTA
Python3中多线程编程的队列运作示例
2015/04/16 Python
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
Python中的字符串类型基本知识学习教程
2016/02/04 Python
qpython3 读取安卓lastpass Cookies
2016/06/19 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
浅谈Pytorch中的torch.gather函数的含义
2019/08/18 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
2020/04/14 Python
IE9下html5初试小刀
2010/09/21 HTML / CSS
澳大利亚药房在线:ThePharmacy
2017/10/04 全球购物
大一新生军训时的自我评价分享
2013/12/05 职场文书
大学生自我鉴定范文模板
2014/01/21 职场文书
运动会解说词100字
2014/01/31 职场文书
草船借箭教学反思
2014/02/03 职场文书
班级团队活动方案
2014/08/14 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
优秀党员推荐材料
2014/12/18 职场文书
家长给老师的感谢信
2015/01/20 职场文书
公司年夜饭通知
2015/04/25 职场文书
交通事故赔偿起诉书
2015/05/20 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS