近期看到一篇通过微信实现Zabbix告警的文章,但实践时发现,无法成功发送消息。

分析原因,应该是微信公众平台加强了登录验证,在登录时会需要管理员进行扫描二维码操作才能成功登陆后台:

而之前文章中的API是通过账号密码模拟浏览器登陆方式,进行后台操作,无法通过这个安全验证,消息发送功能自然也不可用。

本文经我自己验证,是可以实现通过微信推送消息的。这种实现基于微信服务号平台的“模板短信”功能,必要条件如下:

微信服务号通过微信认证(需提交公司营业执照等等信息,同时会收取300元/年的认证服务费用)。

这个实现方法,还需要Python + Shell脚本的配合,我已经放到github上了,在如下的实施步骤中也有说明。

备注:如果个人用户的话,建议可以直接使用QQ邮件+微信邮件提醒。

好叻,下面开始我们整个步骤。

一、注册微信服务号,并进行微信认证

关于微信服务号的注册及认证,请看微信官方指引

二、开通模板消息功能以及报警通知模板

  1. 在微信公众平台管理后台添加功能-模板消息
  2. 从模板库中选择报警通知模板(后面以“IT/网络游戏”的“系统故障告警通知”模板进行配置,其他行业内的告警类模板可能会有不同,可参照配置)

三、下载配置告警通知脚本

下载告警通知脚本

$ git clone https://github.com/vincihu/misc/

# 部署告警通知脚本到zabbix的alertscripts目录

$ sudo mv misc/wxAlert /usr/lib/zabbix/alertscripts/

$ sudo mv /usr/lib/zabbix/alertscripts/{wxAlert/,}AlertWeixin.sh

$ sudo mkdir /usr/lib/zabbix/alertscripts/logs

# 为脚本添加zabbix用户执行权限

$ sudo chmod u+x AlertWeixin.sh

$ sudo chown zabbix:zabbix \

/usr/lib/zabbix/alertscripts/{logs/,AlertWeixin.sh}

# 安装需要的python模块

$ sudo pip install -U configparser requests simplejson

修改wxAlert/wxAlert.conf,填入微信服务号相关信息

[default]

appid = APPID

secret = SECRET

template_id = TEMPLATE_ID

四、获取服务号订阅用户信息

# 使用wxGetUserInfo.py脚本获取服务器订阅用户列表,以及其openid

# openid用于后续的告警接收,相当于邮件告警的邮件地址

$ cd /usr/lib/zabbix/alertscripts/wxAlert/

$ python wxGetUserInfo.py 2>/dev/null

nickname: JasonQu

openid: AAAA

headimgurl: http://wx.qlogo.cn/mmopen/XXXX/0

nickname: 胡文西

openid: BBBB

headimgurl: http://wx.qlogo.cn/mmopen/YYYY/0

五、配置Zabbix

1. 添加Media type(告警媒介)

Name: X. AlertWeixin

Type: Script

Script name: AlertWeixin.sh

2. 配置profile - Media(告警接收ID)

Type: X. AlertWeixin

Send to: OPENID

六、测试验证

测试告警,微信消息截图如图

通过微信服务号推送Zabbix告警的更多相关文章

  1. $Django 支付宝支付,微信服务号推送消息 (测试需要把应用程序部署到服务器上)

    一 支付宝支付 大概 支付宝支付 正式环境:需要用营业执照去申请商户号,appid 测试环境:沙箱环境:https://openhome.alipay.com/platform/appDaily.ht ...

  2. php三方网站使用微信公众号推送文章

    //获取accesstoken 的方法public function index(){ $appId = 'wxd0e50fe967dccccc'; $appSecret = 'd7f6be12ce4 ...

  3. 笔记:《机器学习训练秘籍》——吴恩达deeplearningai微信公众号推送文章

    说明 该文为笔者在微信公众号:吴恩达deeplearningai 所推送<机器学习训练秘籍>系列文章的学习笔记,公众号二维码如下,1到15课课程链接点这里 该系列文章主要是吴恩达先生在机器 ...

  4. 【原创分享·微信支付】C# MVC 微信支付之微信模板消息推送

    微信支付之微信模板消息推送                    今天我要跟大家分享的是“模板消息”的推送,这玩意呢,你说用途嘛,那还是真真的牛逼呐.原因在哪?就是因为它是依赖微信生存的呀,所以他能不 ...

  5. C# MVC 微信支付之微信模板消息推送

    微信支付之微信模板消息推送                    今天我要跟大家分享的是"模板消息"的推送,这玩意呢,你说用途嘛,那还是真真的牛逼呐.原因在哪?就是因为它是依赖微信 ...

  6. PHP 开发社区微信服务号实战图解

    本博文就月初刚上线的微信服务号,图文进行总结分享给大家. 去年年底,我所在的团队讨论要开发微信号,话题由此拉开: 原来有一个3年前注册的微信号,但是后台操作无法从“订阅号”变更为“服务号”,随即找腾讯 ...

  7. 前后端分离djangorestframework—— 接入微信模板消息推送

    微信 什么是微信也不多说,跟前面的支付宝一样的 微信支付 微信支付也有个沙箱环境,沙箱环境官方文档 由文档中那句很显眼的话所得,即使是测试环境也需要真实的商户号,所以这个就没法想支付宝那样用沙箱账号来 ...

  8. qhfl-9 微信模板消息推送

    开发中用的是测试号 微信公众号认证流程 用户登陆 <!DOCTYPE html> <html lang="en"> <head> <met ...

  9. java开发微信模板消息推送

    发布时间:2018-12-12   技术:springboot+maven   概述 该demo主要涉及微信模板消息推送功能, 详细 代码下载:http://www.demodashi.com/dem ...

随机推荐

  1. MySQL---insert into select from

    INSERT INTO perf_week(node_id,perf_time,pm25,pm10,temp,humi) SELECT node_id,'2016-12-22 11:55:00' AS ...

  2. 【GIS】postgres(postgis) --》nodejs+express --》geojson --》leaflet

    一.基本架构 1.数据存储层:PostgreSQL-9.2.13 + postgis_2_0_pg92 2.业务处理层:Nodejs + Express + PG驱动 3.前端展示层:Leaflet ...

  3. [Ubuntu] 解决 pip 安装 lxml 出现 x86_64-linux-gnu-gcc 异常

    安装 pip : $ wget https://bootstrap.pypa.io/get-pip.py ... $ sudo python get-pip.py install 使用 pip 安装/ ...

  4. flask livereload用法

    #coding=utf-8 from flask import Flask from flask_script import Manager app = Flask(__name__) manager ...

  5. ARM9通过NFS挂载根文件系统

    当开发板启动以后可以通过在超级终端发送命令来配置NFS. 首先得给开发板一个IP地址,用下面的命令配置即可: #ifconfig 192.168.0.10 经过上面的配置以后在各自的终端中应该都能PI ...

  6. 微信JSSDK支付接口-安卓机无法正常调起接口

    今天碰到个问题,是项目调起微信支付接口,苹果机都没有什么问题,但是安卓机的情况就是支付接口出现一下就消失了 试了将error反馈信息弹出来,也就是显示choosewxpay fail 找了半天不知道什 ...

  7. C# mvc 500 内部服务器访问异常

    20161018 项目发布到IIS上后,无法访问,由于页面默认跳转到异常处理去了,所以详细信息一直查看不了. 在找寻无果,异常信息日志记录无效的情况下,只好一点点来测试了 在异常处理前,就已经试过,a ...

  8. 清理和关闭多余的Windows 7系统服务

    清理和关闭多余的Windows 7系统服务 现在已经有不少配置不是很高的电脑用户正式用上了Windows 7(以下简称Win 7),如何让低配置电脑可以更流畅的运行Win 7呢?虽然部分软件提供了傻瓜 ...

  9. 【宝塔】 安装扩展Memcached redis 教程

    宝塔官网: www.bt.cn 开始安装 1 进入ssh 输入以下指令, wget -O ext.sh http://125.88.182.172:5880/ext/ext.sh && ...

  10. springboot---->springboot中的格式化(一)

    这里面我们简单的学习一下springboot中关于数据格式化的使用.我以为你不是个好人,没想到你连个坏人都不是. springboot中的格式化 我们的测试环境是springboot,一个将字符串格式 ...