zabbix微信预警出现的问题

系统环境:centos7.3

zabbix_server: 3.0.3 3.0.6

问题描述

zabbix预警突然不能发送微信,需要修复

排查步骤

1. 检查微信企业平台应用的key是否过期,结果没过期正常使用

2. 检查zabbix日志,发现日志中压根就没有将执行的命令记录到日志中

3. 开启zabbix server日志模式问debug,观察日志,发现zabbix不会将执行脚本的步骤写入日志中。

4. 检查动作中设置是否出错,按照动作中配置信息执行脚本,发现信息是可以发送的。

5. 检查命令执行结果,发现不管对错最后返回值都为0。在不联网的情况下返回值也为0。

image

6. 定位到问题,修改微信接口脚本,脚本为网上复制的,太简单了懒得写。

#!/bin/bash
CropID='aaaaaaaaaaaaa'
Secret='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"

#get acccess_token
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 {
	local int AppID=xxx
	local UserID="@all"
	local PartyID=8                          
	local Msg=$(echo "$@") 
	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

7. 配置完成后执行预警信息出现如下问题

image

    发现执行脚本超时。测试在命令行执行时没问题的。最后断开网络执行,无法访问微信接口出现超时。定位到问题,由于zabbix执行脚本时,使用的环境变量并非系统登录时设置的环境变量。

在脚本中加入http代理。成功触发报警。

export http_proxy="http://xxxxxx/"
export https_proxy=https://xxxxxx/

总结

1. 由于使用的是其他网友编译的脚本,并不知道执行步骤及脚本内容无法定位问题出现点。

2. zabbix在执行动作时,如动作是脚本不记录到日志中。

3. zabbix在触发执行脚本动作时,使用的环境变量并非是包含系统自定义环境变量,所需要的需要自行设置。

猜你喜欢

转载自www.cnblogs.com/LC161616/p/9030765.html