zabbix结合企业微信实现报警
首先申请企业微信
地址 https://work.weixin.qq.com/
参考:
https://work.weixin.qq.com/api/doc#10013
注册好之后需要创建应用
1.
2.
创建应用后退出,点击刚才创建的应用进入
记录下这两个值:AgentId、Secret
然后选择企业
记录下企业id
记录下部门id
写脚本:
[[email protected] alertscripts]# pwd
/usr/lib/zabbix/alertscripts
#!/bin/bash
#set -x
CorpID="。。。。。。。。。。" #我的企业下面的CorpID
Secret="。。。。。。。。。。" #创建的应用那有Secret
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret"
Token=$(/usr/bin/curl -s -G $GURL |awk -F\": '{print $4}'|awk -F\" '{print $2}')
#echo $Token
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Token"
function body(){
local int agentid=1000002 #改为AgentId 在创建的应用那里看
local UserID=$1 #发送的用户位于$1的字符串
local PartyID=1 #第一步看的通讯录中的部门ID
local Msg=$(echo "[email protected]" | cut -d" " -f3-)
printf '{\n'
printf '\t"touser": "'"$UserID"\"",\n"
printf '\t"toparty": "'"$PartyID"\"",\n"
printf '\t"msgtype": "text",\n'
printf '\t"agentid": "'"$agentid"\"",\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
``
测试脚本
[[email protected] alertscripts]# ./wechat.sh ChengWufei 测试 这是一条测试信息
{"errcode":0,"errmsg":"ok","invaliduser":"","invalidparty":"1"}[[email protected] alertscript
`
测试没有问题,开始配置zabbix
权限可以看情况分配,我这自己用可以给大一点
选择报警媒介类型
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
选择配置-动作
创建动作
默认接收人:
1故障:{TRIGGER.STATUS},服务器:{HOSTNAME1}发生:{TRIGGER.NAME}故障!
默认信息:
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件标识:{EVENT.ID}
默认接收人:
恢复:{TRIGGER.STATUS}, 服务器:{HOSTNAME1}:{TRIGGER.NAME}已恢复!
默认信息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
将zabbix_server的agent关闭看是否报警,然后再启动看是否有恢复通知
ystemctl stop zabbix-agent.service
systemctl start zabbix-agent.service
哈哈 好了