zabbix4.0微信报警设置

系统环境:Centos7.4 Zabbix4.0

安装zabbix_server在之前的博文有写道,由于是内网环境,对外通讯仅通过一台代理服务器,并且邮件等端口也被封禁了,所以才考虑用微信报警的方式.

一.注册企业微信号

首先申请微信企业号: https://qy.weixin.qq.com/

zabbix4.0微信报警设置_第1张图片

注册后 添加一个子部门,此时默认部门ID为2

zabbix4.0微信报警设置_第2张图片

然后自建一个应用程序

zabbix4.0微信报警设置_第3张图片

可见范围添加上运维

zabbix4.0微信报警设置_第4张图片

然后点击应用与小程序查看AgentID和SecretID,并记录下来

zabbix4.0微信报警设置_第5张图片

点击我的企业,企业信息可以查看企业ID即CropID.

zabbix4.0微信报警设置_第6张图片

企业ID就是cropid xxxxxxxxxxxxxxxxxxx

AgentId 1000002

Secret 8ubvbvaUvq5W68qcEIFWcwVRI7ErfTl-68jV4Hs9noE

然后打开 https://work.weixin.qq.com/api/devtools/devtool.php测试是否ok

zabbix4.0微信报警设置_第7张图片

二.Shell脚本设置

[root@zabbix ~]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix alertscripts]# vim weixin.sh

#!/bin/bash
###SCRIPT_NAME:wechat.sh###
###send message from weixin for zabbix monitor###

CropID='此处填写上面获取到的CorpID'
Secret='此处填写应用的Secret'
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $10}')

PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"

function body() {
        #企业号中的应用id
        local int AppID=这里填写AgentID
        #部门成员id,zabbix中定义的微信接收者
        local UserID=$1
        #部门id,定义了范围,组内成员都可接收到消息
        local PartyID=2     
        #过滤出zabbix传递的第三个参数
        local Msg=$(echo "$@" | cut -d" " -f3-)
        printf '{\n'
        printf '\t"touser": "'"$UserID"\"",\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## 

[root@zabbix alertscripts]# chown zabbix.zabbix weixin.sh 
[root@zabbix alertscripts]# chmod 744 weixin.sh 

测试

[root@zabbix alertscripts]# ./weixin.sh limingfan test test 
{"errcode":0,"errmsg":"ok","invaliduser":""}

注:limingfan为运维部门成员的账号

zabbix4.0微信报警设置_第8张图片

手机上也收到 

zabbix4.0微信报警设置_第9张图片

若是通过代理上网的服务器,发现测试代码可以发送到手机上,但是实际发生故障会出现发送失败

那么需要在weixin.sh加上/etc/profile中的代理设置的内容

zabbix4.0微信报警设置_第10张图片

 

三.zabbix网页端设置

 

zabbix4.0微信报警设置_第11张图片

脚本参数为

{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

 

然后添加一个用于报警的用户

 

zabbix4.0微信报警设置_第12张图片

zabbix4.0微信报警设置_第13张图片

zabbix4.0微信报警设置_第14张图片

创建触发器动作

zabbix4.0微信报警设置_第15张图片

操作,恢复操作,Update operation都需设置发送消息到用户weixin

zabbix4.0微信报警设置_第16张图片

 

zabbix4.0微信报警设置_第17张图片

服务器发生故障!
\n
\n告警服务器:{HOSTNAME1}
\n告警服务器IP地址:{HOST.CONN}
\n告警时间:{EVENT.DATE} {EVENT.TIME}
\n告警等级:{TRIGGER.SEVERITY}
\n告警信息: {TRIGGER.NAME}
\n告警项目:{TRIGGER.KEY1}
\n问题详情:{ITEM.NAME}:{ITEM.VALUE}
\n发生: {TRIGGER.NAME}故障!
\n当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
\n事件 ID:{EVENT.ID}

服务器故障已恢复!
\n
\n告警服务器:{HOSTNAME1}
\n告警服务器IP地址:{HOST.CONN}
\n告警时间:{EVENT.DATE} {EVENT.TIME}
\n告警等级:{TRIGGER.SEVERITY}
\n告警信息: {TRIGGER.NAME}
\n告警项目:{TRIGGER.KEY1}
\n问题详情:{ITEM.NAME}:{ITEM.VALUE} {TRIGGER.NAME}已恢复!
\n当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
\n事件 ID:{EVENT.ID}

服务器:报警确认!
\n
\n确认人:{USER.FULLNAME}
\n时间:{ACK.DATE} {ACK.TIME}
\n确认信息如下:{ACK.MESSAGE}
\n问题服务器:{HOSTNAME1}
\n问题服务器IP:{HOST.CONN}
\n问题详情: {TRIGGER.NAME}
\n问题ID:{EVENT.ID}

然后手动触发一次报警

zabbix4.0微信报警设置_第18张图片

若要其他人也能收到报警信息,则用微信扫描 我的企业,微工作台.

zabbix4.0微信报警设置_第19张图片

还有就是通讯录一定要添加该成员

 

参考博客 https://www.cnblogs.com/winstom/p/8883796.html

 

转载于:https://my.oschina.net/u/3805108/blog/3000321

你可能感兴趣的:(zabbix4.0微信报警设置)