ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

微信API接口监控

2021-04-01 11:01:46  阅读:147  来源: 互联网

标签:API qq weixin 微信 接口 api com


某日凌晨,由于线上突发微信玩家无法登陆,排查发现微信接口报错。

处理过程

  1. 立马群里通知研发,测试等,跟进情况
  2. 由于是大规模且只有微信登陆失败,通过测试反馈登陆视频,判断还未到和后端服务器连接,且其他登陆渠道可以登陆,排除后端服务故障可能,问题很可能在微信接口调用这一步

  3. 通知研发排查微信接口相关调用是否有异常,研发反馈api.weixin.qq.com接口超时,正常应该有返回。
  4. 在服务器上试了下curl api.weixin.qq.com,长时间无响应。确认是访问该地址异常。
  5. 2种可能,一种是服务器所在AWS地域到api.weixin.qq.com存在网络问题,一种是微信接口本身问题。
  6. 通知AWS排查是否存在相关网络原因,同时查看微信接口文档,发现默认api.weixin.qq.com接口节点所在是香港,还有两个接口sh.api.weixin.qq.com,sz.api.weixin.qq.com,测试其他两个接口可以访问,与此同时,AWS相关人员也反馈有其他公司遇到同类问题。
  7. 问题找到了,那么就只有切换接口地址,但是由于地址是写死在程序里,如果需要切换,需要重启相关程序,会影响业务,且国外正是白天,所以只有先批量本地解析。把 api.weixin.qq.com 本地解析到sh.api.weixin.qq.com 所在的ip,临时解决,快速恢复业务。

后续优化:

运维方向:

增加微信接口监控:

  • 自定义脚本

    #!/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
    
程序方向:

提出建议,改进程序,是否能优化接口冗余,一个接口地址不行时,切换调用另一个接口。

标签:API,qq,weixin,微信,接口,api,com
来源: https://blog.51cto.com/vaedit/2679082

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有