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的dict,set,list,tuple应用详解
Jul 24 Python
python获取当前时间对应unix时间戳的方法
May 15 Python
Python中几种导入模块的方式总结
Apr 27 Python
Python如何快速上手? 快速掌握一门新语言的方法
Nov 14 Python
解决pycharm运行时interpreter为空的问题
Oct 29 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
May 15 Python
python代码实现逻辑回归logistic原理
Aug 07 Python
解决Django后台ManyToManyField显示成Object的问题
Aug 09 Python
Python 获取项目根路径的代码
Sep 27 Python
Python使用enumerate获取迭代元素下标
Feb 03 Python
python 判断字符串当中是否包含字符(str.contain)
Jun 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
php模板中出现空行解决方法
2011/03/08 PHP
php实现水仙花数示例分享
2014/04/03 PHP
php 生成加密公钥加密私钥实例详解
2017/06/16 PHP
JavaScript 10件让人费解的事情
2010/02/15 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
js 点击a标签 获取a的自定义属性方法
2016/11/21 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
jquery实现全选、全不选以及单选功能
2017/03/23 jQuery
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
使用weixin-java-tools完成微信授权登录、微信支付的示例
2018/09/26 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
Python实现学生成绩管理系统
2020/04/05 Python
Python实现PS滤镜中马赛克效果示例
2018/01/20 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
python操作excel文件并输出txt文件的实例
2018/07/10 Python
Python实用库 PrettyTable 学习笔记
2019/08/06 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
python实现扫雷小游戏
2020/04/24 Python
Django ORM 查询表中某列字段值的方法
2020/04/30 Python
python判断是空的实例分享
2020/07/06 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
2021/01/27 Python
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
2014/05/07 HTML / CSS
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
联想中国官方商城:Lenovo China
2017/10/18 全球购物
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
单位租房协议书样本
2014/10/30 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL
详解Vue的options
2021/05/15 Vue.js
基于HTML十秒做出淘宝页面
2021/10/24 HTML / CSS
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript