zabbix的配置之新版微信报警(二)

 

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次),微信都能正常收到。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
要追加用户的微信监控,只需要将用户添加到相关应用关联到的对应部门里即可!其他配置都不需要动。

 

原文地址:https://www.cnblogs.com/fengzhongzhuzu/p/9039758.html