首页 > 代码库 > zabbix微信报警

zabbix微信报警

1、申请微信企业号
 
微信申请企业号(点击申请)
 
1.1.通讯录添加企业成员

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

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

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

注意:这里要记住一个值,应用ID
技术分享
新建应用.jpg
技术分享
选择应用类型.jpg
技术分享
创建应用.jpg
技术分享
应用ID.jpg
 
2.2.给部门设置管理员

设置--->功能设置---->权限管理---->新建管理组
管理员必须事先已经关注了企业号

注意:管理组权限设置很重要,不设置后面会出问题!
技术分享
新建管理组.jpg
技术分享
管理组基本信息.jpg
技术分享
管理组权限.jpg

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

     注意:我们需要管理员的CorpID和Secret
技术分享
CorpID和Secret.jpg
 
2.3微信企业号信息统计
我们要准备这些东西:
  • 一个微信企业号
  • 企业号已经被部门成员关注
  • 企业号里有一个可以发消息的应用
  • 一个授权管理员,可以使用该应用给成员发消息

我们要取到这些信息:

  • 成员账号
  • 组织部门ID
  • 应用ID
  • CropID
  • Secret
 
3. 微信接口调用测试
如何调用微信接口?
     调用微信接口需要一个调用接口的凭证:access_token
     通过 :CropID 、Secret 才能获取到access_token,但是获取到的token有效期为两分钟
 
微信企业号接口调试工具( http://qydev.weixin.qq.com/debug)
技术分享
 
4.调用微信接口的shell脚本
设置脚本执行路径,编辑zabbix_server.conf文件,添加一行   (路径根据自己情况定)                                             
     AlertScriptsPath=/opt/zabbix/share/zabbix/alertscripts
#重启zabbix-server服务
 
使用:  -s -G url 获取 AccessToken
使用: curl --data url 传送凭证调用企业号接口
 
zabbix会传递三个参数给脚本,$1是消息接收账号,$2报警标题,$3报警内容
4.1 shell脚本
 
#!/bin/bash   必须要写 否则zabbix action不会调用脚本
#!/bin/bash###SCRIPT_NAME:weixin.sh######send message from weixin for zabbix monitor######wuhf######V1-2015-08-25###

CropID=‘xxxxxx‘
Secret=‘xxxxxx‘
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=3                        企业号中的应用id
        local UserID=$1                          部门成员id,zabbix中定义的微信接收者
        local PartyID=1                          部门id,定义了范围,组内成员都可接收到消息
        local Msg=$(echo "$@" | cut -d" " -f3-)  过滤出zabbix传递的第三个参数
        printf ‘{\n‘
        printf ‘\t"touser": "‘"$UserID"\"",\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
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
#测试:执行./wechat.sh 1 1 test看自己微信是否能收到东西。($1是消息接收账号,$2报警标题,$3报警内容)
 
5、zabbix-web前端设置
5.1设置通知媒介
技术分享
 
5.2创建用户

技术分享

 
5.3、创建触发动作及发送内容

技术分享

 
 
技术分享
 
 
6、测试微信告警发送(zabbix-agent stop 即可)
 
#############
问题:
1、{"errcode":82001,"errmsg":"All touser & toparty & totag invalid”} (权限问题)
在微信后台配置:设置 -> 权限管理 -> 应用权限, 添加要主动发消息的应用到 应用权限中
                     或     应用中心->zabbix报警->看见范围、应用管理组
 
 

7、zabbix触发格式 Default subject:{TRIGGER.STATUS}: {TRIGGER.NAME}:q

服务异常警报\n
/::@/::@/::@/::@/::@/::@/::@/::@  #微信标识符
服务异常警报\n
告警信息:{TRIGGER.NAME}\n
告警主机:{HOSTNAME1}\n
告警时间:{EVENT.DATE} {EVENT.TIME}\n
告警项目:{TRIGGER.KEY1}\n
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}\n
事件ID:{EVENT.ID}\n


服务恢复通知\n
/::B/::B/::B/::B/::B/::B/::B/::B
服务恢复通知\n
恢复信息:{TRIGGER.NAME}\n
恢复主机:{HOSTNAME1}\n
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}\n
恢复项目:{TRIGGER.KEY1}\n
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}\n
事件ID:{EVENT.ID}\n

 

zabbix微信报警