Python利用Nagios增加微信报警通知的功能


Posted in Python onFebruary 18, 2016

Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。

Nagios是调用微信公共平台的api接口发送报警邮件。在正式操作之前,有几个准备工作要做。先安装nagios,可以使用我提供的nagios一键安装脚本。然后是去微信公共平台申请一个企业号,我申请时填的是组织,没有认证也可以使用。最后登录公共平台添加通讯录,和新建应用(例如nagios),记录应用的id后面要用。用户权限什么自己设定。

Python利用Nagios增加微信报警通知的功能

Python利用Nagios增加微信报警通知的功能

微信脚本

nagios和微信平台都准备好之后,接下来下载微信命令脚本。右键点击 下载 ,保存。然后上传到nagios服务器,例如/usr/local/nagios/python/weixin目录,设置文件权限为可执行。在/usr/local/nagios/python/weixin目录新建config.py文件,添加如下配置。

#coding:utf-8
CorpID='xxxxx'
Secret='xxxxxxxxxxxxxxxxx'
DEBUG=0
ToUser='sijitao.net'
AgentId=1

其中CorpID和Secret这两个可以通过登录微信公共平台,打开添加的应用(例如nagios)获取。

微信脚本命令传递的参数通过“-@@-”符号来分割,详细说明可以参考我的github地址:https://github.com/zhangnq/nagios/tree/master/weixin

Nagios配置

下面就是nagios上的常规配置。

commands.cfg命令文件中添加weixin命令:

define command{
command_name notify-host-by-weixin
command_line /usr/local/nagios/python/weixin/NotifyByWeixin.py "host-@@-$NOTIFICATIONTYPE$-@@-$HOSTNAME$-@@-$HOSTSTATE$-@@-$HOSTADDRESS$-@@-$HOSTOUTPUT$-@@-$CONTACTALIAS$"
}
define command{
command_name notify-service-by-weixin
command_line /usr/local/nagios/python/weixin/NotifyByWeixin.py "service-@@-$NOTIFICATIONTYPE$-@@-$SERVICEDESC$-@@-$HOSTALIAS$-@@-$HOSTADDRESS$-@@-$SERVICESTATE$-@@-$SERVICEOUTPUT$-@@-$CONTACTALIAS$"
}

templates.cfg模板文件中添加联系人模板:

define contact{
name weixin-contact
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r,f,s
host_notification_options d,u,r,f,s
service_notification_commands notify-service-by-weixin
host_notification_commands notify-host-by-weixin
register 0
}

contacts.cfg联系人中添加微信通知联系人,这里alias名字要和微信公共平台通讯录中名字帐号一样才会发送成功。

define contact{
contact_name zhangnq-weixin
use weixin-contact
alias zhangnq
email admin@sijitao.net
}

最后在配置service的时候添加zhangnq-weixin这个联系人后就可以通过微信发送报警邮件了。

Python利用Nagios增加微信报警通知的功能 

关于小编给大家分享的Python利用Nagios增加微信报警通知的功能就给大家介绍这么多,希望对大家有所帮助。

Python 相关文章推荐
python中正则表达式的使用详解
Oct 17 Python
python使用win32com库播放mp3文件的方法
May 30 Python
利用Python爬取可用的代理IP
Aug 18 Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 Python
PyQt4实现下拉菜单可供选择并打印出来
Apr 20 Python
python中使用psutil查看内存占用的情况
Jun 11 Python
numpy添加新的维度:newaxis的方法
Aug 02 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
Jan 04 Python
Python 实现大整数乘法算法的示例代码
Sep 17 Python
Python函数生成器原理及使用详解
Mar 12 Python
基于python实现数组格式参数加密计算
Apr 21 Python
Python游戏开发实例之graphics实现AI五子棋
Nov 01 Python
Python多线程、异步+多进程爬虫实现代码
Feb 17 #Python
玩转python爬虫之爬取糗事百科段子
Feb 17 #Python
玩转python爬虫之正则表达式
Feb 17 #Python
玩转python爬虫之URLError异常处理
Feb 17 #Python
玩转python爬虫之cookie使用方法
Feb 17 #Python
Python 爬虫爬取指定博客的所有文章
Feb 17 #Python
Using Django with GAE Python 后台抓取多个网站的页面全文
Feb 17 #Python
You might like
php include,include_once,require,require_once
2008/09/05 PHP
Wordpress php 分页代码
2009/10/21 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
2014/11/11 PHP
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
javascript parseInt与Number函数的区别
2010/01/21 Javascript
用jquery存取照片的具体实现方法
2013/06/30 Javascript
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
jQuery插件实现静态HTML验证码校验
2015/11/06 Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
2015/12/03 Javascript
jquery对象和DOM对象的任意相互转换
2016/02/21 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
AngularJS中的缓存使用
2017/01/11 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
JS中Object对象的原型概念基础
2018/01/29 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
PyQt5每天必学之进度条效果
2018/04/19 Python
python 多线程将大文件分开下载后在合并的实例
2018/11/09 Python
django session完成状态保持的方法
2018/11/27 Python
Python 实现微信自动回复的方法
2020/09/11 Python
Flask处理Web表单的实现方法
2021/01/31 Python
python实现计算图形面积
2021/02/22 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
html5 application cache遇到的严重问题
2012/12/26 HTML / CSS
欧洲领先的技术商店:eibmarkt.com
2019/05/10 全球购物
工商学院毕业生个人自我评价
2013/09/19 职场文书
十八大闭幕感言
2014/01/22 职场文书
机械设计及其自动化求职推荐信
2014/02/17 职场文书
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
公司司机岗位职责范本
2014/03/03 职场文书
2015年远程教育工作总结
2015/05/20 职场文书
2016新年感言
2015/08/03 职场文书
学雷锋广播稿大全
2015/08/19 职场文书
详解MySQL的半同步
2021/04/22 MySQL