zoukankan      html  css  js  c++  java
  • 通过微信服务号推送Zabbix告警

    近期看到一篇通过微信实现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

    六、测试验证

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

    weixin

  • 相关阅读:
    【设计模式】适配器模式
    【设计模式】单例模式
    MSScriptControl详解(可实现在C#等语言中调用JAVASCRIPT代码)
    一:简介
    你是否经常想写点什么?
    SQL server2008无法收缩日志
    SqlServer中把结果集放到到临时表的方法(转)
    (转)64位系统安装Delphi7提示Can’t load package:dclite70.bpl 以及 提示地址错误
    太有用了,所以转:Delphi下16进制位图数据转位图
    C# 使用access,报错:标准表达式中数据类型不匹配
  • 原文地址:https://www.cnblogs.com/zhengchunyuan/p/8175940.html
Copyright © 2011-2022 走看看