Sie lesen gerade die Dokumentation zu Apigee Edge.
Zur Dokumentation zu
Apigee X. info
Videos
| Video | Beschreibung |
|---|---|
| 500 Internal Server Error - caused by backend | In diesem Video wird ein 500 Internal Server Error in Echtzeit gezeigt, der durch den Backend-Server verursacht wird. Außerdem werden Schritte zur Fehlerbehebung und Behebung des Fehlers beschrieben. |
Symptom
Die Clientanwendung erhält für API-Aufrufe den HTTP-Statuscode 500 mit der Meldung
Internal Server Error als Antwort.
Der HTTP-Statuscode 500 ist eine allgemeine Fehlerantwort. Das bedeutet, dass auf dem Server
eine unerwartete Bedingung aufgetreten ist, die verhindert hat, dass die Anfrage ausgeführt werden konnte. Dieser Fehler wird
in der Regel vom Server zurückgegeben, wenn kein anderer Fehlercode geeignet ist.
Fehlermeldungen
Die Clientanwendung erhält den folgenden Antwortcode:
HTTP/1.1 500 Internal Server Error
Außerdem wird möglicherweise eine Fehlermeldung angezeigt, die der folgenden ähnelt:
Beispiel 1
Beispielantwort des Backend-Servers 1
{"errorMessage":"Sorry either your e-mail or password didn't match.",
"errorParameters":"{}",
"errorCode":"500",
"errorKey":"INVALID_EMAILPASSWORD"}Beispiel 2
Beispielantwort des Backend-Servers 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>
Mögliche Ursachen
Der 500 Internal Server Error kann aus verschiedenen Gründen vom Backend-Server zurückgegeben werden. In diesem Playbook wird erklärt, wie Sie diesen
Fehler mit allgemeinen Schritten beheben können, unabhängig von seiner Ursache.
Mögliche Ursachen für dieses Problem sind:
| Ursache | Beschreibung | Anleitungen zur Fehlerbehebung gelten für |
|---|---|---|
| Fehler auf dem Backend-Server | Der Backend-Server kann aus verschiedenen Gründen ausfallen. | Nutzer von Edge Private und Public Cloud |
Allgemeine Diagnoseschritte
Verwenden Sie eines der folgenden Tools/Verfahren, um diesen Fehler zu diagnostizieren:
API-Monitoring
Verfahren 1: API-Monitoring verwenden
So diagnostizieren Sie den Fehler mit dem API-Monitoring:
- Melden Sie sich in der Apigee Edge-Benutzeroberfläche als Nutzer mit einer geeigneten Rolle an.
Wechseln Sie zu der Organisation, in der Sie das Problem untersuchen möchten.
- Rufen Sie die Seite Analysieren > API-Monitoring > Untersuchen auf.
- Wählen Sie den Zeitraum aus, in dem die Fehler aufgetreten sind.
Stellen Sie Fehlercode im Verhältnis zu Zeit dar.
Wählen Sie eine Zelle mit dem Fehlercode
messaging.adaptors.http.flow.ErrorResponseCodeaus, wie unten gezeigt:
Informationen zum Fehlercode
messaging.adaptors.http.flow.ErrorResponseCodewerden wie unten gezeigt angezeigt:
Klicken Sie auf Logs ansehen und maximieren Sie die Zeile für die fehlgeschlagene Anfrage.
- Notieren Sie sich im Fenster Logs die folgenden Details:
- Anfragenachricht-ID
- Statuscode:
500 - Fehlerquelle:
target - Fehlercode:
messaging.adaptors.http.flow.ErrorResponseCode
Trace
Verfahren 2: Trace-Tool verwenden
So diagnostizieren Sie den Fehler mit dem Trace-Tool:
- Aktivieren Sie die Trace-Sitzung und entweder
- warten Sie, bis der
500 Internal Server ErrorFehler mit dem Fehlercodemessaging.adaptors.http.flow.ErrorResponseCodeauftritt, oder - wenn Sie das Problem reproduzieren können, führen Sie den API-Aufruf aus, um das Problem zu reproduzieren
500 Internal Server Error
- warten Sie, bis der
Achten Sie darauf, dass Alle FlowInfos einblenden aktiviert ist:

- Wählen Sie eine der fehlgeschlagenen Anfragen aus und untersuchen Sie den Trace.
- Gehen Sie die verschiedenen Phasen des Trace durch und suchen Sie nach der Stelle, an der der Fehler aufgetreten ist.
Der Fehler tritt in der Regel in einem Ablauf nach der Phase Response received from target server auf, wie unten gezeigt:

- Gehen Sie in der Trace zur Phase AX (Analysedaten aufgezeichnet) und klicken Sie darauf.
Scrollen Sie nach unten zum Abschnitt Phasendetails – Antwortheader und ermitteln Sie die Werte von X-Apigee-fault-code , X-Apigee-fault-source und X-Apigee-Message-ID , wie unten gezeigt:

