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 相关文章推荐
python3抓取中文网页的方法
Jul 28 Python
python自动翻译实现方法
May 28 Python
Python中模块string.py详解
Mar 12 Python
详解Python中where()函数的用法
Mar 27 Python
详解基于django实现的webssh简单例子
Jul 17 Python
简单了解python中对象的取反运算符
Jul 01 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
Sep 16 Python
关于Numpy数据类型对象(dtype)使用详解
Nov 27 Python
解析Python 偏函数用法全方位实现
Jun 26 Python
python3实现简单飞机大战
Nov 29 Python
Python自动化工具之实现Excel转Markdown表格
Apr 08 Python
Python PIL按比例裁剪图片
May 11 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 一个页面执行时间类代码
2010/03/05 PHP
php中ob_flush函数和flush函数用法分析
2015/03/18 PHP
PHP并发查询MySQL的实例代码
2017/08/09 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
微信小程序 教程之小程序配置
2016/10/17 Javascript
Javascript blur与click冲突解决办法
2017/01/09 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
2019/11/29 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
2020/01/26 Javascript
跟老齐学Python之深入变量和引用对象
2014/09/24 Python
Python基于opencv调用摄像头获取个人图片的实现方法
2019/02/21 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
2020/10/14 Python
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
经典c++面试题六
2012/01/18 面试题
一些高难度的SQL面试题
2016/11/29 面试题
电子商务专业学生的自我鉴定
2013/11/28 职场文书
团工委书记自荐书范文
2013/12/17 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
《雨霖铃》教学反思
2014/02/22 职场文书
《郑和远航》教学反思
2014/04/16 职场文书
珍爱生命演讲稿
2014/05/10 职场文书
关于读书的演讲稿800字
2014/08/27 职场文书
离婚协议书怎么写2014
2014/09/30 职场文书
2014保险公司内勤工作总结
2014/12/16 职场文书
先进个人材料怎么写
2014/12/30 职场文书
长城导游词300字
2015/01/30 职场文书
2015年银行工作总结范文
2015/04/01 职场文书
九年级英语教学反思
2016/02/15 职场文书
MySQL中distinct和count(*)的使用方法比较
2021/05/26 MySQL
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