持韵 發表於 2023-5-22 00:00:00

通过微信服务号推送Zabbix告警

<p>近期看到一篇通过微信实现Zabbix告警的文章,但实践时发现,无法成功发送消息。</p>
<p>分析原因,应该是微信公众平台加强了登录验证,在登录时会需要管理员进行扫描二维码操作才能成功登陆后台:</p>
<blockquote><p>而之前文章中的API是通过账号密码模拟浏览器登陆方式,进行后台操作,无法通过这个安全验证,消息发送功能自然也不可用。</p></blockquote>
<p>本文经我自己验证,是可以实现通过微信推送消息的。这种实现基于微信服务号平台的“模板短信”功能,必要条件如下:</p>
<blockquote><p>微信服务号通过微信认证(需提交公司营业执照等等信息,同时会收取300元/年的认证服务费用)。</p></blockquote>
<p>这个实现方法,还需要Python + Shell脚本的配合,我已经放到github上了,在如下的实施步骤中也有说明。</p>
<p>备注:如果个人用户的话,建议可以直接使用QQ邮件+微信邮件提醒。</p>
<p>好叻,下面开始我们整个步骤。</p>
<p class="">一、注册微信服务号,并进行微信认证</p>
<p>关于微信服务号的注册及认证,请看微信官方指引</p>
<p class="">二、开通模板消息功能以及报警通知模板</p>
<ol class="list-paddingleft-2">
<li>在微信公众平台管理后台添加功能-模板消息</li>
<li>从模板库中选择报警通知模板(后面以“IT/网络游戏”的“系统故障告警通知”模板进行配置,其他行业内的告警类模板可能会有不同,可参照配置)</li>
</ol>
<p class="">三、下载配置告警通知脚本</p>
<blockquote class="">
<p><em># </em>下载告警通知脚本</p>
<p><em>$ git clone https://github.com/vincihu/misc/</em></p>
<p># 部署告警通知脚本到zabbix的alertscripts目录</p>
<p><em>$ sudo mv misc/wxAlert /usr/lib/zabbix/alertscripts/</em></p>
<p><em>$ sudo mv /usr/lib/zabbix/alertscripts/{wxAlert/,}AlertWeixin.sh</em></p>
<p><em>$ sudo mkdir /usr/lib/zabbix/alertscripts/logs</em></p>
<p># 为脚本添加zabbix用户执行权限</p>
<p><em>$ sudo chmod u+x AlertWeixin.sh</em></p>
<p><em>$ sudo chown zabbix:zabbix \</em></p>
<p><em> /usr/lib/zabbix/alertscripts/{logs/,AlertWeixin.sh}</em></p>
<p># 安装需要的python模块</p>
<p><em>$ sudo pip install -U configparser requests simplejson</em></p>
</blockquote>
<p>修改wxAlert/wxAlert.conf,填入微信服务号相关信息</p>
<blockquote class="">
<p></p>
<p>appid = APPID</p>
<p>secret = SECRET</p>
<p>template_id = TEMPLATE_ID</p>
</blockquote>
<p class="">四、获取服务号订阅用户信息</p>
<blockquote class="">
<p># 使用wxGetUserInfo.py脚本获取服务器订阅用户列表,以及其openid</p>
<p># openid用于后续的告警接收,相当于邮件告警的邮件地址</p>
<p><em>$ cd /usr/lib/zabbix/alertscripts/wxAlert/</em></p>
<p><em>$ python wxGetUserInfo.py 2&gt;/dev/null</em></p>
<p>nickname: JasonQu</p>
<p>openid: AAAA</p>
<p>headimgurl: http://wx.qlogo.cn/mmopen/XXXX/0</p>
<p>nickname: 胡文西</p>
<p>openid: BBBB</p>
<p>headimgurl: http://wx.qlogo.cn/mmopen/YYYY/0</p>
</blockquote>
<p class="">五、配置Zabbix</p>
<p>1. 添加Media type(告警媒介)</p>
<blockquote class="">
<p>Name: X. AlertWeixin</p>
<p>Type: Script</p>
<p>Script name: AlertWeixin.sh</p>
</blockquote>
<p>2. 配置profile - Media(告警接收ID)</p>
<blockquote class="">
<p>Type: X. AlertWeixin</p>
<p>Send to: OPENID</p>
</blockquote>
<p class="">六、测试验证</p>
<p>测试告警,微信消息截图如图</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230517/e8beb715b4608e62c6a26c0e0b22b014.jpg" width="1024" height="816"></p>
頁: [1]
查看完整版本: 通过微信服务号推送Zabbix告警