Monitoreo de la interfaz de la API de WeChat

Un día temprano en la mañana, debido a que un jugador de WeChat en línea repentino no pudo iniciar sesión, la investigación encontró que la interfaz de WeChat informó un error.

Procesando

  1. Notificar inmediatamente a la investigación y desarrollo, pruebas, etc., y hacer un seguimiento de la situación en el grupo.
  2. Debido a que es un inicio de sesión de WeChat a gran escala y solo falló, el video de inicio de sesión se retroalimenta a través de la prueba, y se considera que no se ha alcanzado la conexión con el servidor back-end y otros canales de inicio de sesión pueden iniciar sesión. Se elimina la posible falla del servicio de back-end.

  3. Notifique a I + D para comprobar si hay alguna anomalía en las llamadas relacionadas de la interfaz de WeChat. La interfaz api.weixin.qq.com de comentarios de I + D ha agotado el tiempo de espera y debería volver normalmente.
  4. Intenté curl api.weixin.qq.com en el servidor, pero no hubo respuesta durante mucho tiempo. Confirme que el acceso a la dirección sea anormal.
  5. Hay dos posibilidades, una es que hay un problema de red entre la región de AWS donde se encuentra el servidor y api.weixin.qq.com, y la otra es el problema de la propia interfaz de WeChat.
  6. Notifique a AWS para investigar si existen motivos relacionados con la red, consulte la documentación de la interfaz de WeChat y descubra que el nodo de interfaz predeterminado api.weixin.qq.com se encuentra en Hong Kong y hay dos interfaces sh.api.weixin.qq .com y sz.api.weixin .qq.com, pruebe que se puede acceder a las otras dos interfaces, al mismo tiempo, el personal relacionado con AWS también informó que otras empresas han encontrado problemas similares.
  7. Si se encuentra el problema, solo cambie la dirección de la interfaz, pero debido a que la dirección está codificada en el programa, si necesita cambiar, debe reiniciar el programa relacionado, lo que afectará al negocio, y es de día en países extranjeros, por lo que solo puede resolverlo en lotes primero. Analice api.weixin.qq.com localmente en la ip donde se encuentra sh.api.weixin.qq.com, resuélvalo temporalmente y reanude el negocio rápidamente.

Optimización de seguimiento:

Dirección de operación:

Agregue el monitoreo de la interfaz de WeChat:

  • Script personalizado

    #!/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
    

    Cree tareas de cronometraje a través de crontab para activar alarmas

  • Elementos de monitoreo personalizados de 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
    
Dirección del programa:

Presenta sugerencias para mejorar el programa, si se puede optimizar la redundancia de la interfaz y, cuando falla una dirección de interfaz, cambia para llamar a otra interfaz.

Supongo que te gusta

Origin blog.51cto.com/vaedit/2679082
Recomendado
Clasificación