500 Interner Serverfehler – Back-End-Server

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:

  1. Melden Sie sich in der Apigee Edge-Benutzeroberfläche als Nutzer mit einer geeigneten Rolle an.
  2. Wechseln Sie zu der Organisation, in der Sie das Problem untersuchen möchten.

  3. Rufen Sie die Seite Analysieren > API-Monitoring > Untersuchen auf.
  4. Wählen Sie den Zeitraum aus, in dem die Fehler aufgetreten sind.
  5. Stellen Sie Fehlercode im Verhältnis zu Zeit dar.

  6. Wählen Sie eine Zelle mit dem Fehlercode messaging.adaptors.http.flow.ErrorResponseCode aus, wie unten gezeigt:

    ( größeres Bild ansehen)

  7. Informationen zum Fehlercode messaging.adaptors.http.flow.ErrorResponseCode werden wie unten gezeigt angezeigt:

    ( größeres Bild ansehen)

  8. Klicken Sie auf Logs ansehen und maximieren Sie die Zeile für die fehlgeschlagene Anfrage.

    ( größeres Bild ansehen)

  9. 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:

  1. Aktivieren Sie die Trace-Sitzung und entweder
    • warten Sie, bis der 500 Internal Server Error Fehler mit dem Fehlercode messaging.adaptors.http.flow.ErrorResponseCode auftritt, oder
    • wenn Sie das Problem reproduzieren können, führen Sie den API-Aufruf aus, um das Problem zu reproduzieren 500 Internal Server Error
  2. Achten Sie darauf, dass Alle FlowInfos einblenden aktiviert ist:

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

    ( größeres Bild ansehen)

  6. Gehen Sie in der Trace zur Phase AX (Analysedaten aufgezeichnet) und klicken Sie darauf.
  7. 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:

    ( größeres Bild ansehen)

  8. Notieren Sie sich die Werte von X-Apigee-fault-code, X-Apigee-fault-source, und X-Apigee-Message-ID:
  9. 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:

  1. Wenn Sie Nutzer der Private Cloud sind, können Sie NGINX-Zugriffsprotokolle verwenden, um die wichtigsten Informationen zum HTTP-Fehler 500 Internal Server Error zu ermitteln.
  2. Prüfen Sie die NGINX-Zugriffsprotokolle:

    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

  3. Suchen Sie nach 500-Fehlern mit dem Fehlercode messaging.adaptors.http.flow.ErrorResponseCode in einem bestimmten Zeitraum (wenn das Problem in der Vergangenheit aufgetreten ist) oder nach Anfragen, die immer noch mit 500 fehlschlagen.
  4. Wenn Sie 500 Fehler finden, bei denen der X-Apigee-fault-code mit dem Wert von messaging.adaptors.http.flow.ErrorResponseCode übereinstimmt, ermitteln Sie den Wert von X-Apigee-fault-source.

    Beispiel für einen 500-Fehler aus dem NGINX-Zugriffsprotokoll :

    ( größeres Bild ansehen)

    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.ErrorResponseCode
    X-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.

  1. 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.
  2. Wenn die Fehlerquelle target und der Fehlercode messaging.adaptors.http.flow.ErrorResponseCode ist, wird der Fehler vom Backend-Server zurückgegeben.
  3. 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:

    1. Wählen Sie in der Trace die API-Anfrage aus, die mit 500 Internal Server Error fehlgeschlagen ist.
    2. Wählen Sie die Phase Response received from target server aus der fehlgeschlagenen API-Anfrage aus, wie in der folgenden Abbildung gezeigt:

      ( größeres Bild ansehen)

    3. 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 Error Antwort 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:

    1. 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.
    2. Wenn der Backend-Dienst öffentlich zugänglich ist, können Sie den curl Befehl, Postman oder einen anderen REST-Client verwenden und die Backend-Server-API direkt aufrufen.
    3. Wenn der Backend-Server nur über die Message Processors zugänglich ist, können Sie den Befehl curl verwenden, Postman oder einen anderen REST-Client und die Backend-Server-API direkt vom Message Processor aus aufrufen.

    4. Prüfen Sie, ob der Backend-Dienst tatsächlich 500 Internal Server Error zurü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

    1. Prüfen Sie die Backend-Serverprotokolle und versuchen Sie, weitere Details zum Fehler und seiner Ursache zu erhalten.
    2. Aktivieren Sie nach Möglichkeit den Debug-Modus auf dem Backend-Server, um weitere Details zum Fehler und zur Ursache zu erhalten.
  4. 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:

    1. 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.

    2. Das Fenster Curl for Request Sent to Target Server wird geöffnet. Hier können Sie den Hostalias des Zielservers ermitteln.
    3. 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.
    4. 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 Error ermittelt haben. In diesen Fällen kann 500 Internal Server Error auch 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.
    5. 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

  1. Die tatsächliche Fehlermeldung, die vom Backend-Server für 500 Internal Server Error zurückgegeben wird, kann nur angezeigt werden, wenn Sie die Trace-Sitzung für die fehlgeschlagenen Anfragen erfasst haben.
  2. Die Antwort des Backend-Servers wird aus Sicherheitsgründen nicht in API-Monitoring, NGINX-Zugriffsprotokollen oder Nachrichtenverarbeiterprotokollen protokolliert.
  3. Sie können die Backend-Serverprotokolle prüfen oder den Debug-Modus auf dem Backend-Server aktivieren, um weitere Details zum 500 Internal Server Error zu 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 Fehlers 500
  • Trace-Datei mit den Anfragen mit 500 Internal Server Error
  • Wenn die 500 Fehler derzeit nicht auftreten, geben Sie den Zeitraum mit den Zeitzoneninformationen an, in dem die 500 Fehler 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 500 Fehler 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_log

    Dabei 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 500 aufgetreten sind.