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 '{
'
20         printf '	"touser": "'"$User""",
"
21         printf '	"toparty": "'"$PartyID""",
"
22         printf '	"msgtype": "text",
'
23         printf '	"agentid": "'" $AppID """,
"
24         printf '	"text": {
'
25         printf '		"content": "'"$Msg"""
"
26         printf '	},
'
27         printf '	"safe":"0"
'
28         printf '}
'
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 '{
'
13         printf '	"touser": "'"$UserID""",
"
14         printf '	"msgtype": "text",
'
15         printf '	"agentid": "'"$AppID""",
"
16         printf '	"text": {
'
17         printf '		"content": "'"$Msg"""
"
18         printf '	},
'
19         printf '	"safe":"0"
'
20         printf '}
'
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上动作显示已送达!详细请看下一篇文档!

原文地址:https://www.cnblogs.com/maxtgood/p/6233700.html