503 Servizio non disponibile - NoActiveTarget

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

Video

Per ulteriori informazioni sugli errori 503, guarda i seguenti video:

Video Descrizione
Risolvere i problemi relativi a 503 Service Unavailable - NoActiveTargets Scopri di più su:
  • Importanza dei server di destinazione e dei monitor di integrità
  • Risoluzione dei problemi relativi a un errore 503 Service Unavailable - NoActiveTargets in tempo reale

Sintomo

L'applicazione client riceve il codice di stato della risposta HTTP 503 con il messaggio Service Unavailable e il codice di errore NoActiveTargets per le richieste del proxy API.

Messaggio di errore

Viene visualizzata la seguente risposta di errore:

HTTP/1.1 503 Service Unavailable
  

Nel corpo della 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

La risposta HTTP 503 Service Unavailable con il codice di errore NoActiveTargets viene in genere osservata quando utilizzi uno o più server di destinazione nella configurazione dell'endpoint di destinazione nel proxy API.

La tabella seguente elenca le possibili cause della risposta 503 Service Unavailable con il codice di errore NoActiveTargets:

Causa Descrizione Chi può eseguire i passaggi per la risoluzione dei problemi
Il server di destinazione è disattivato Il server di destinazione specificato nella configurazione dell'endpoint di destinazione è disattivato. Utenti di Edge Public Cloud e Private Cloud
Errori di connessione dovuti a una risoluzione DNS errata La risoluzione DNS del server di destinazione ha generato indirizzi IP errati che hanno causato errori di connessione. Utenti di Edge Private Cloud
Errori di connessione Problemi di rete o di connettività impediscono al client di connettersi al server. Utenti di 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 di Edge Public Cloud e Private Cloud
Errori di handshake SSL L'handshake TLS/SSL non è riuscito tra il client e il server. Utenti di Edge Public Cloud e Private Cloud
Errori di controllo di integrità I controlli di integrità configurati per verificare l'integrità del server di destinazione potrebbero non riuscire per qualche motivo. Utenti di Edge Private Cloud

Causa: il server di destinazione è disattivato

Se tutti i server di destinazione specificati nella configurazione dell'endpoint di destinazione sono disattivati, riceverai la risposta 503 Service Unavailable con il codice di errore NoActiveTargets.

Diagnosi

  1. Determina il nome del server di destinazione utilizzato nella configurazione dell'endpoint di destinazione specifica del proxy API non riuscito in uno dei seguenti modi:
    1. Se è presente un solo endpoint di destinazione, controlla quell'endpoint di destinazione specifico.
    2. Se sono presenti più endpoint di destinazione e non sai quale ha il server di destinazione disattivato, segui questi passaggi:
      1. Attiva la sessione di traccia, effettua la chiamata API e riproduci il problema: 503 Service Unavailable.
      2. Dalla traccia, vai a Target Request Flow Started e determina il nome dell'endpoint di destinazione come mostrato di seguito:
      3. Determinazione del nome dell'endpoint di destinazione dalla traccia

  2. Dopo aver identificato l'endpoint di destinazione, recupera il nome del server di destinazione utilizzato dalla configurazione dell'endpoint di destinazione, come mostrato nell'esempio seguente:
    <TargetEndpoint name="default">>
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="demo-target" />
        </LoadBalancer>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
          

    Nell'esempio precedente, è presente un solo server di destinazione denominato demo-target.

  3. Recupera la definizione di ciascuno dei server di destinazione utilizzati nell'endpoint di destinazione utilizzando l'interfaccia utente Edge o la chiamata API Edge.

    Interfaccia utente Edge

    Per recuperare la definizione utilizzando l'interfaccia utente Edge:

    1. Vai ad Admin (Amministrazione) > Environments (Ambienti) > Target Servers (Server di destinazione).
    2. Seleziona l'ambiente specifico in cui si verifica l'errore.
    3. Cerca il nome del server di destinazione specifico per recuperare 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:

      Nome del server di destinazione e stato attivato/disattivato

      Tieni presente che il server di destinazione demo-target ha un alias host, un numero di porta e SSL è abilitato. Tuttavia, il server di destinazione stesso è disattivato , come indicato dall'elemento ENABLED in grigio.

    API Edge

    Per recuperare la definizione utilizzando l'API Edge:

    Utilizza l' API Get TargetServer per recuperare la definizione del server di destinazione.

    Output della definizione del 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 è disattivato perché l'elemento IsEnabled è impostato su false.

    Poiché il server di destinazione è disattivato, il processore di messaggi invierà immediatamente 503 Service Unavailable con il codice di errore NoActiveTargets come risposta al client.

Risoluzione

Assicurati che i server di destinazione specifici utilizzati nella configurazione dell'endpoint di destinazione del proxy API siano sempre attivati.

Interfaccia utente Edge

  1. Vai ad Admin (Amministrazione) > Environments (Ambienti) > Target Servers (Server di destinazione).
  2. Seleziona l'ambiente specifico in cui si verifica l'errore.
  3. Cerca il nome del server di destinazione specifico per recuperare la sua definizione.
  4. Seleziona il server di destinazione specifico e fai clic su Edit (Modifica).
  5. Seleziona la casella di controllo Enabled (Attivato).
  6. Fai clic su Update (Aggiorna).

API Edge

Utilizza l'API Update a Target Server per aggiornare la definizione del server di destinazione e assicurati che IsEnabled sia impostato su true nel payload della richiesta dell'API, 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 di diagnostica.

Diagnosticare i problemi utilizzando il monitoraggio delle API

Il monitoraggio delle API ti consente di isolare rapidamente le aree problematiche per diagnosticare gli errori, i problemi di prestazioni e di latenza e la loro origine, ad esempio app per sviluppatori API, proxy API, target di backend o la piattaforma API.

Segui un esempio di scenario che mostra come risolvere i problemi 5xx con le API utilizzando il monitoraggio delle API. Ad esempio, potresti voler configurare un avviso per ricevere una notifica quando il numero di messaging.adaptors.http.flow.NoActiveTargets errori supera una determinata soglia.

Raccogliere informazioni di diagnostica

Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli le seguenti informazioni di diagnostica. Contatta l'assistenza Apigee e condividile:

  1. Se sei un utente di Public Cloud, fornisci le seguenti informazioni:
    1. Nome dell'organizzazione
    2. Nome ambiente
    3. Nome del proxy API
    4. Comando curl completo per riprodurre l'errore
    5. File di traccia contenente le richieste con 503 Service Unavailable con codice di errore NoActiveTargets
  2. Se sei un utente di Private Cloud, fornisci le seguenti informazioni:
    1. Messaggio di errore completo osservato
    2. Nome ambiente
    3. Bundle del proxy API
    4. File di traccia contenente le richieste con 503 Service Unavailable con codice di errore NoActiveTargets
    5. Log di accesso NGINX

      (/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log)

    6. Log del processore di messaggi

      (/opt/apigee/var/log/edge-message-processor/logs/system.log)