Zabbix 4.2:实现 Zabbix 的微信告警通知

4.2:微信通知

4.2.1:准备企业微信

企业微信官方的流程图:

在这里插入图片描述

4.2.1.1:注册企业微信

https://work.weixin.qq.com/

在这里插入图片描述

4.2.1.2:创建应用

点击进入管理后台:

在这里插入图片描述

应用管理-应用-创建应用:

在这里插入图片描述

创建成功:

在这里插入图片描述

4.2.1.3:添加成员

填写成员信息:

在这里插入图片描述

添加后点击微信邀请

在这里插入图片描述

用成员的微信扫码,即可加入企业:

在这里插入图片描述

4.2.1.4:测试发送消息

到刚刚创建的“Zabbix微信通知”应用下,点击发消息

在这里插入图片描述

选择发送范围,编辑消息内容,点击发送:

在这里插入图片描述

手机上用相应微信登录企业微信,查看信息:

在这里插入图片描述

4.2.1.5:获取 access_token

微信官方文档:https://work.weixin.qq.com/api/doc/90000/90003/90487

企业微信的发消息api,其实就是一个POST请求,这个请求中需要用到access_token来认证:

请求方式:POST(HTTPS)
请求地址: https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN

access_token是应用调用api的凭证,由 corpid和corpsecret换取。

4.2.1.5.1:corpid 企业ID

在“我的企业”中可以看到企业ID:

在这里插入图片描述

4.2.1.5.2:corpsecret 应用secret

在应用中查看secret:

在这里插入图片描述

secret通过企业微信团队下发到管理员的企业微信,管理员登录企业微信即可收到:

在这里插入图片描述

在这里插入图片描述

4.2.1.5.3:获取 access_token

请求方式:GET(HTTPS)
请求URL:https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET

将URL中的ID和SECRET分别替换为刚刚获取到的corpid和corpsecret,访问URL,即可获取到access_token:

在这里插入图片描述

4.2.2:微信通知脚本

4.2.2.1:编写脚本

微信官方“发送应用消息”文档:https://work.weixin.qq.com/api/doc/90000/90135/90236

这里编写shell脚本,用curl命令,调用企业微信的发消息api,实现微信通知。

脚本传递参数$1、$2、$3 分别对应之后在Zabbix Server添加媒介类型时指定的脚本参数{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}。

#!/bin/bash
# Description: Zabbix微信通知脚本
# Author: yqc

# Variables set
Corpid=企业ID
Corpsecret=应用secret
Access_Token=$(curl -s "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=${Corpid}&corpsecret=${Corpsecret}" | cut -d',' -f3 | cut -d'"' -f4)
Agent_Id=1000002
Send_To=$1
Subject=$2
Message=$3

# Define function "Wechat_Notify"
Wechat_Notify(){
	# 将需要POST的参数echo到json文件中
	echo -e "{\"touser\":\"$Send_To\", \"agentid\":$Agent_Id, \"msgtype\" : \"text\", \"text\":{\"content\":\"$Subject  $Message\"}}" > wechat_text.json
	# 用curl命令将需要POST的参数传递给企业微信的发信息api
	curl -d '@wechat_text.json' -H "Content-Type: application/json" -X POST https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${Access_Token}
}

# Use function "Wechat_Notify"
Wechat_Notify $1 $2 $3
4.2.2.2:测试脚本

发送给xuezhajiaolubai,内容为“微信通知测试 你那里下雪了吗?”。注意这里的内容是两个参数构成的。

root@zabbix-server:~# bash Wechat_Notify.sh xuezhajiaolubai 微信通知测试 你那里下雪了吗?

收到信息:

在这里插入图片描述

4.2.2.3:拷贝脚本到 AlertScriptsPath

用于告警通知的脚本需要放在zabbix_server.conf中定义的AlertScriptsPath路径下。

查看告警脚本路径:

root@zabbix-server:~# grep '^AlertScriptsPath' /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts

拷贝脚本,并添加执行权限:

root@zabbix-server:~# cp /root/Wechat_Notify.sh /usr/lib/zabbix/alertscripts/
root@zabbix-server:~# chmod +x /usr/lib/zabbix/alertscripts/Wechat_Notify.sh

4.2.3:Zabbix Server 创建报警媒介

在这里插入图片描述

4.2.4:为 Zabbix 的用户添加报警媒介

假设发生告警时,通过微信发送通知给“xuezha”用户,该用户对应的微信帐号是xuezhajiaolubai。

4.2.4.1:创建用户

注意,用户名必须是英文,中文可能导致后面的动作触发不了。

在这里插入图片描述

4.2.4.2:为用户添加报警媒介

在这里插入图片描述

4.2.5:实现 Zabbix 告警的微信通知

实现:当被监控主机node111的Nginx服务80端口监听故障时,通过微信通知用户“xuezha”。
最多通知3次,每次通知间隔60s。

4.2.5.1:创建动作
4.2.5.1.1:动作

当触发器“Nginx监听80端口异常”告警时,激活动作。

在这里插入图片描述

4.2.5.1.2:操作

激活动作后,关联的操作为,通过“微信通知”报警媒介向用户“xuezha”发送通知,共3次,每次间隔30s。

在这里插入图片描述

4.2.5.1.3:恢复操作

定义告警恢复后,通知用户的信息内容。

在这里插入图片描述

最后点击添加,完成动作的添加。

4.2.5.2:验证微信通知
4.2.5.2.1:验证告警微信的发送

关闭被监控主机node111的Nginx,触发告警:

root@node111:~# systemctl stop nginx

产生触发器告警,并激活动作,发送了3次微信:

在这里插入图片描述

在这里插入图片描述

4.2.5.2.2:验证恢复微信的发送

启动node111的Nginx:

root@node111:~# systemctl start nginx

收到Nginx恢复的微信通知:

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值