Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione
Documentazione di Apigee X. Informazioni
Video
Per ulteriori informazioni sugli errori 503, guarda i seguenti video:
Video | Descrizione |
---|---|
Risolvere i problemi relativi al servizio 503 non disponibile - NoActiveTarget | Scopri di più su quanto segue:
|
Sintomo
L'applicazione client riceve il codice di stato della risposta HTTP 503 con la il messaggio Servizio non disponibile e il codice di errore NoActiveTarget per le richieste proxy API.
Messaggio di errore
Verrà visualizzata la seguente risposta di errore:
HTTP/1.1 503 Service Unavailable
Nella risposta HTTP viene visualizzato il seguente messaggio di errore:
{ "fault": { "faultstring": "The Service is temporarily unavailable", "detail": { "errorcode": "messaging.adaptors.http.flow.NoActiveTargets" } } }
Possibili cause
In genere viene osservata la risposta HTTP 503 Service Unavailable con il codice di errore NoActiveTarget. quando utilizzi uno o più server di destinazione nella configurazione dell'endpoint di destinazione del proxy API.
Nella tabella seguente sono elencate le possibili cause della risposta 503 Servizio non disponibile con codice di errore NoActiveTarget:
Causa | Descrizione | Chi può eseguire la procedura di risoluzione dei problemi |
---|---|---|
Il server di destinazione è disabilitato | Il server di destinazione specificato nella configurazione dell'endpoint di destinazione è disabilitato. | Utenti perimetrali di cloud pubblici e privati |
Errori di connessione dovuti a una risoluzione DNS errata | La risoluzione DNS del server di destinazione ha generato indirizzi IP errati che generano errori di connessione. | Utenti Edge Private Cloud |
Errori di connessione | I problemi di rete o di connettività impediscono al client di connettersi al server. | Utenti Edge Private Cloud |
Alias host di destinazione errato | L'host del server di destinazione specificato non è corretto o contiene caratteri indesiderati (ad esempio uno spazio). | Utenti perimetrali di cloud pubblici e privati |
Errori di handshake SSL | handshake TLS/SSL non riuscito tra il client e il server. | Utenti perimetrali di cloud pubblici e privati |
Errori del controllo di integrità | I controlli di integrità configurati per controllare l'integrità del server di destinazione potrebbero non riuscire per qualche motivo. | Utenti Edge Private Cloud |
Causa: il server di destinazione è disabilitato
Se tutti i server di destinazione specificati nella configurazione dell'endpoint di destinazione sono disabilitati, ricevi la risposta 503 Servizio non disponibile con il codice di errore NoActiveTarget.
Diagnosi
- Determinare il nome del server di destinazione utilizzato nello specifico endpoint di destinazione Configurazione del proxy API che presenta errori utilizzando uno dei seguenti modi:
- Se è presente un solo endpoint di destinazione, controllalo.
- Se sono presenti più endpoint di destinazione e se non sai con certezza quale abbia disabilitato il server di destinazione, segui questi passaggi:
- Abilita la sessione di traccia, effettua la chiamata API e riproduci il problema - 503 Servizio non disponibile.
- Dalla traccia, vai a Flusso di richiesta di destinazione avviato e determina il nome dell'endpoint di destinazione come mostrato di seguito:
- Una volta identificato l'endpoint di destinazione, ottieni il nome del server di destinazione utilizzato dalla configurazione dell'endpoint di destinazione, come mostrato nell'esempio riportato di seguito:
<TargetEndpoint name="default">> <HTTPTargetConnection> <LoadBalancer> <Server name="demo-target" /> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> </TargetEndpoint>
Nell'esempio precedente, esiste un unico server di destinazione denominato demo-target.
- Ottieni la definizione di ciascuno dei server di destinazione utilizzati nell'endpoint di destinazione usando l'UI Edge o la chiamata API Edge.
UI Edge
Per ottenere la definizione utilizzando la UI Edge:
- Vai ad Amministrazione > Ambienti > Server di destinazione.
- Seleziona l'ambiente specifico in cui visualizzi l'errore.
- Cerca il nome del server di destinazione specifico per ottenere la definizione del server di destinazione.
Ad esempio, digita il nome del server di destinazione
demo-target
e vedrai la sua definizione come mostrato di seguito:Tieni presente che il server di destinazione demo-target ha un alias host, numero di porta e SSL è abilitato. Tuttavia, lo stesso server di destinazione è disattivato , come indicato dall'elemento ENABLED in grigio.
API Edge
Per ottenere la definizione utilizzando l'API Edge:
Utilizza la Ottieni l'API TargetServer per ottenere la definizione del server di destinazione.
Output definizione server di destinazione
<TargetServer name="demo-target"> <Host>demo-target.apigee.net</Host> <Port>443</Port> <IsEnabled>false</IsEnabled> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> </TargetServer>
L'output dell'API Apigee mostra che il server di destinazione demo-target è disabilitato poiché l'elemento IsEnabled è impostato su false.
Poiché il server di destinazione è disabilitato, il processore di messaggi invierà 503 Service non disponibile con il codice di errore NoActiveTargets immediatamente come la risposta desiderata al cliente.
Risoluzione
Assicurati che i server di destinazione specifici utilizzati nella configurazione dell'endpoint di destinazione dell'API I proxy sono sempre abilitati.
UI Edge
- Vai ad Amministrazione > Ambienti > Server di destinazione.
- Seleziona l'ambiente specifico in cui visualizzi l'errore.
- Cerca il nome del server di destinazione specifico per ottenerne la definizione.
- Seleziona il server di destinazione specifico e fai clic su Modifica.
- Seleziona la casella di controllo Attivata.
- Fai clic su Aggiorna.
API Edge
Utilizza la Aggiorna un'API Target Server per aggiornare la definizione del server di destinazione e assicurarti che IsEnabled è impostato su true nel payload dell'API di richieste, come mostrato di seguito:
<TargetServer name="demo-target"> <Host>demo-target.apigee.net</Host> <Port>443</Port> <IsEnabled>true</IsEnabled> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> </TargetServer>
Se il problema persiste, vai a Raccogliere informazioni diagnostiche.
Diagnosi dei problemi utilizzando il monitoraggio delle API
Il monitoraggio delle API ti consente di isolare le aree in modo da diagnosticare rapidamente i problemi di errore, prestazioni e latenza e la loro origine, come come le app, i proxy API, i target di backend o la piattaforma API.
Presentazione di uno scenario di esempio
che illustra come risolvere i problemi 5xx relativi alle API utilizzando il monitoraggio delle API. Ad esempio:
ti consigliamo di impostare un avviso per ricevere una notifica quando il numero di messaging.adaptors.http.flow.NoActiveTargets
di errore superano una determinata soglia.
Raccogliere dati diagnostici
Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli i seguenti dati informazioni diagnostiche. Contatta e condividili con l'assistenza Apigee:
- Se sei un utente del cloud pubblico, fornisci le seguenti informazioni:
- Nome dell'organizzazione
- Nome ambiente
- Nome proxy API
- Completa il comando curl per riprodurre l'errore
- File di traccia contenente le richieste con servizio 503 non disponibile con codice di errore NoActiveTarget
- Se sei un utente del cloud privato, fornisci le seguenti informazioni:
- Messaggio di errore completo osservato
- Nome ambiente
- Bundle proxy API
- File di traccia contenente le richieste con servizio 503 non disponibile con codice di errore NoActiveTarget
- Log di accesso NGINX
(
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
) - Log del processore di messaggi
(
/opt/apigee/var/log/edge-message-processor/logs/system.log
)