zabbix version:3.0.3
先申请一个微信企业号:https://qy.weixin.qq.com
申请步骤略
新增成员,添加成员后,会生成一个二维码,扫描关注
创建应用(消息型应用),并给部门设置管理员(设置---权限管理--新建管理组):
要确认管理员能读取通讯录,可以使用应用发送消息
注意:这时需要管理员的CorpID和Secret
我们要准备这些东西:
一个微信企业号
企业号已经被部门成员关注
企业号里有一个可以发消息的应用
一个授权管理员,可以使用该应用给成员发消息
我们要取到这些信息:
成员账号
组织部门ID
应用ID
CropID
Secret
调用微信接口:
调用微信接口需要一个调用接口的凭证:access_token
通过 :CropID 、Secret才能获取到access_token,但是获取到的token有效期为两分钟
http://qydev.weixin.qq.com/debug
Shell脚本
curl -s -G url 获取 AccessToken
curl --data url 传送凭证调用企业号接口
zabbix会传递三个参数给脚本,$1是消息接收账号,$2报警标题,$3报警内容
把脚本放到zabbix告警脚本目录下:
[root@localhost etc]# grep -i ‘^AlertScriptsPath‘ zabbix_server.conf AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts [root@CentOS etc]# cd /usr/local/zabbix/share/zabbix/alertscripts [root@CentOS alertscripts]# chmod 755 weixin.sh [root@CentOS alertscripts]# chown zabbix:zabbix weixin.sh
登录zabbix webGUI:管理--报警媒介类型--创建媒介类型
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
这三个参数在zabbix3.0上必须加上,否则无法发送消息
管理--用户--admin--报警媒介--添加:
创建Trigger和Action(略),发送选择微信
然后触发Action,然后调用微信发送消息:
默认信息:
【恢复】 http请求返回值正确
告警主机:{HOST.NAME}
主机IP: {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
事件ID: {EVENT.ID}
触发器URL: {TRIGGER.URL}
Item values:
1. {ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}
2. {ITEM.NAME2} ({HOST.NAME2}:{ITEM.KEY2}): {ITEM.VALUE2}
3. {ITEM.NAME3} ({HOST.NAME3}:{ITEM.KEY3}): {ITEM.VALUE3}
微信脚本:
#!/bin/bash ###SCRIPT_NAME:weixin.sh### ###send message from weixin for zabbix monitor### ###wuhf### ###V1-2015-08-25### CropID=‘wx6df0114cc6117cf0‘ Secret=‘uLmErUwbzGqfWkG-pyILzo3h4p3teJZdQeMD4MITN6LoBl3ORUVpPnd9Q174mXP7‘ 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 企业号中的应用id local UserID=$1 部门成员id,zabbix中定义的微信接收者 local PartyID=3 部门id,定义了范围,组内成员都可接收到消息 local Msg=$(echo "$@" | cut -d" " -f3-) 过滤出zabbix中传递的第三个参数 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://yfshare.blog.51cto.com/8611708/1831785