Estás viendo la documentación de Apigee Edge.
Ve a la
Documentación de Apigee X. información
Videos
Video | Descripción |
---|---|
500 Error interno del servidor: causado por el backend | Se muestra una 500 Internal Server Error en tiempo real que causa el servidor de backend junto con los pasos para solucionar el problema y resolver el error. |
Síntoma
La aplicación cliente obtiene un código de estado HTTP de 500
con el mensaje.
Internal Server Error
como respuesta a las llamadas a la API
El código de estado HTTP 500
es una respuesta de error genérica. Significa que el servidor
encontró una condición inesperada que le impidió completar la solicitud. Este error es
por lo general el servidor muestra cuando no es adecuado ningún otro código de error.
Mensajes de error
La aplicación cliente obtiene el siguiente código de respuesta:
HTTP/1.1 500 Internal Server Error
Además, es posible que veas un mensaje de error similar al que se muestra a continuación:
Ejemplo 1
Ejemplo de respuesta del servidor de backend n.o 1
{"errorMessage":"Sorry either your e-mail or password didn't match.", "errorParameters":"{}", "errorCode":"500", "errorKey":"INVALID_EMAILPASSWORD"}
Ejemplo 2
Ejemplo de respuesta del servidor de backend núm. 2
<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <Error> <code>500</code> <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message> </Error> </Body> </Envelope>
Causas posibles
El servidor de backend podría mostrar 500 Internal Server Error
debido a un
de causas. En esta guía, se explica cómo solucionar problemas mediante pasos comunes
independientemente de su causa.
Las posibles causas de este problema son las siguientes:
Causa | Descripción | Instrucciones de solución de problemas aplicables para |
---|---|---|
Error en el servidor de backend | El servidor de backend puede fallar por algún motivo. | Usuarios perimetrales de nubes privadas y públicas |
Pasos comunes de diagnóstico
Usa una de las siguientes herramientas o técnicas para diagnosticar este error:
Supervisión de API
Procedimiento 1: Usa la supervisión de API
Para diagnosticar el error con la supervisión de API, haz lo siguiente:
- Accede a la IU de Apigee Edge como usuario con un el puesto adecuado.
Cambia a la organización en la que quieres investigar el problema.
- Navega a Analyze > Supervisión de API > Investigar.
- Selecciona el período específico en el que observaste los errores.
Traza Código de error en Tiempo.
Seleccionar una celda que tenga el código de falla
messaging.adaptors.http.flow.ErrorResponseCode
como se muestra a continuación:Información sobre el código de falla
messaging.adaptors.http.flow.ErrorResponseCode
se muestra como como se muestra a continuación:Haz clic en Ver registros y expande la fila de la solicitud con errores.
- En la ventana Registros, observa los siguientes detalles:
- ID de mensaje de la solicitud
- Código de estado:
500
- Fuente del error:
target
- Código de error:
messaging.adaptors.http.flow.ErrorResponseCode
Trace
Procedimiento 2: Usa la herramienta Trace
Para diagnosticar el error con la herramienta Trace, sigue estos pasos:
- Habilita la sesión de seguimiento y haz lo siguiente:
- Espera el error
500 Internal Server Error
con el código de errormessaging.adaptors.http.flow.ErrorResponseCode
, o - Si puedes reproducir el problema, realiza la llamada a la API para hacerlo.
500 Internal Server Error
- Espera el error
Asegúrate de que Show all FlowInfos esté habilitado:
- Selecciona una de las solicitudes fallidas y examina el seguimiento.
- Navega por las diferentes fases del seguimiento y localiza dónde ocurrió la falla.
Por lo general, encontrarás el error en un flujo después de la Respuesta recibida del servidor de destino. fase, como se muestra a continuación:
- Navega a la fase AX (datos registrados de Analytics) en el seguimiento y haz clic en ella.
Desplázate hacia abajo hasta la sección Encabezados de respuesta de Detalles de la fase y determina el valores de X-Apigee-fault-code y X-Apigee-fault-source, y X-Apigee-Message-ID como se muestra a continuación:
- Observa los valores de X-Apigee-fault-code, X-Apigee-fault-source, y X-Apigee-Message-ID:
Encabezados de respuesta | Valor |
---|---|
X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
X-Apigee-fault-source | target |
X-Apigee-Message-ID | MESSAGE_ID |
NGINX
Procedimiento 3: Usa registros de acceso de NGINX
Para diagnosticar el error con los registros de acceso de NGINX, haz lo siguiente:
- Si eres un usuario de la nube privada, puedes usar los registros de acceso de NGINX para determinar
la información clave sobre
500 Internal Server Error
HTTP. Verifica los registros de acceso de NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Realiza una búsqueda para ver si hay algún error
500
con el código de errormessaging.adaptors.http.flow.ErrorResponseCode
durante un período específico (si el problema ocurrió en el anteriores) o si todavía hay solicitudes que fallan con500
. Si encuentras algún error
500
con la coincidencia X-Apigee-fault-code el valor demessaging.adaptors.http.flow.ErrorResponseCode
y, luego, y determinar el valor de X-Apigee-fault-source.Ejemplo de error 500 del registro de acceso de NGINX:
La entrada de ejemplo anterior del registro de acceso de NGINX tiene los siguientes valores para X-Apigee-fault-code y X-Apigee-fault-source:
Encabezados Valor X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
X-Apigee-fault-source target
Causa: error en el servidor de backend
Diagnóstico
El 500 Internal Server Error
que respondió el servidor de backend puede
causado por varias razones. Deberás diagnosticar cada situación de manera independiente.
- Determinar Fault Code, Fault Source para el error observado con la supervisión de API. la Herramienta de seguimiento o los registros de acceso de NGINX, como se explica en Pasos de diagnóstico comunes.
- Si Fault Source es
target
y Fault Code esmessaging.adaptors.http.flow.ErrorResponseCode
, entonces eso indica que el servidor de backend devuelve el error. - Puedes seguir uno de los siguientes pasos para diagnosticar la causa del problema:
Trace
Usa Trace:
Si tienes una sesión de Trace para la falla, sigue estos pasos:
- En Trace, selecciona la solicitud a la API que falló con
500 Internal Server Error
Selecciona la fase de Respuesta recibida del servidor de destino en con errores en la solicitud a la API, como se muestra en la siguiente figura:
Desplázate hacia abajo hasta la sección Detalles de la fase y verifica el Contenido de respuesta,que contiene la respuesta del servidor de backend.
Ejemplo de contenido de una respuesta:
<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <Error> <code>500</code> <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message> </Error> </Body> </Envelope>
En la respuesta anterior, ten en cuenta que el mensaje de error del servidor backend No autorizado. Esto indica que es posible que el usuario haya pasado una credenciales y, por eso, reciben este error.
Llamar al servidor de backend
Realiza una llamada directa al servidor de backend:
Puedes realizar una llamada directa al servidor de backend y hacer lo siguiente:
- Verifica si obtienes el mismo
500 Internal Server Error
respuesta tal como se recibió cuando la solicitud se realizó a través de Apigee Edge - Revisa el mensaje de error (respuesta) recibido del servidor backend
Realiza los siguientes pasos para realizar la llamada directa al servidor backend:
- Asegúrate de tener todos los encabezados, los parámetros de consulta y cualquier credenciales que se deben pasar al servidor de backend como parte de la solicitud.
- Si el servicio de backend es de acceso público, puedes usar el
curl
, Postman o cualquier otro cliente REST y, luego, invoca el directamente a la API del servidor de backend. Si solo se puede acceder al servidor backend desde Message Processors, puedes usa el comando
curl
, Postman o cualquier otro cliente REST y, luego, invoca la API del servidor de backend directamente desde Message Processor.- Valida si el servicio de backend muestra
500 Internal Server Error
y verifica el mensaje de error (respuesta) que muestra el servidor de backend. determinar la causa de este error.
Registros del servidor de backend
Usa registros del servidor de backend
- Revisa los registros del servidor de backend e intenta obtener más detalles sobre el error y su causa.
- Si es posible, habilita el modo de depuración en el servidor de backend para obtener más detalles. sobre el error y la causa.
- En Trace, selecciona la solicitud a la API que falló con
Comprueba si estás usando encadenamiento de proxy en el extremo de destino específico del proxy de API con errores. es decir, si el servidor/extremo de destino invoca a otro proxy en Apigee Edge Para determinarlo:
Si tienes el registro de la solicitud que falló, navega hasta Solicitud enviada. para orientar al servidor y haz clic en Show Curl.
- Se abrirá la ventana Curl for Request Sent to Target Server, desde donde podrás determina el alias del host del servidor de destino.
- Revisa el extremo de destino de tu proxy de API y comprueba si el servidor de backend La URL o el nombre de host en el servidor de destino apunta a otro proxy o al tuyo de backend.
- Si el alias del host del servidor de destino apunta a un alias de host virtual, este
es el encadenamiento de proxy. En este caso, debes repetir todos los pasos anteriores para el
hasta que determines cuál es la causa real de
500 Internal Server Error
. En estos casos,500 Internal Server Error
podría suceden en otros proxies encadenados en otras etapas que pueden diagnosticarse se resuelven con las instrucciones proporcionadas en esta guía o en la 500 (Guía de errores internos del servidor). - Si el alias del host del servidor de destino apunta a tu servidor de backend, dirígete a Resolución.
Solución
Si se determina que el error 500
proviene del servidor backend, entonces
y trabaje con su equipo de servidor
de backend para solucionar el problema.
En el ejemplo anterior, es posible que debas solicitar a los usuarios credenciales válidas para corregir este problema.
Puntos clave para tener en cuenta
- El mensaje de error real que muestra el servidor de backend para
500 Internal Server Error
solo se puede ver si capturaste la sesión de registro de la falla solicitudes. - La respuesta del servidor backend no se registrará en la supervisión de API, en los registros de acceso de NGINX ni en Registros del procesador de mensajes por motivos de seguridad.
- Puedes revisar los registros del servidor de backend o habilitar el modo de depuración en el backend para obtener más
detalles sobre
500 Internal Server Error
o ver el mensaje de error que se muestra por el servidor de backend.
Se debe recopilar información de diagnóstico
Si el problema persiste, incluso después de seguir las instrucciones anteriores, reúne la siguiente información de diagnóstico y comunícate con el equipo de asistencia de Apigee Edge.
Si eres usuario de la nube pública, proporciona la siguiente información:
- Nombre de la organización
- Nombre del entorno
- Nombre del proxy de API
- Completa el comando
curl
para reproducir el error500
- Archivo de seguimiento que contiene las solicitudes con
500 Internal Server Error
- Si los errores
500
no se producen en ese momento, proporciona la hora. período con la información de la zona horaria cuando se produjeron errores500
en el pasado.
Si eres un usuario de la Nube privada, proporciona la siguiente información:
- Mensaje de error completo observado para las solicitudes fallidas
- Organización, nombre del entorno y nombre del proxy de API que está observando
500
de errores - Paquete de proxy de API
- Archivo de seguimiento que contiene las solicitudes con
500 Internal Server Error
- Registros de acceso de NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Dónde: ORG, ENV y PORT# se reemplazan por valores reales.
- Registros del sistema del procesador de mensajes
/opt/apigee/var/log/edge-message-processor/logs/system.log
- El período con la información de la zona horaria en el que se produjeron los errores
500
.