首先需要去注册个企业微信,然后创建应用,下面是企业微信后台登录地址,这些就不说了,网上文档很多。
https://work.weixin.qq.com/wework_admin/loginpage_wx
编写脚本
-
请求企业微信的接口来发送消息
/usr/lib/zabbix/alertscripts/wechat.sh: #注意脚本存放路径
#!/bin/bash CropID='wwa796f26fc6cf76b0' #企业ID,登录后台--> 我的企业-->底部企业ID Secret='-XBcHHreJzsKQm78v_IbPBGszGEPeo-j4ST_JQQFBqw' #应用秘钥,应用管理,往下拉看到“自建”后,点击作为报警的应用,下方可以看到Secret的值 GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret" #拼接获取token的连接 Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $10}') #获取token值 PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken" #推送消息的连接 function body() { local int AppID=1000002 local UserID=$1 local PartyID=3 local Msg=$(echo "$@" | cut -d" " -f3-) printf '{\n' printf '\t"touser": "'"$User"\"",\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 #推送消息,--data-ascii是以ascii的方式post数据,双引号里是参数
可以手动测试
-
可以看到返回值是ok,警告可以忽略
- 创建报警媒介类型
这三个参数必须得加,不加发消息收不到,亲测
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
5.创建动作
对Linux servers主机组里做动作,不在该组里的主机,不会执行动作,看下图就明白了
Zabbix server没在linux server里,动作就没有执行
设置操作: 触发的操作,也就是报警的操作,点击小字“新的”
消息内容:
报警主机:{HOST.NAME}
报警时间:{EVENT.DATE} {EVENT.TIME}
报警等级:{TRIGGER.SEVERITY}
报警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}
选择发送消息,可以发送整个组和单独用户,我这里单独发送给自己
恢复操作也是一样的步骤,确认操作可以忽视,是问题出现的时候,是否确认问题点击后发送的,一般情况下用不上点击确认,所以这个可以忽视,大公司可能监控的人多,面对的问题多能用得到,然后就可以自定义监控项和触发器来进行测试了。
zabbix自定义监控项和触发器可以参考我之前的文章