想改进下zabbix的警报方式,于是参照了一些文档搞个微信警报。
申请了一个企业微信号,只是没认证的做测试。
一、主要获取三个参数:企业ID、AgentId,和Secret
1.获取企业ID (点企业首页)
2. 获取AgentId,和Secret
这里要先点通讯录创建一个部门,然后再点应用小程序创建应用,填写logo、名称、和选择部门就可以了
3.测试gentId,和Secret
这个是接口调用测试gentId,和Secret的地址:https://work.weixin.qq.com/api/devtools/devtool.php
这里看到有HTTP/1.1 200 OK 就说明接口有效了,其它的不管。
二、调用的脚本还是有很多种方式的,像php、python、shell等,我这里用shell,脚本如下
这里要注意的是填写正确的通讯录 部门ID,可以点那个下线三个点那里。
# vim weixin.sh
#!/bin/bash
#set -x
#我的企业下面的CorpID
CorpID="wXXXXXXXXXXXX2"
#创建的应用那有Secret
Secret="-tPkl-XXXXXXXXXXXXXXXXXXXXXXXXXXXXQ"
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=2 #第一步看的通讯录中的部门ID
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": "'"$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
# chmod +x weixin.sh
# ./weixin.sh "这里一个测试" //可以这样直接调试,然后登陆到企业微信查看该部门是否收到此信息
脚本测试通过后就是在zabbix控制台上设置了
三、zabbix 控制台添加新媒体
点 管理 -> 报警媒介类型 -> 创建媒体类型
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
然后再设置上用户:点管理 —> 创建用户
再点用户旁边的 报警媒介 进行设置
到这里就基本都设置完成了,可以设置个触发器和动作来测试脚本。