zabbix配置2018版本微信报警
centos6.5中微信报警需要Python2.7版本之上,由于服务器是centos6.5。所以需要升级版本2.6到2.7.
具体升级步骤:Python升级版本2.6到2.7
一、微信企业号申请
地址: http://work.weixin.qq.com/
注册企业微信:
需要一个绑定银行卡的微信
主要流程如下:
1.创建微信用户成员。
2.创建应用,这是关键,如果是刚申请的公众号,创建的第一个应用ID 为1 (现在升级后的企业微信创建的应用ID为1000002)。
3.创建应用管理组,添加组成员(也就是设置哪些用户可以接收到报警的通知信息)。
4.创建成功后需要获取到以下信息:CropID 和Secret 当然还包括创建的用户信息。
申请企业微信,创建对应的组成员这些就不介绍了,按照注册向导创建即可,主要写下创建应用获取应用Secret 和CorpID
主要找到 AgentId 和 Secret 和CorpID,部门id
注册成功后,进入管理后台
以下举个例子做为概述
1)选择企业应用------创建应用 对应范围选择自己的部门。
2)创建成功后就可以看到该应用的 AgentId 和 Secret
3)CorpID 需要在【我的企业】-【企业信息】中获取
4)部门ID 很隐蔽,在【通讯录】-左侧部门列表 点击查看
综上所述可以获得
部门id
AgentId
Secret
CorpID
二、zabbix 脚本创建
vim /usr/local/zabbix/alertscripts/weixin.sh
1 #!/bin/bash 2 CropID='**********************' 3 #填写我们的应用CropID 4 Secret='**********************************' 5 #应用的Secret,下面的GURL和PURL 地址无需变动 6 GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret" 7 #Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F" '{print $4}') 8 Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F" '{print $10}') 9 PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken" 10 11 function body() { 12 local int AppID=1000002 #这里是创建的应用ID,AgentId 13 local UserID=$1 #接收消息用户,我们在部门里面添加的用户,如果有其他人,用逗号代替
部门成员id,zabbix中定义的微信接收者 14 local PartyID=2 #接收消息的部门ID,定义了范围,组内成员都可接收到消息。 15 local Msg=$(echo "$@" | cut -d" " -f3-) 16 printf '{ ' 17 printf ' "touser": "'"$UserID""", " 18 printf ' "toparty": "'"$PartyID""", " 19 printf ' "msgtype": "text", ' 20 printf ' "agentid": "'" $AppID """, " 21 printf ' "text": { ' 22 printf ' "content": "'"$Msg""" " 23 printf ' }, ' 24 printf ' "safe":"0" ' 25 printf '} ' 26 } 27 /usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
脚本设置权限和所属用户
chown zabbix.zabbix weixin.sh
chmod 744 weixin.sh
第三、微信接口调用
调用微信接口需要一个调用接口的凭证:access_token
通过CorpID和Secret可以获得access_token
微信企业号接口调试地址: http://qydev.weixin.qq.com/debug
手动测试脚本能否正常发信,测试的账号由于在脚本里未写明,观察到微信能正常收到测试信息:
比如说在后台下有一个添加的用户是syp,该用户在添加进入部门前会
在微信上添加该用户,并且会下载企业微信,并关注(必须的,否则会接受不到消息)
bash weixin.sh syp test test
[root@localhost alertscripts]# ./weixin.sh syp test test
{"errcode":0,"errmsg":"ok","invaliduser":""}[root@localhost alertscripts]#
在zabbix的web界面进行配置
接着开始登陆zabbix,添加报警设置(跟邮件报警的配置差不多)
1)创建报警媒介(这里我选用python脚本:weixin.py,如果选用shell脚本,就改换weixin.sh。其他设置都不变!)
注意下面要填写的脚本参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
2)创建用户weixin(密码一栏可以选择跟之前的超级管理员zabbix一样的密码;用户类型也可以设置成超级管理员)
这里最好使用微信企业号的应用ID,AgentId.用户账号。这里只需要填写一个账号即可。zabbix的web界面里发信是按照应用ID,只要关注这个微信企业号内的用户都会收到报警邮件。
这样发的报警信息,在企业号内的用户都能收到。或者添加任意一个用户账号(比如syp1111111111),切不可添加多条,否则就会收到重复信息。
3)创建动作
注意严格下面的微信发送格式:
上面的默认接收人填写:{TRIGGER.STATUS}: {TRIGGER.NAME}
默认信息和恢复信息要填写一样的内容,如下:
告警主机:{HOST.NAME}
主机IP: {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}
如下,在“条件”里可自主选择添加“主机”和“模板”(具体可参考上一篇的“zabbix邮件报警”的此步设置)
下面的“操作”(具体说明可参考上一篇的“zabbix邮件报警”的此步设置)。
下面设置的报警信息只发送给weixin用户就行了,没有发生给用户组。
注意:“操作”底部的“条件“做如下设置(时间已确认=非确认),这个别忘了!
这样,就顺利创建了一个名为“weixin”的动作
测试,将其中一台被监控机器(192.168.1.25)的zabbix-agent服务关掉,观察微信是否能正常收到报警信息:
经测试,报警信息(3次)和恢复后的信息(1次),微信都能正常收到。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
要追加用户的微信监控,只需要将用户添加到相关应用关联到的对应部门里即可!其他配置都不需要动。