通过微信服务号的模板短信功能,实现ZABBIX告警通知
近期看到一篇通过微信实现Zabbix告警的文章,但实践时发现,无法成功发送消息。
分析原因,应该是微信公众平台加强了登录验证,在登录时会需要管理员进行扫描二维码操作才能成功登陆后台:
而之前文章中的API是通过账号密码模拟浏览器登陆方式,进行后台操作,无法通过这个安全验证,消息发送功能自然也不可用。
本文经我自己验证,是可以实现通过微信推送消息的。这种实现基于微信服务号平台的“模板短信”功能,必要条件如下:
微信服务号通过微信认证(需提交公司营业执照等等信息,同时会收取300元/年的认证服务费用)。
这个实现方法,还需要Python + Shell脚本的配合,我已经放到github上了,在如下的实施步骤中也有说明。
备注:如果个人用户的话,建议可以直接使用QQ邮件+微信邮件提醒。
好叻,下面开始我们整个步骤。 一、注册微信服务号,并进行微信认证 关于微信服务号的注册及认证,请看微信官方指引
二、开通模板消息功能以及报警通知模板
三、下载配置告警通知脚本 # 下载告警通知脚本 # 部署告警通知脚本到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 nickname: 胡文西 openid: BBBB
五、配置Zabbix 1. 添加Media type(告警媒介)
Name: X. AlertWeixin Type: Script
Script name: AlertWeixin.sh
2. 配置profile - Media(告警接收ID)
Type: X. AlertWeixin Send to: OPENID
六、测试验证 测试告警,微信消息截图如图
原创: 胡文西
|