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 相关文章推荐
tornado 多进程模式解析
Jan 15 Python
Python实现Pig Latin小游戏实例代码
Feb 02 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
Oct 11 Python
Python格式化输出字符串方法小结【%与format】
Oct 29 Python
django 类视图的使用方法详解
Jul 24 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
Pytorch释放显存占用方式
Jan 13 Python
Jupyter notebook快速入门教程(推荐)
May 18 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
Jun 02 Python
如何解决安装python3.6.1失败
Jul 01 Python
用python读取xlsx文件
Dec 17 Python
对Pytorch 中的contiguous理解说明
Mar 03 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发送post请求函数分享
2014/03/06 PHP
PHP中数据库单例模式的实现代码分享
2014/08/21 PHP
php实现批量修改文件名称的方法
2016/07/23 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
javascript-TreeView父子联动效果保持节点状态一致
2007/08/12 Javascript
window.onbeforeunload方法在IE下无法正常工作的解决办法
2010/01/23 Javascript
javascript 闭包疑问
2010/12/30 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
javascript创建和存储cookie示例
2014/01/07 Javascript
JQuery中Bind()事件用法分析
2015/05/05 Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
2016/07/14 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
微信开发之微信jssdk录音功能开发示例
2018/10/22 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
Python常见文件操作的函数示例代码
2011/11/15 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
python 消费 kafka 数据教程
2019/12/21 Python
Python线程threading模块用法详解
2020/02/26 Python
浅谈在JupyterNotebook下导入自己的模块的问题
2020/04/16 Python
如何用Django处理gzip数据流
2021/01/29 Python
浅谈matplotlib默认字体设置探索
2021/02/03 Python
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
曼联官方网上商店:Manchester United Direct
2017/07/28 全球购物
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
编程用JAVA解析XML的方式
2013/07/07 面试题
商务日语专业毕业生求职信
2013/10/26 职场文书
高中美术教学反思
2014/01/19 职场文书
《沉香救母》教学反思
2014/04/19 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
2021/06/13 Python
python turtle绘图
2022/05/04 Python