某日凌晨,由于线上突发微信玩家无法登陆,排查发现微信接口报错。
由于是大规模且只有微信登陆失败,通过测试反馈登陆视频,判断还未到和后端服务器连接,且其他登陆渠道可以登陆,排除后端服务故障可能,问题很可能在微信接口调用这一步
增加微信接口监控:
自定义脚本
#!/bin/bash
#2020年5月7日16:40:38
#author:Vaedit
###########################################
#微信api地址
apiaddr1=‘api.weixin.qq.com‘
apiaddr2=‘sh.api.weixin.qq.com‘
apiaddr3=‘sz.api.weixin.qq.com‘
#钉钉接口地址webhook
webhook=‘https://oapi.dingtalk.com/robot/send?access_token=xxxx‘
#需要@的用户手机号
phonelist=(xxx xxx)
#处理手机号格式
phones=‘‘
phone_lenth=${#phonelist[@]}
phone_lenth_1=`expr $phone_lenth - 1`
for ((i=0;i<$phone_lenth;i++));do
if [ "$i" -eq 0 ];then
phones="\"${phonelist[i]}\","
elif [ "$i" -eq "$phone_lenth_1" ];then
phones="${phones}\"${phonelist[i]}\""
else
phones="${phones}\"${phonelist[i]}\","
fi
done
# 发送钉钉消息
sendding(){
Message=${1}
curl "$webhook" -H ‘Content-Type: application/json‘ -d "
{\"msgtype\": \"text\",
\"text\": {
\"content\": \"消息内容:$Message\"
},
\"at\": {
\"atMobiles\": [$phones], \"isAtAll\": false
}
}"
}
for i in `seq 1 3`;do
eval "apiaddr=\$apiaddr${i}"
return_code=$(curl -I -m 3 -o /dev/null -s -w %{http_code} $apiaddr)
if [ "$return_code" -ne 301 ];then
echo ${apiaddr}不可达
sendding "${apiaddr}无法访问,注意查看"
fi
done
通过crontab创建定时任务,触发告警
zabbix自定义监控项
#!/bin/bash
#2020年5月7日16:40:38
#author:Vaedit
###########################################
#微信api地址
apiaddr1=‘api.weixin.qq.com‘
apiaddr2=‘sh.api.weixin.qq.com‘
apiaddr3=‘sz.api.weixin.qq.com‘
errcode=1
for i in `seq 1 3`;do
eval "apiaddr=\$apiaddr${i}"
return_code=$(curl -I -m 3 -o /dev/null -s -w %{http_code} $apiaddr)
if [ "$return_code" -ne 301 ];then
errcode=0
fi
done
echo $errcode
提出建议,改进程序,是否能优化接口冗余,一个接口地址不行时,切换调用另一个接口。
原文:https://blog.51cto.com/vaedit/2679082