<ph type="x-smartling-placeholder"></ph>
Vous consultez la documentation Apigee Edge.
Accédez à la page
Documentation sur Apigee X. En savoir plus
Vidéos
Vidéo | Description |
---|---|
Erreur interne du serveur 500 - causée par le backend | Cet exemple de code montre une erreur 500 Internal Server Error en temps réel causée par le serveur backend, ainsi que la procédure à suivre pour dépanner et résoudre l'erreur. |
Symptôme
L'application cliente reçoit le code d'état HTTP 500
avec le message
Internal Server Error
en réponse aux appels d'API.
Le code d'état HTTP 500
est une réponse d'erreur générique. Cela signifie que le serveur
rencontré une condition inattendue qui l'a empêché
de répondre à la demande. Cette erreur est
généralement renvoyés par le serveur
lorsqu'aucun autre code d'erreur ne convient.
Messages d'erreur
L'application cliente reçoit le code de réponse suivant:
HTTP/1.1 500 Internal Server Error
En outre, un message d'erreur semblable à celui présenté ci-dessous peut s'afficher:
Exemple 1
Exemple de réponse du serveur backend 1
{"errorMessage":"Sorry either your e-mail or password didn't match.", "errorParameters":"{}", "errorCode":"500", "errorKey":"INVALID_EMAILPASSWORD"}
Exemple 2
Exemple de réponse du serveur backend 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>
Causes possibles
Le message 500 Internal Server Error
a pu être renvoyé par le serveur backend en raison d'une erreur
un certain nombre de causes. Ce playbook explique comment résoudre le problème à l'aide des étapes courantes
quelle que soit sa cause.
Les causes possibles de ce problème sont les suivantes:
Cause | Description | Instructions de dépannage applicables |
---|---|---|
Erreur sur le serveur backend | Le serveur backend peut tomber en panne pour une raison quelconque. | Utilisateurs de cloud privé et public Edge |
Étapes de diagnostic courantes
Utilisez l'une des techniques ou l'un des outils suivants pour diagnostiquer ce problème:
Surveillance des API
Procédure n° 1: Utiliser la surveillance des API
<ph type="x-smartling-placeholder">Pour diagnostiquer l'erreur à l'aide de l'API Monitoring, procédez comme suit:
- <ph type="x-smartling-placeholder"></ph> Connectez-vous à l'interface utilisateur d'Apigee Edge en tant qu'utilisateur disposant d'un rôle approprié.
Accédez à l'organisation dans laquelle vous souhaitez examiner le problème.
- Accédez à Analyser > Surveillance des API > Examiner.
- Sélectionnez la période spécifique au cours de laquelle vous avez observé les erreurs.
Représentez le code d'erreur par rapport à l'heure.
<ph type="x-smartling-placeholder">Sélectionnez une cellule contenant le code d'erreur
messaging.adaptors.http.flow.ErrorResponseCode
tel qu'illustré ci-dessous:Informations sur le code d'erreur
messaging.adaptors.http.flow.ErrorResponseCode
s'affiche sous la forme comme indiqué ci-dessous:Cliquez sur Afficher les journaux et développez la ligne correspondant à la requête ayant échoué.
- Dans la fenêtre Journaux, notez les détails suivants:
<ph type="x-smartling-placeholder">
- </ph>
- Demander un ID de message
- Code d'état:
500
- Source de l'erreur:
target
- Code d'erreur:
messaging.adaptors.http.flow.ErrorResponseCode
Trace
Procédure n° 2: Utiliser l'outil Trace
<ph type="x-smartling-placeholder">Pour diagnostiquer l'erreur à l'aide de l'outil Trace:
- Activez la session de trace, puis
<ph type="x-smartling-placeholder">
- </ph>
- Attendez l'erreur
500 Internal Server Error
avec le code d'erreurmessaging.adaptors.http.flow.ErrorResponseCode
ne doit pas avoir lieu, ou - Si vous pouvez reproduire le problème, effectuez l'appel d'API pour le reproduire.
500 Internal Server Error
- Attendez l'erreur
Assurez-vous que l'option Show all FlowInfos (Afficher toutes les informations FlowInfos) est activée:
- Sélectionnez l'une des requêtes ayant échoué et examinez la trace.
- Parcourez les différentes phases de la trace et localisez l'origine de l'échec.
Vous trouverez l'erreur généralement dans un flux après la réponse reçue du serveur cible. comme indiqué ci-dessous:
- Accédez à la phase AX (Données analytiques enregistrées) dans la trace, puis cliquez dessus.
Faites défiler la page jusqu'à la section Phase Details Response Headers (En-têtes de réponse des détails de la phase) et déterminez les valeurs de X-Apigee-fault-code et X-Apigee-fault-source, et X-Apigee-Message-ID, comme indiqué ci-dessous:
- Notez les valeurs de X-Apigee-fault-code, X-Apigee-fault-source, et X-Apigee-Message-ID:
En-têtes de réponse | Valeur |
---|---|
X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
X-Apigee-fault-source | target |
X-Apigee-Message-ID | MESSAGE_ID |
NGINX
Procédure n° 3: Utiliser les journaux d'accès NGINX
<ph type="x-smartling-placeholder">Pour diagnostiquer l'erreur à l'aide des journaux d'accès NGINX:
- Si vous êtes un utilisateur Private Cloud, vous pouvez utiliser les journaux d'accès NGINX pour déterminer
les informations clés concernant HTTP
500 Internal Server Error
. Vérifiez les journaux d'accès NGINX:
<ph type="x-smartling-placeholder">/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Effectuez une recherche pour voir s'il existe des erreurs
500
avec un code d'erreurmessaging.adaptors.http.flow.ErrorResponseCode
pendant une durée spécifique (si le problème est survenu pendant ou si des requêtes échouent toujours avec500
. Si vous trouvez des erreurs
500
avec la correspondance X-Apigee-fault-code la valeur demessaging.adaptors.http.flow.ErrorResponseCode
, puis déterminer la valeur de X-Apigee-fault-source..Exemple d'erreur 500 dans le journal d'accès NGINX:
L'exemple d'entrée ci-dessus du journal d'accès NGINX contient les valeurs suivantes pour X-Apigee-fault-code et X-Apigee-fault-code
En-têtes Valeur X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
X-Apigee-fault-source target
Cause: erreur sur le serveur backend
Diagnostic
La réponse 500 Internal Server Error
du serveur backend peut être
en raison d'un certain nombre de raisons. Vous devrez diagnostiquer chaque situation indépendamment.
- Déterminez le code d'erreur, source de l'erreur pour l'erreur observée à l'aide de l'API Monitoring, l'outil Trace ou les journaux d'accès NGINX comme expliqué dans la section Étapes de diagnostic courantes.
- Si la source d'erreur est
target
et que le code d'erreur estmessaging.adaptors.http.flow.ErrorResponseCode
, cela indique que l'erreur est renvoyée par le serveur backend. - Pour identifier la cause du problème, procédez de l'une des manières suivantes:
Trace
Utiliser Trace:
Si vous disposez d'une session Trace pour l'échec, procédez comme suit:
- Dans Trace, sélectionnez la requête API qui a échoué avec
500 Internal Server Error
Sélectionnez la phase Response received from target server (Réponse du serveur cible) dans le champ en échec, comme illustré dans la figure ci-dessous:
Faites défiler la page jusqu'à la section Phase Details (Détails de la phase) et cochez la case Le contenu de la réponse,qui contient la réponse du serveur backend.
Exemple de contenu de la réponse:
<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>
Dans la réponse ci-dessus, notez que le message d'erreur du serveur backend est Non autorisé. Cela indique que l'utilisateur a peut-être transmis des erreurs à l'aide d'identifiants de connexion.
Appeler le serveur backend
Effectuer un appel direct au serveur backend:
Vous pouvez effectuer un appel direct vers le serveur backend et:
- Vérifiez si vous obtenez le même
500 Internal Server Error
Réponse reçue lorsque la demande a été effectuée via Apigee Edge - Vérifier le message d'erreur (réponse) reçu du serveur backend
Pour effectuer l'appel direct vers le serveur backend, procédez comme suit:
- Assurez-vous de disposer de tous les en-têtes et paramètres de requête requis, ainsi que qui doivent être transmis au serveur backend dans le cadre de la requête.
- Si le service de backend est accessible publiquement, vous pouvez utiliser
curl
, Postman ou tout autre client REST, puis appelez l'API du serveur backend. Si le serveur backend n'est accessible qu'à partir des processeurs de messages, vous pouvez utilisez la commande
<ph type="x-smartling-placeholder">curl
, Postman ou tout autre client REST, et appelez la méthode l'API du serveur backend directement à partir du processeur de messages.- Vérifiez si le service de backend renvoie effectivement
500 Internal Server Error
et vérifiez le message d'erreur (réponse) renvoyé par le serveur backend. déterminer la cause de cette erreur.
Journaux du serveur backend
Utiliser les journaux du serveur backend
- Examinez les journaux du serveur backend et essayez d'en savoir plus sur l'erreur. sa cause.
- Si possible, activez le mode débogage sur le serveur backend pour obtenir plus de détails. sur l'erreur et sa cause.
- Dans Trace, sélectionnez la requête API qui a échoué avec
Vérifiez si vous utilisez <ph type="x-smartling-placeholder"></ph> un chaînage de proxy dans le point de terminaison cible spécifique du proxy d'API en échec c'est-à-dire, si le serveur/point de terminaison cible appelle un autre proxy dans Apigee Edge. Pour déterminer cela:
Si vous disposez de la trace de la requête ayant échoué, accédez à la section Request sent à la phase du serveur cible, puis cliquez sur Show Curl (Afficher le curl).
- La fenêtre Curl for Request Sent to Target Server (Curl pour la requête envoyée au serveur cible) qui s'ouvre, peut déterminer l'alias hôte du serveur cible.
- Examinez le point de terminaison cible de votre proxy d'API et vérifiez si le serveur backend L'URL ou le nom d'hôte sur le serveur cible pointe vers un autre proxy ou vers le vôtre à votre serveur backend.
- Si l'alias hôte du serveur cible pointe vers un alias d'hôte virtuel, il
est le chaînage de proxy. Dans ce cas, vous devez répéter toutes les étapes ci-dessus pour la
jusqu'à ce que vous déterminiez la cause réelle de l'
500 Internal Server Error
. Dans ce cas,500 Internal Server Error
peut se produire dans d’autres proxies en chaîne à d’autres étapes également qui peuvent être diagnostiquées et résolu en suivant les instructions fournies dans ce guide ou dans le Playbook 500 sur les erreurs internes du serveur. - Si l'alias d'hôte du serveur cible pointe vers votre serveur backend, accédez à Résolution.
Solution
S'il est certain que l'erreur 500
provient du serveur backend,
travaillez avec l'équipe de votre serveur backend
pour résoudre le problème de manière appropriée.
Dans l'exemple discuté ci-dessus, vous devrez peut-être demander aux utilisateurs de transmettre des identifiants valides pour corriger ce problème.
Points clés à noter
- Le message d'erreur réel renvoyé par le serveur backend pour
500 Internal Server Error
n'est visible que si vous avez capturé la session de trace pour l'activité défaillante. requêtes. - La réponse du serveur backend ne sera pas enregistrée dans la surveillance des API, les journaux d'accès NGINX ou Journaux du processeur de messages pour des raisons de sécurité.
- Vous pouvez consulter les journaux du serveur backend ou activer le mode débogage sur le backend pour obtenir plus
des détails sur
500 Internal Server Error
et/ou afficher le message d'erreur renvoyé par le serveur backend.
Vous devez collecter des informations de diagnostic
Si le problème persiste alors que vous avez suivi les instructions ci-dessus, rassemblez les informations suivantes : les informations de diagnostic et contactez l'assistance Apigee Edge.
Si vous êtes un utilisateur de cloud public, fournissez les informations suivantes:
- Nom de l'organisation
- Nom de l'environnement
- Nom du proxy d'API
- Exécutez la commande
curl
pour reproduire l'erreur500
. - Fichier de suivi contenant les requêtes avec
500 Internal Server Error
- Si les erreurs
500
ne se produisent pas actuellement, indiquez l'heure période avec les informations de fuseau horaire lorsque des erreurs500
se sont produites dans le passé.
Si vous êtes un utilisateur du Private Cloud, fournissez les informations suivantes:
- Message d'erreur complet observé pour les requêtes en échec
- Nom de l'organisation, de l'environnement et du proxy d'API que vous observez
500
erreur - Groupe de proxys d'API
- Fichier de suivi contenant les requêtes avec
500 Internal Server Error
- Journaux d'accès NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Où:ORG, ENV et PORT# sont remplacées par des valeurs réelles.
- Journaux système du processeur de messages
/opt/apigee/var/log/edge-message-processor/logs/system.log
- Période avec les informations de fuseau horaire au cours de laquelle les erreurs
500
se sont produites.