作者信息
邮箱:sijiayong000@163.com
Q Q:601566386
Zabbix 微信告警
摘要:Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越多的企业开始使用zabbix结合微信作为主要的告警方式,这样可以及时有效的把告警信息推送到接收人,方便告警的及时处理。
使用微信发送告警,需要先注册一个微信企业号
此处忽略具体步骤,请访问百度
设置预警
注册完成微信企业号后,点击我的企业
在这里记录下来CorpID的值
在之后发送微信告警的脚本中会用到
紧接着需要创建组和用户
创建用户
创建应用
获取AgentID 和 Secret
这两个信息,同样需要记录下来
在之后的发送微信告警时需要
准备事项
微信企业号
企业号已经被部门成员关注
企业号有一个可以发送消息的应用,一个授权管理员,可以使用应用给成员发送消息
需要得到的信息
- CorpID
- AgentID
- Secret
- 用户的账号 或 组ID
配置zabbix server端
需要修改zabbix.conf
grep alertscripts /etc/zabbix/zabbix_server.confAlertScriptsPath=/usr/lib/zabbix/alertscripts
我们设置zabbix默认脚本路径,这样在web端就可以获取到脚本
Shell 脚本
进入到/usr/lib/zabbix/alertscripts/
目录下,创建一个wechat.sh
脚本文件
给脚本文件授权用户和组
以及增加执行权限
chown zabbix.zabbix wechat.sh
chmod +x wechat.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##
脚本测试
/bin/sh /usr/lib/zabbix/alertscripts/wechat.sh sijiayong test test
定义Zabbix动作发送告警
创建告警媒介
按照图片中的定义创建新告警媒介
此处贴出告警参数
{ALERT.SENDTO}
{ALTER.SUBJECT}
{ALERT.MESSAGE}
最后点击添加即可
添加告警用户和动作
配置告警用户
配置用户告警媒介
最后点击更新,用户就完成
添加动作
故障配置
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警主机:{HOSTNAME1}
告警主机IP地址:{HOST.CONN}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
发生: {TRIGGER.NAME}故障!
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
恢复配置
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
告警主机:{HOSTNAME1}
告警主机IP地址:{HOST.CONN}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
{TRIGGER.NAME}已恢复!
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
动作添加
测试
手动出发一次故障