hha 发表于 2015-11-23 12:45:53

zabbix如何实现微信报警

  现实生产环境中,我们通常使用邮件和短信接受zabbix报警信息,但是邮件经常被工作人员搁置在角落中甚至被设置为垃圾邮件被过滤掉。公司的短信接口又太贵,复杂环境中使用短息报警会使运维成本增加很多。微信提供了很好的第三方接口,我们可以利用微信报警以求降低运维成本。
  


   微信的第三方接口要求我们先申请一个企业号——传送门:https://qy.weixin.qq.com/


  


  如何操作企业号?


  

1.通讯录添加企业成员





         我们要提前把成员信息添加进组织部门,必填项+手机号或者微信号,这样别人扫描二维码的时候才能成功关注企业号。

         注意:这里有两个我们要用到信息,一个组织部门的ID,一个部门成员的账号(账号是自己手动指定的,不同于微信号,最好是字母加数字)


  


  


  

2.应用中心创建应用





           我们要在这里创建应用,因为要通过应用发送消息给部门成员

         注意:这里要记住一个值,应用ID




  


  

3.给部门设置管理员





          设置--->功能设置---->权限管理---->新建管理组

          管理员必须事先已经关注了企业号,并且已经设置好邮箱地址






  

确定管理员可以读取通讯录,可以使用应用发消息。

         注意:我们需要管理员的CorpID和Secret


  

我们要准备这些东西:


[*]
    一个微信企业号
[*]
    企业号已经被部门成员关注
[*]
    企业号里有一个可以发消息的应用
[*]
    一个授权管理员,可以使用该应用给成员发消息


我们要取到这些信息:


[*]
    成员账号
[*]
    组织部门ID
[*]
    应用ID
[*]
    CropID
[*]
    Secret




Shell脚本原理





      使用:

      curl -s -Gurl         获取 AccessToken



      使用:

      curl --dataurl   传送凭证调用企业号接口





      zabbix会传递三个参数给脚本,$1是消息接收账号,$2报警标题,$3报警内容



#!/bin/bash

###SCRIPT_NAME:weixin.sh###

###send message from weixin for zabbix monitor###

###wuhf###

###V1-2015-08-25###





CropID='wxc084e5dc9efce297'

Secret='XNcNje_Ac1rxdnRNPVEgaR9cJOt8sHNsV3XW9sv30aaS_Ny6azPY7Jn8eHd0zNUJ'

GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"

Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $4}')





PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"





function body() {

      local int AppID=1

      local UserID=$1

      local PartyID=1

      local Msg=$(echo "$@" | cut -d" " -f3-)

      printf '{\n'
  
      printf '\t"touser": "'"$User"\"",\n"

      printf '\t"toparty": "'"$PartyID"\"",\n"

      printf '\t"msgtype": "text",\n'

      printf '\t"agentid": "'" $AppID "\"",\n"

      printf '\t"text": {\n'

      printf '\t\t"content": "'"$Msg"\""\n"

      printf '\t},\n'

      printf '\t"safe":"0"\n'

      printf '}\n'

}

/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL


  


  

为什么要这样写脚本?

      因为微信企业号开放的端口有固定的格式限制

      企业号支持的格式:http://qydev.weixin.qq.com/wiki/index.php?title=消息类型及数据格式









将脚本放入zabbix默认执行路径下

mv weixin.sh /usr/local/zabbix/share/zabbix/alertscripts
chown zabbix.zabbix /usr/local/zabbix/share/zabbix/alertscripts/weixin.sh
chmod +x /usr/local/zabbix/share/zabbix/alertscripts/weixin.sh


  检查测试是否成功,执行脚本,./weixin.shtoken值   123    123    (123 123,这是邮件标题和内容)。如下图返回结果为ok ,则表示正常,如果不是ok ,则检查脚本内容和公众平台是否完全按我的步骤操作



  


  


  


  好了,下面就是配置zabbix
管理界面的事情了,
  1,创建示警媒介
  


  


  2,在用户的示察媒介中添加示警媒介
  


  


  3,创建触发器动作发送内容
  


  


  4,设置触发器发送方式
  


  


  


  


  


页: [1]
查看完整版本: zabbix如何实现微信报警