Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione
Documentazione di Apigee X. Informazioni
Video
Video | Descrizione |
---|---|
500 Errore interno del server, causato dal backend | Mostra un valore 500 Internal Server Error in tempo reale causato dal server di backend, insieme ai passaggi per la risoluzione dei problemi e l'errore. |
Sintomo
L'applicazione client riceve un codice di stato HTTP di 500
con il messaggio
Internal Server Error
come risposta per le chiamate API.
Il codice di stato HTTP 500
è una risposta di errore generica. Significa che il server
ha riscontrato una condizione imprevista che gli ha impedito di soddisfare la richiesta. Questo errore è
di solito restituito dal server quando non è idoneo nessun altro codice di errore.
Messaggi di errore
L'applicazione client riceve il seguente codice di risposta:
HTTP/1.1 500 Internal Server Error
Inoltre, potresti visualizzare un messaggio di errore simile a quello mostrato di seguito:
Esempio 1
Esempio di risposta del server di backend n. 1
{"errorMessage":"Sorry either your e-mail or password didn't match.", "errorParameters":"{}", "errorCode":"500", "errorKey":"INVALID_EMAILPASSWORD"}
Esempio 2
Esempio di risposta del server di backend n. 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>
Possibili cause
500 Internal Server Error
potrebbe essere restituito dal server di backend a causa di un
diverse cause. Questa guida pratica spiega come risolvere i problemi utilizzando i passaggi comuni
a prescindere dalla causa.
Le possibili cause sono le seguenti:
Causa | Descrizione | Le istruzioni di risoluzione dei problemi applicabili a |
---|---|---|
Errore nel server di backend | Il server di backend potrebbe non riuscire per qualche motivo. | Utenti Edge di cloud privato e pubblico |
Passaggi diagnostici comuni
Utilizza uno dei seguenti strumenti/tecniche per diagnosticare questo errore:
Monitoraggio delle API
Procedura 1: utilizzo del monitoraggio delle API
Per diagnosticare l'errore utilizzando API Monitoring:
- Accedi alla UI di Apigee Edge come utente con ruolo appropriato.
Passa all'organizzazione in cui vuoi esaminare il problema.
- Vai al menu Analizza > Monitoraggio delle API > Esamina.
- Seleziona il periodo di tempo specifico in cui hai osservato gli errori.
Traccia il codice di errore in base all'ora.
Seleziona una cella che contiene il codice di errore
messaging.adaptors.http.flow.ErrorResponseCode
come mostrato sotto:Informazioni sul codice di errore
messaging.adaptors.http.flow.ErrorResponseCode
visualizzato come come mostrato di seguito:Fai clic su Visualizza log ed espandi la riga della richiesta non riuscita.
- Nella finestra Log, tieni presente i seguenti dettagli:
- .
- ID messaggio di richiesta
- Codice di stato:
500
- Origine errore:
target
- Codice di errore:
messaging.adaptors.http.flow.ErrorResponseCode
Trace
Procedura 2: utilizzo dello strumento Trace
Per diagnosticare l'errore utilizzando lo strumento Trace:
- Attiva la sessione di traccia e
- .
- Attendi l'errore
500 Internal Server Error
con il codice di erroremessaging.adaptors.http.flow.ErrorResponseCode
affinché si verifichino o - Se riesci a riprodurre il problema, esegui la chiamata API per riprodurlo.
500 Internal Server Error
- Attendi l'errore
Assicurati che l'opzione Mostra tutte le informazioni di Flow sia attivata:
- Seleziona una delle richieste non riuscite ed esamina la traccia.
- Naviga attraverso le diverse fasi della traccia e individua dove si è verificato l'errore.
In genere, troverai l'errore in un flusso successivo alla Risposta ricevuta dal server di destinazione come illustrato di seguito:
- Vai alla fase AX (dati registrati di Analytics) della traccia e fai clic su quest'ultima.
Scorri verso il basso fino alla sezione Intestazioni della risposta con i dettagli della fase e determina il i valori di X-Apigee-fault-code e X-Apigee-fault-source, e X-Apigee-Message-ID come mostrato di seguito:
- Nota i valori di X-Apigee-fault-code, X-Apigee-fault-source, e X-Apigee-Message-ID:
Intestazioni della risposta | Valore |
---|---|
X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
X-Apigee-fault-source | target |
X-Apigee-Message-ID | MESSAGE_ID |
NGINX
Procedura 3: usare i log di accesso NGINX
Per diagnosticare l'errore utilizzando i log di accesso NGINX:
- Se sei un utente Private Cloud, puoi utilizzare i log di accesso NGINX per determinare
le informazioni chiave su HTTP
500 Internal Server Error
. Controlla i log di accesso NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Cerca per vedere se ci sono errori
500
con codice di erroremessaging.adaptors.http.flow.ErrorResponseCode
per un periodo di tempo specifico (se il problema si è verificato nella precedenti) o se ci sono ancora richieste che non vanno a buon fine con500
. Se trovi errori
500
con la corrispondenza X-Apigee-fault-code il valore dimessaging.adaptors.http.flow.ErrorResponseCode
, determinare il valore della X-Apigee-fault-source.Esempio di errore 500 nel log di accesso NGINX:
( visualizza immagine ingrandita)
La voce di esempio riportata sopra del log di accesso NGINX ha i seguenti valori per X-Apigee-fault-code e X-Apigee-fault-code
Intestazioni Valore X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
X-Apigee-fault-source target
Causa: errore nel server di backend
Diagnosi
La risposta di 500 Internal Server Error
dal server di backend può essere
sono causati da vari motivi. Dovrai diagnosticare ogni situazione in modo indipendente.
- Determinare il codice di errore, l'origine errore per l'errore osservato utilizzando API Monitoring. Strumento Trace o log di accesso NGINX, come spiegato in Passaggi di diagnostica comuni.
- Se Origine di errore è
target
e Codice di errore èmessaging.adaptors.http.flow.ErrorResponseCode
, questo indica che l'errore viene restituito dal server di backend. - Per diagnosticare la causa del problema puoi procedere in uno dei seguenti modi:
Trace
Utilizzo di Trace:
Se è presente una sessione di Trace per l'errore, segui questi passaggi:
- In Trace, seleziona la richiesta API che non è riuscita con
500 Internal Server Error
. Seleziona la fase Risposta ricevuta dal server di destinazione dalla non riuscita la richiesta API, come illustrato nella figura seguente:
Scorri verso il basso fino alla sezione Dettagli fase e controlla la Contenuto della risposta,che contiene la risposta dal server di backend.
Esempio di contenuti di risposta:
<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>
Nella risposta precedente, tieni presente che il messaggio di errore del server di backend Non autorizzata. Questo indica che l'utente potrebbe aver trasmesso lo stato "Non valido" credenziali ed è per questo motivo che riceve questo errore.
Chiama il server di backend
Chiamata diretta al server di backend:
Puoi effettuare una chiamata diretta al server di backend e:
- Verifica se ricevi lo stesso
500 Internal Server Error
risposta ricevuta quando è stata effettuata la richiesta tramite Apigee Edge - Controlla il messaggio di errore (risposta) ricevuto dal server di backend
Per effettuare la chiamata diretta al server di backend, segui questi passaggi:
- Assicurati di avere tutte le intestazioni, i parametri di query e tutti gli eventuali le credenziali che devono essere passate al server di backend come parte della richiesta.
- Se il servizio di backend è accessibile pubblicamente, puoi utilizzare
curl
, Postman o qualsiasi altro client REST e richiamare l'API del server di backend. Se il server di backend è accessibile solo dai processori di messaggi, puoi il comando
curl
, Postman o qualsiasi altro client REST e richiamare l'API del server di backend direttamente dal processore di messaggi.- Verifica che il servizio di backend restituisca
500 Internal Server Error
e controlla il messaggio di errore (risposta) restituito dal server di backend. determinare la causa dell'errore.
Log del server di backend
Utilizzo dei log del server di backend
- Esamina i log del server di backend e prova a ottenere maggiori dettagli sull'errore e la causa.
- Se possibile, abilita la modalità di debug sul server di backend per ottenere maggiori dettagli sull'errore e sulla causa.
- In Trace, seleziona la richiesta API che non è riuscita con
Verifica se stai utilizzando concatenamento del proxy nello specifico endpoint di destinazione del proxy API che presenta errori. vale a dire, se il server/endpoint di destinazione sta richiamando un altro proxy Apigee Edge Per determinarlo:
Se disponi della traccia per la richiesta non riuscita, vai alla sezione Richiesta inviata alla fase server di destinazione e fai clic su Mostra Curl.
- Si apre la finestra Curl per richieste inviate al server di destinazione, da cui puoi può determinare l'alias host del server di destinazione.
- Esamina l'endpoint di destinazione del proxy API e verifica se il server di backend l'URL o il nome host nel server di destinazione rimanda a un altro proxy o al tuo di backend.
- Se l'alias dell'host del server di destinazione rimanda a un alias dell'host virtuale,
è il concatenamento di proxy. In questo caso, devi ripetere tutti i passaggi precedenti per
proxy concatenato finché non stabilisci cosa sta effettivamente causando
500 Internal Server Error
. In questi casi500 Internal Server Error
potrebbe avvengono anche in altri proxy concatenati, che possono essere diagnosticati risolto utilizzando le istruzioni fornite in questo playbook o nel Playbook sugli errori interni del server 500. - Se l'alias dell'host del server di destinazione rimanda al tuo server di backend, vai a Risoluzione.
Risoluzione
Se viene appurato che l'errore 500
proviene dal server di backend,
collabora con il team dedicato al server di backend per risolvere il problema in modo appropriato.
Nell'esempio discusso sopra, per risolvere il problema potresti dover richiedere agli utenti di passare credenziali valide questo problema.
Punti chiave da tenere presente
- Il messaggio di errore effettivo restituito dal server di backend per
500 Internal Server Error
può essere visualizzato solo se hai acquisito la sessione di traccia per l'errore richieste. - La risposta del server di backend non verrà registrata in API Monitoring, log di accesso NGINX o Log del processore di messaggi per motivi di sicurezza.
- Puoi rivedere i log del server di backend o abilitare la modalità di debug nel backend per ottenere più dati
dettagli su
500 Internal Server Error
e/o visualizza il messaggio di errore restituito dal server di backend.
Raccogliere dati diagnostici
Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli i seguenti dati informazioni diagnostiche e contatta l'assistenza Apigee Edge.
Se sei un utente del cloud pubblico, fornisci le seguenti informazioni:
- Nome organizzazione
- Nome ambiente
- Nome proxy API
- Completa il comando
curl
per riprodurre l'errore500
- File di traccia contenente le richieste con
500 Internal Server Error
- Se al momento gli errori
500
non si verificano, indica il tempo periodo con le informazioni sul fuso orario in cui si sono verificati500
errori nel passato.
Se sei un utente di Private Cloud, fornisci le seguenti informazioni:
- Messaggio di errore completo osservato per le richieste non riuscite
- Organizzazione, nome ambiente e nome proxy API che stai esaminando
500
errore - Bundle proxy API
- File di traccia contenente le richieste con
500 Internal Server Error
- Log di accesso NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Dove: ORG, ENV e PORT# vengono sostituiti con valori effettivi.
- Log di sistema del processore di messaggi
/opt/apigee/var/log/edge-message-processor/logs/system.log
- Il periodo di tempo con le informazioni sul fuso orario in cui si sono verificati gli errori
500
.