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生成器的使用方法
Nov 21 Python
Python编程判断这天是这一年第几天的方法示例
Apr 18 Python
Python数据可视化之画图
Jan 15 Python
scrapy-redis的安装部署步骤讲解
Feb 27 Python
Python 分享10个PyCharm技巧
Jul 13 Python
对Django项目中的ORM映射与模糊查询的使用详解
Jul 18 Python
基于Python实现大文件分割和命名脚本过程解析
Sep 29 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
基于python及pytorch中乘法的使用详解
Dec 27 Python
Django 解决由save方法引发的错误
May 21 Python
如何利用python正则表达式匹配版本信息
Dec 09 Python
Python爬取梨视频的示例
Jan 29 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 smarty模版引擎中的缓存应用
2009/12/11 PHP
php 修改zen-cart下单和付款流程以防止漏单
2010/03/08 PHP
PHP5 字符串处理函数大全
2010/03/23 PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
2011/11/25 PHP
php json_encode与json_decode详解及实例
2016/12/13 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
一些常用的JavaScript函数(json)附详细说明
2011/05/25 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
2014/06/06 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
javascript结合ajax读取txt文件内容
2014/12/05 Javascript
JavaScript获取网页中第一个图片id的方法
2015/04/03 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
JS将网址url转化为JSON格式的方法
2018/07/02 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
2019/04/29 Javascript
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
JavaScript实现电灯开关小案例
2020/03/30 Javascript
React冒泡和阻止冒泡的应用详解
2020/08/18 Javascript
Python中itertools模块用法详解
2014/09/25 Python
Python 中的with关键字使用详解
2016/09/11 Python
python针对不定分隔符切割提取字符串的方法
2018/10/26 Python
python爬虫 urllib模块反爬虫机制UA详解
2019/08/20 Python
用python实现前向分词最大匹配算法的示例代码
2020/08/06 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
班主任新年寄语
2014/04/04 职场文书
青年文明号口号
2014/06/17 职场文书
计划生育证明格式范本
2014/09/12 职场文书
创先争优个人总结
2015/03/04 职场文书
优质护理服务心得体会
2016/01/22 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android