- Notieren Sie sich die Werte von X-Apigee-fault-code, X-Apigee-fault-source, und X-Apigee-Message-ID:
| Antwortheader | Wert |
|---|---|
| X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
| X-Apigee-fault-source | target |
| X-Apigee-Message-ID | MESSAGE_ID |
NGINX
Verfahren 3: NGINX-Zugriffsprotokolle verwenden
So diagnostizieren Sie den Fehler mit NGINX-Zugriffsprotokollen:
- Wenn Sie Nutzer der Private Cloud sind, können Sie NGINX-Zugriffsprotokolle verwenden, um
die wichtigsten Informationen zum HTTP-Fehler
500 Internal Server Errorzu ermitteln. Prüfen Sie die NGINX-Zugriffsprotokolle:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log- Suchen Sie nach
500-Fehlern mit dem Fehlercodemessaging.adaptors.http.flow.ErrorResponseCodein einem bestimmten Zeitraum (wenn das Problem in der Vergangenheit aufgetreten ist) oder nach Anfragen, die immer noch mit500fehlschlagen. Wenn Sie
500Fehler finden, bei denen der X-Apigee-fault-code mit dem Wert vonmessaging.adaptors.http.flow.ErrorResponseCodeübereinstimmt, ermitteln Sie den Wert von X-Apigee-fault-source.Beispiel für einen 500-Fehler aus dem NGINX-Zugriffsprotokoll :
Der oben genannte Beispiel-Eintrag aus dem NGINX-Zugriffsprotokoll hat die folgenden Werte für X-Apigee-fault-code und X-Apigee-fault-source:
Header Wert X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCodeX-Apigee-fault-source target
Ursache: Fehler auf dem Backend-Server
Diagnose
Der vom Backend-Server zurückgegebene Fehler 500 Internal Server Error kann
verschiedene Ursachen haben. Sie müssen jede Situation unabhängig voneinander diagnostizieren.
- Ermitteln Sie den Fehlercode und die Fehlerquelle für den beobachteten Fehler mit dem API-Monitoring, dem Trace-Tool oder den NGINX-Zugriffsprotokollen, wie unter Allgemeine Diagnoseschritte beschrieben.
- Wenn die Fehlerquelle
targetund der Fehlercodemessaging.adaptors.http.flow.ErrorResponseCodeist, wird der Fehler vom Backend-Server zurückgegeben. - Sie können eine der folgenden Maßnahmen ausführen, um die Ursache des Problems zu diagnostizieren:
Trace
Trace verwenden :
Wenn Sie eine Trace-Sitzung für den Fehler haben, führen Sie die folgenden Schritte aus:
- Wählen Sie in der Trace die API-Anfrage aus, die mit
500 Internal Server Errorfehlgeschlagen ist. Wählen Sie die Phase Response received from target server aus der fehlgeschlagenen API-Anfrage aus, wie in der folgenden Abbildung gezeigt:
Scrollen Sie nach unten zum Phasendetails Abschnitt und prüfen Sie den Antwortinhalt, der die Antwort vom Backend-Server enthält.
Beispiel für Antwortinhalt :
<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>
In der obigen Antwort ist die Fehlermeldung vom Backend-Server Not Authorised. Das bedeutet, dass der Nutzer möglicherweise ungültige Anmeldedaten angegeben hat und daher diesen Fehler erhält.
Backend-Server aufrufen
Direkter Aufruf des Backend-Servers :
Sie können den Backend-Server direkt aufrufen und:
- prüfen, ob Sie dieselbe
500 Internal Server ErrorAntwort erhalten wie bei der Anfrage über Apigee Edge - die vom Backend-Server empfangene Fehlermeldung (Antwort) prüfen
Führen Sie die folgenden Schritte aus, um den Backend-Server direkt aufzurufen:
- Achten Sie darauf, dass Sie alle erforderlichen Header, Abfrageparameter und alle Anmeldedaten haben, die im Rahmen der Anfrage an den Backend-Server übergeben werden müssen.
- Wenn der Backend-Dienst öffentlich zugänglich ist, können Sie den
curlBefehl, Postman oder einen anderen REST-Client verwenden und die Backend-Server-API direkt aufrufen. Wenn der Backend-Server nur über die Message Processors zugänglich ist, können Sie den Befehl
curlverwenden, Postman oder einen anderen REST-Client und die Backend-Server-API direkt vom Message Processor aus aufrufen.- Prüfen Sie, ob der Backend-Dienst tatsächlich
500 Internal Server Errorzurückgibt, prüfen Sie die vom Backend-Server zurückgegebene Fehlermeldung (Antwort) und ermitteln Sie die Ursache für diesen Fehler.
Backend-Serverprotokolle
Backend-Serverprotokolle verwenden
- Prüfen Sie die Backend-Serverprotokolle und versuchen Sie, weitere Details zum Fehler und seiner Ursache zu erhalten.
- Aktivieren Sie nach Möglichkeit den Debug-Modus auf dem Backend-Server, um weitere Details zum Fehler und zur Ursache zu erhalten.
- Wählen Sie in der Trace die API-Anfrage aus, die mit
Prüfen Sie, ob Sie im spezifischen Zielendpunkt des fehlgeschlagenen API-Proxys eine Proxyverkettung verwenden. Das heißt, ob der Zielserver/Zielendpunkt einen anderen Proxy in Apigee Edge aufruft. So ermitteln Sie das:
Wenn Sie die Trace für die fehlgeschlagene Anfrage haben, gehen Sie zur Phase Request sent to target server und klicken Sie auf Show Curl.
- Das Fenster Curl for Request Sent to Target Server wird geöffnet. Hier können Sie den Hostalias des Zielservers ermitteln.
- Prüfen Sie den Zielendpunkt Ihres API-Proxys und prüfen Sie, ob die Backend-Server URL oder der Hostname auf dem Zielserver auf einen anderen Proxy oder Ihren eigenen Backend-Server verweist.
- Wenn der Hostalias des Zielservers auf einen Alias des virtuellen Hosts verweist, handelt es sich um eine Proxyverkettung. In diesem Fall müssen Sie alle oben genannten Schritte für den
verketteten Proxy wiederholen, bis Sie die tatsächliche Ursache für den Fehler
500 Internal Server Errorermittelt haben. In diesen Fällen kann500 Internal Server Errorauch in anderen verketteten Proxys in anderen Phasen auftreten. Diese können mit den Anweisungen in diesem Playbook oder im Playbook 500 Internal Server Error diagnostiziert und behoben werden. - Wenn der Hostalias des Zielservers auf Ihren Backend-Server verweist, fahren Sie mit Auflösung fort.
Auflösung
Wenn festgestellt wird, dass der Fehler 500 vom Backend-Server stammt, arbeiten Sie mit Ihrem Backend-Server-Team zusammen, um das Problem entsprechend zu beheben.
Im oben beschriebenen Beispiel müssen Sie möglicherweise die Nutzer auffordern, gültige Anmeldedaten anzugeben, um dieses Problem zu beheben.
Wichtige Hinweise
- Die tatsächliche Fehlermeldung, die vom Backend-Server für
500 Internal Server Errorzurückgegeben wird, kann nur angezeigt werden, wenn Sie die Trace-Sitzung für die fehlgeschlagenen Anfragen erfasst haben. - Die Antwort des Backend-Servers wird aus Sicherheitsgründen nicht in API-Monitoring, NGINX-Zugriffsprotokollen oder Nachrichtenverarbeiterprotokollen protokolliert.
- Sie können die Backend-Serverprotokolle prüfen oder den Debug-Modus auf dem Backend-Server aktivieren, um weitere
Details zum
500 Internal Server Errorzu erhalten und/oder die vom Backend-Server zurückgegebene Fehlermeldung anzusehen.
Erfassen von Diagnoseinformationen erforderlich
Wenn das Problem auch nach Befolgen der obigen Anweisungen weiterhin besteht, erfassen Sie die folgenden Diagnoseinformationen und wenden Sie sich an den Apigee Edge-Support.
Wenn Sie Nutzer der Public Cloud sind, geben Sie die folgenden Informationen an:
- Name der Organisation
- Name der Umgebung
- Name des API-Proxys
- Vollständiger
curl-Befehl zum Reproduzieren des Fehlers500 - Trace-Datei mit den Anfragen mit
500 Internal Server Error - Wenn die
500Fehler derzeit nicht auftreten, geben Sie den Zeitraum mit den Zeitzoneninformationen an, in dem die500Fehler in der Vergangenheit aufgetreten sind.
Wenn Sie Nutzer der Private Cloud sind, geben Sie die folgenden Informationen an:
- Vollständige Fehlermeldung für die fehlgeschlagenen Anfragen
- Name der Organisation, der Umgebung und des API-Proxys, für die Sie
500Fehler beobachten - API-Proxy-Bundle
- Trace-Datei mit den Anfragen mit
500 Internal Server Error - NGINX-Zugriffsprotokolle
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logDabei gilt: ORG, ENV, und PORT# werden durch die tatsächlichen Werte ersetzt.
- Systemprotokolle des Message Processors
/opt/apigee/var/log/edge-message-processor/logs/system.log - Der Zeitraum mit den Zeitzoneninformationen, in dem die Fehler
500aufgetreten sind.