zabbix3.0 微信告警

首先需要申请一个企业号,其实公众号也可以,不过脚本不一样。而且公众号任何人都可以关注,有泄密的风险。企业号只有指定的人可以关注,安全性较高。申请企业号,需要一个绑定你本人开户银行卡的微信号。 

申请网址 https://qy.weixin.qq.com/

点击“立即注册”。根据提示注册企业号,到“选择类型”时,选择最右边的企业号。注意:企业描述中:“报警”是敏感词不能使用。登录之后,可以看到如下页面 

填写信息:

申请完毕后,登录

 

在通讯录添加成员

注:这里的账号相当于你的企业账号,与微信号无关。必须先在此处创建用户,并且填写正确的微信号或者手机号,才可通过扫描二维码关注该企业号(知道为何安全了吧)。 

 

 这里扫描二维码就可以关注。

添加应用

填写信息

填写完成后,出现你刚填写的应用

点击查看详情

记住应用ID,后面能用到!

点击设置,管理组,权限管理, 记住  CorpID   Secret   (后面能用到)

现在万事俱备,可以开始编写脚本了。 

编写脚本 

在/usr/lib/zabbix/alertscripts下编写脚本wechat.sh

 

 

 

脚本如下:

 1 #!/bin/bash
 2 ###SCRIPT_NAME:weixin.sh###
 3 ###send message from weixin for zabbix monitor###
 4 ###wuhf###
 5 ###V1-2015-08-25###
 6 
 7 CropID='************'
 8 Secret='************' 
 9 GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
10 Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $4}')
11 
12 PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
13 
14 function body() {
15         local int AppID=******
16         local UserID=$1
17         local PartyID=1
18         local Msg=$(echo "$@" | cut -d" " -f3-)  
19         printf '{\n'
20         printf '\t"touser": "'"$User"\"",\n"
21         printf '\t"toparty": "'"$PartyID"\"",\n"
22         printf '\t"msgtype": "text",\n'
23         printf '\t"agentid": "'" $AppID "\"",\n"
24         printf '\t"text": {\n'
25         printf '\t\t"content": "'"$Msg"\""\n"
26         printf '\t},\n'
27         printf '\t"safe":"0"\n'
28         printf '}\n'
29 }
30     /usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL

注释:更新代码(其上可能调用的URL时效)

 1 #!/bin/bash
 2 
 3 CropID='wxe46cfc45d0c07e23'
 4 Secret='takL9WW2Eo_Ww5AGENHR7mJA6nl89sz1ghbhpAE8Jus'
 5 GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
 6 Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $10}')
 7 PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
 8 function body() {
 9         local int AppID=1
10         local UserID=@all
11         local Msg=$(echo "$@" | cut -d" " -f3-)
12         printf '{\n'
13         printf '\t"touser": "'"$UserID"\"",\n"
14         printf '\t"msgtype": "text",\n'
15         printf '\t"agentid": "'"$AppID"\"",\n"
16         printf '\t"text": {\n'
17         printf '\t\t"content": "'"$Msg"\""\n"
18         printf '\t},\n'
19         printf '\t"safe":"0"\n'
20         printf '}\n'
21 }
22         /usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL

 

以上CropID,Secret,AppID   填写自己微信号上的正确信息,否则无效!

chown -R zabbix:zabbix /usr/local/zabbix/alertscripts chmod 750 /usr/local/zabbix/alertscripts/wechat.sh

执行./wechat.sh 1 1 test 看自己微信是否能收到东西。

如果能的话,继续下一步。反之检查上面有什么问题

 

 

然后到zabbix上添加

点击管理---媒体类型---创建媒体类型

管理---用户---添加用户

组态---动作---添加动作

名称:weixin_action 默认接收人:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

默认信息:

告警主机:{HOSTNAME1} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}

恢复信息:打钩

恢复主旨:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

恢复信息:

告警主机:{HOSTNAME1} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}

已启用:打钩 

 

 

最后测试,是否会微信报警。停掉一台机子

 

表示成功!

 

附加:在搭建的过程中,我碰见了一个问题就是,

 

在虚拟机上用命令测试,微信能收到信息。但是到zabbix上就不成功,并且zabbix上动作显示已送达!详细请看下一篇文档!

 

posted @ 2016-12-29 16:53  马哥哥要上天  阅读(4788)  评论(0编辑  收藏  举报