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实现的数据结构与算法之双端队列详解
Apr 22 Python
对于Python中RawString的理解介绍
Jul 07 Python
深入理解Python对Json的解析
Feb 14 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
Apr 26 Python
python使用pygame模块实现坦克大战游戏
Mar 25 Python
python远程邮件控制电脑升级版
May 23 Python
python 寻找离散序列极值点的方法
Jul 10 Python
Django CBV类的用法详解
Jul 26 Python
Python3的unicode编码转换成中文的问题及解决方案
Dec 10 Python
使用Keras预训练好的模型进行目标类别预测详解
Jun 27 Python
Django nginx配置实现过程详解
Sep 10 Python
深度学习详解之初试机器学习
Apr 14 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中session过期时间设置及session回收机制介绍
2014/05/05 PHP
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
javascript 异常处理使用总结
2009/06/21 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
js+css实现超简洁的二级下拉菜单效果代码
2015/09/07 Javascript
理解JavaScript中worker事件api
2015/12/25 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
浅谈react.js中实现tab吸顶效果的问题
2017/09/06 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
JS一次前端面试经历记录
2020/03/19 Javascript
vue实现短信验证码输入框
2020/04/17 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
python正则表达式中的括号匹配问题
2014/12/14 Python
Python标准库之Sys模块使用详解
2015/05/23 Python
python中实现指定时间调用函数示例代码
2017/09/08 Python
python+opencv实现动态物体识别
2018/01/09 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
如何利用Python动态模拟太阳系运转
2020/09/04 Python
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
Big Green Smile德国网上商店:提供各种天然产品
2018/05/23 全球购物
应届大专毕业生个人自荐信
2013/09/22 职场文书
大学生关于奋斗的演讲稿
2014/01/09 职场文书
会计职业生涯规划书
2014/01/13 职场文书
学雷锋月活动总结
2014/04/25 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
慰问信模板
2015/02/14 职场文书
健康证明
2015/06/19 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
mysql 带多个条件的查询方式
2021/06/05 MySQL
Python极值整数的边界探讨分析
2021/09/15 Python
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS