通过微信服务号推送Zabbix告警
近期看到一篇通过微信实现Zabbix告警的文章,但实践时发现,无法成功发送消息。
分析原因,应该是微信公众平台加强了登录验证,在登录时会需要管理员进行扫描二维码操作才能成功登陆后台:
而之前文章中的API是通过账号密码模拟浏览器登陆方式,进行后台操作,无法通过这个安全验证,消息发送功能自然也不可用。
本文经我自己验证,是可以实现通过微信推送消息的。这种实现基于微信服务号平台的“模板短信”功能,必要条件如下:
微信服务号通过微信认证(需提交公司营业执照等等信息,同时会收取300元/年的认证服务费用)。
这个实现方法,还需要Python + Shell脚本的配合,我已经放到github上了,在如下的实施步骤中也有说明。
备注:如果个人用户的话,建议可以直接使用QQ邮件+微信邮件提醒。
好叻,下面开始我们整个步骤。
一、注册微信服务号,并进行微信认证
关于微信服务号的注册及认证,请看微信官方指引
二、开通模板消息功能以及报警通知模板
- 在微信公众平台管理后台添加功能-模板消息
- 从模板库中选择报警通知模板(后面以“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告警的更多相关文章
- $Django 支付宝支付,微信服务号推送消息 (测试需要把应用程序部署到服务器上)
一 支付宝支付 大概 支付宝支付 正式环境:需要用营业执照去申请商户号,appid 测试环境:沙箱环境:https://openhome.alipay.com/platform/appDaily.ht ...
- php三方网站使用微信公众号推送文章
//获取accesstoken 的方法public function index(){ $appId = 'wxd0e50fe967dccccc'; $appSecret = 'd7f6be12ce4 ...
- 笔记:《机器学习训练秘籍》——吴恩达deeplearningai微信公众号推送文章
说明 该文为笔者在微信公众号:吴恩达deeplearningai 所推送<机器学习训练秘籍>系列文章的学习笔记,公众号二维码如下,1到15课课程链接点这里 该系列文章主要是吴恩达先生在机器 ...
- 【原创分享·微信支付】C# MVC 微信支付之微信模板消息推送
微信支付之微信模板消息推送 今天我要跟大家分享的是“模板消息”的推送,这玩意呢,你说用途嘛,那还是真真的牛逼呐.原因在哪?就是因为它是依赖微信生存的呀,所以他能不 ...
- C# MVC 微信支付之微信模板消息推送
微信支付之微信模板消息推送 今天我要跟大家分享的是"模板消息"的推送,这玩意呢,你说用途嘛,那还是真真的牛逼呐.原因在哪?就是因为它是依赖微信 ...
- PHP 开发社区微信服务号实战图解
本博文就月初刚上线的微信服务号,图文进行总结分享给大家. 去年年底,我所在的团队讨论要开发微信号,话题由此拉开: 原来有一个3年前注册的微信号,但是后台操作无法从“订阅号”变更为“服务号”,随即找腾讯 ...
- 前后端分离djangorestframework—— 接入微信模板消息推送
微信 什么是微信也不多说,跟前面的支付宝一样的 微信支付 微信支付也有个沙箱环境,沙箱环境官方文档 由文档中那句很显眼的话所得,即使是测试环境也需要真实的商户号,所以这个就没法想支付宝那样用沙箱账号来 ...
- qhfl-9 微信模板消息推送
开发中用的是测试号 微信公众号认证流程 用户登陆 <!DOCTYPE html> <html lang="en"> <head> <met ...
- java开发微信模板消息推送
发布时间:2018-12-12 技术:springboot+maven 概述 该demo主要涉及微信模板消息推送功能, 详细 代码下载:http://www.demodashi.com/dem ...
随机推荐
- 采用get方式提交数据到服务器实例
GetDemo项目目录 一.编写StreamTools.java /** * */ package com.hyzhou.getdemo.utiils; import java.io.ByteArra ...
- hadoop应用开发技术详解
<大 数据技术丛书:Hadoop应用开发技术详解>共12章.第1-2章详细地介绍了Hadoop的生态系统.关键技术以及安装和配置:第3章是 MapReduce的使用入门,让读者了解整个开发 ...
- Python的Flask框架与数据库连接的教程
命令行方式运行Python脚本 在这个章节中,我们将写一些简单的数据库管理脚本.在此之前让我们来复习一下如何通过命令行方式执行Python脚本. 如果Linux 或者OS X的操作系统,需要有执行脚 ...
- open-falcon之graph
功能 存储agent push的数据 为query 提供查询数据接口 参考RRDtool的理念,在数据每次存入的时候,会自动进行采样.归档.在默认的归档策略,一分钟push一次的频率下, 历史数据保存 ...
- 模型提升方法adaBoost
他通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能. adaboost提高那些被前一轮弱分类器错误分类样本的权重,而降低那些被正确分类样本的权重,这样使得,那些没有得 ...
- Android adb录制视频和截屏的dos脚本
以下是本人写的脚本,用于录制android手机视频.截屏 dos脚本文件名:screenrecord.bat @ECHO OFF CLS color 0a set SCREEN_RECORD_SAVE ...
- 常见的mysql 进程state<转自网络>
Analyzing 线程是对MyISAM 表的统计信息做分析(例如, ANALYZE TABLE ). checking permissions 线程是检查服务器是否具有所需的权限来执行该语句. Ch ...
- Spark学习笔记--Spark在Windows下的环境搭建
本文主要是讲解Spark在Windows环境是如何搭建的 一.JDK的安装 1.1 下载JDK 首先需要安装JDK,并且将环境变量配置好,如果已经安装了的老司机可以忽略.JDK(全称是JavaTM P ...
- LeetCode 39 Combination Sum(满足求和等于target的所有组合)
题目链接: https://leetcode.com/problems/combination-sum/?tab=Description Problem: 给定数组并且给定一个target,求出所 ...
- 23种设计模式之抽象工厂(Abstract Factory)
抽象工厂模式又称为Kit模式,属于对象创建型模式.抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形态,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类.在抽象工厂模 ...