Stai visualizzando la documentazione di Apigee Edge.
Vai alla
documentazione di Apigee X. informazioni
Sintomo
Il proxy Envoy ha esito negativo con errore HTTP 403 Forbidden
quando viene richiamato tramite
Apigee Adapter for Envoy.
Messaggio di errore
Viene visualizzato il seguente messaggio di errore:
HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 03 Nov 2020 00:20:10 GMT server: istio-envoy
Possibili cause
Il proxy Envoy genererà un errore HTTP 403
se si verifica una delle seguenti
condizioni:
Causa | Descrizione | Istruzioni per la risoluzione dei problemi applicabili a |
---|---|---|
Il prodotto API non è abilitato | Il prodotto API non è abilitato per l'ambiente specifico. | Utenti di cloud pubblico e privato perimetrale |
Percorso dell'URI del servizio di destinazione mancante nel prodotto API | Il percorso URI del servizio di destinazione non è presente o non è stato aggiunto al prodotto API nelle risorse dell'API. | Utenti di cloud pubblico e privato perimetrale |
Nome host mancante nel prodotto API | Il nome host specificato nella richiesta API client non è presente nel prodotto API nelle destinazioni del servizio remoto Apigee. | Utenti di cloud pubblico e privato perimetrale |
Chiave API mancante nell'intestazione della richiesta | La chiave API non viene trasmessa nell'intestazione HTTP x-api-key . |
Utenti di cloud pubblico e privato perimetrale |
Chiave API non valida | La chiave API passata come parte della richiesta non è valida. | Utenti di cloud pubblico e privato perimetrale |
L'adattatore Apigee per Envoy non è in grado di comunicare con il proxy API di servizio remoto | Apigee Adapter for Envoy non è in grado di comunicare con il proxy API di servizio remoto. | Utenti di cloud pubblico e privato perimetrale |
Il proxy Envoy non è in grado di comunicare con Apigee Adapter for Envoy | Il proxy Envoy non è in grado di comunicare con Apigee Adapter for Envoy | Utenti di cloud pubblico e privato perimetrale |
Prima di iniziare
- Verifica di aver ricevuto il messaggio di risposta
403 Forbidden
dal proxy Envoy. Ad esempio:curl -i -H "x-api-key: $API_KEY" http://httpbin:8080/echo HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 12 Jan 2021 08:18:08 GMT server: envoy RBAC: access denied
Attiva i log di debug:
Assicurati di aver abilitato i log di debug in Apigee Adapter for Envoy per acquisire ulteriori dettagli sull'errore. In caso contrario, arresta Apigee Adapter for Envoy e avvialo di nuovo, abilitando i log di debug utilizzando il seguente comando:
apigee-remote-service-envoy -c config.yaml -l debug
Causa: il prodotto API non è abilitato
Questo errore si verifica se il prodotto API specifico utilizzato dal proxy Envoy non è abilitato nell'ambiente specifico in cui vengono richiamate le chiamate API.
Diagnostica
Per diagnosticare il problema, procedi nel seguente modo:
- Attiva i log di debug come spiegato nel passaggio 2 sopra.
- Controlla i log Apigee Adapter for Envoy e verifica che il seguente messaggio venga visualizzato nella sezione
Authorizing request
:product: API_PRODUCT_NAME not found
Esempio di output del log di debug:
2021-01-12T08:18:08.124Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:18:08.124Z DEBUG auth/verify_api_key.go:106 fetchToken fetching: 7mQIG... 2021-01-12T08:18:08.589Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:18:08.589Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a0600), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746037188, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:18:08.589Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo target: httpbin:8080 - product: ENVOY-PRODUCT-1 not found
L'esempio precedente mostra che il prodotto API
ENVOY-PRODUCT-1
non è stato trovato in Apigee Adapter for Envoy.Per maggiori informazioni sul logging di Apigee Adapter for Envoy, consulta Logging.
- Se viene visualizzato questo messaggio durante l'autorizzazione della richiesta API, è molto probabile che indichi che il prodotto API specifico non è abilitato per un ambiente specifico in cui esegui le chiamate API.
- Per verificarlo, segui questi passaggi:
- Accedi all'UI Edge.
- Nella pagina Pubblica > Prodotti API, fai clic sul prodotto API specifico che hai utilizzato per configurare Apigee Adapter for Envoy.
- Verifica che l'ambiente specifico in cui esegui le richieste API sia abilitato nel prodotto API.
- Se l'ambiente specifico non è abilitato nel prodotto API, è questa la causa del problema.
- Se l'ambiente specifico è già abilitato, vai a Causa: percorso dell'URI del servizio di destinazione mancante nel prodotto API.
Risoluzione
Se l'ambiente specifico non è abilitato nel prodotto API, segui questi passaggi per risolvere il problema:
- Accedi all'UI Edge.
- Nella pagina Pubblica > Prodotti API, fai clic sul prodotto API specifico che hai utilizzato per configurare Apigee Adapter for Envoy.
- Nella pagina Prodotti API > Nome prodotto, fai clic su Modifica.
- Abilita l'ambiente specifico in cui vuoi effettuare richieste API selezionando la casella di controllo relativa all'ambiente pertinente.
- Fai clic su Salva.
Causa: percorso dell'URI del servizio di destinazione mancante nel prodotto API
Questo errore si verifica se il percorso URI della destinazione non è specificato nel prodotto API specifico utilizzato dal proxy Envoy.
Diagnostica
Per diagnosticare il problema, procedi nel seguente modo:
- Attiva i log di debug come spiegato nel passaggio 2 sopra.
-
Controlla i log di Apigee Adapter for Envoy e verifica che il seguente messaggio venga visualizzato per il prodotto API specifico associato a un target specifico nella sezione
Authorizing request
:no path: REQUEST_URI_PATH
Esempio di output del log di debug:
2021-01-12T08:09:02.604Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:09:02.605Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:09:02.605Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a4180), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746036507, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:09:02.605Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo1 target: httpbin:8080 - product: ENVOY-PRODUCT-1 no path: /echo1 2021-01-12T08:09:02.605Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
L'output di esempio mostra il messaggio:
no path: /echo1
Questo indica che il percorso
/echo1
non è stato trovato nel prodotto APIENVOY-PRODUCT-1
. - Se viene visualizzato il messaggio
no path: REQUEST_URI_PATH
nei log di debug di Apigee Adapter for Envoy, significa che è questa la causa del problema. In caso contrario, vai a Causa: nome host mancante nel prodotto API.
Risoluzione
Se l'URI della richiesta specifico non viene aggiunto al prodotto API per il target specifico, segui questi passaggi per risolvere il problema:
- Accedi all'UI Edge.
- Nella pagina Pubblica > Prodotti API, fai clic sul prodotto API specifico che hai utilizzato per configurare Apigee Adapter for Envoy.
- Nella pagina Prodotti API > Nome prodotto, fai clic su Modifica.
- Nel riquadro Risorse API, aggiungi l'URI della richiesta API al prodotto API.
- Monitora i log Apigee Adapter for Envoy e attendi che l'adattatore Apigee for Envoy recuperi il prodotto API aggiornato. In seguito, invia un'altra richiesta API per verificare la correzione.
Causa: nome host mancante nel prodotto API
Questo errore si verifica se la combinazione di nome host e porta di destinazione non viene aggiunta al prodotto API specifico utilizzato dal proxy Envoy.
Diagnostica
Per diagnosticare il problema, procedi nel seguente modo:
- Attiva i log di debug come spiegato nel passaggio 2 sopra.
Controlla i log di Apigee Adapter for Envoy e verifica che il seguente messaggio venga visualizzato per il prodotto API specifico associato a un target specifico nella sezione
Authorizing request
:no targets: HOSTNAME:PORT
Esempio di output del log di debug:
2021-01-12T08:12:06.019Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:12:06.019Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:12:06.019Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a4180), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746036507, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:12:06.019Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo target: httpbin1:8080 - product: ENVOY-PRODUCT-1 no targets: httpbin1:8080 2021-01-12T08:12:06.020Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
L'esempio riportato sopra mostra che la combinazione di nome host e porta
httpbin1:8080
non è stata trovata nel prodotto APIENVOY-PRODUCT-1
.- Se i log di Apigee Adapter for Envoy contengono una voce con il messaggio
no targets: HOSTNAME:PORT
durante l'autorizzazione della richiesta, questa è la causa del problema. In caso contrario, vai a Causa: chiave API mancante nell'intestazione della richiesta.
Risoluzione
Se la combinazione di nome host e porta di destinazione non viene aggiunta al prodotto API, segui questi passaggi per risolvere il problema:
- Accedi all'UI Edge.
- Nella pagina Pubblica > Prodotti API, fai clic sul prodotto API specifico che hai utilizzato per configurare Apigee Adapter for Envoy.
- Nella pagina Prodotti API > Nome prodotto, fai clic su Modifica.
Nel riquadro Target del servizio remoto Apigee, aggiungi il nome host e la porta di destinazione e fai clic su Salva.
Se non vedi la sezione Target del servizio remoto di Apigee nell'interfaccia utente, aggiungi un attributo personalizzato al prodotto API con il nome
apigee-remote-service-targets
e aggiungi il valore HOSTNAME:PORT utilizzando l'API Edge. Ad esempio:curl https://api.enterprise.apigee.com/v1/organizations/$ORG/apiproducts/$ENVOY_PRODUCT \ -X GET \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type:application/json" \ -d \ { "apiResources": [ "/echo", "/verifyApiKey" ], "approvalType": "auto", "attributes": [ { "name": "access", "value": "public" }, { "name": "apigee-remote-service-targets", "value": "localhost:8080" } ], "createdAt": 1610435989556, "createdBy": "---masked---", "description": "", "displayName": "ENVOY-PRODUCT-1", "environments": [ "test" ], "lastModifiedAt": 1612234134060, "lastModifiedBy": "---masked---", "name": "ENVOY-PRODUCT-1", "proxies": [ "remote-service" ], "scopes": [] }
- Una volta completata l'attività precedente, monitora i log dell'adattatore Apigee per Envoy e attendi che l'adattatore Apigee per Envoy recuperi il prodotto API aggiornato. In seguito, invia un'altra richiesta API per verificare la correzione.
Causa: chiave API mancante nell'intestazione della richiesta
Questo errore si verifica se la chiave API non viene trasmessa come parte delle intestazioni della richiesta.
Diagnostica
Per diagnosticare il problema, procedi nel seguente modo:
- Attiva i log di debug come spiegato nel passaggio 2 sopra.
- Controlla i log Apigee Adapter for Envoy e verifica che venga visualizzato il messaggio
[missing authentication]
nella sezioneAuthenticate error
.Esempio di output del log di debug:
2021-01-12T08:20:31.461Z DEBUG auth/auth.go:98 Authenticate: key: , claims: map[string]interface {}(nil) 2021-01-12T08:20:31.461Z DEBUG auth/auth.go:159 Authenticate error: &auth.Context{Context:(*server.Handler) (0xc0001a0600), ClientID:"", AccessToken:"", Application:"", APIProducts:[]string(nil), Expires:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, DeveloperEmail:"", Scopes:[]string(nil), APIKey:""} [missing authentication] 2021-01-12T08:20:31.461Z DEBUG server/authorization.go:205 sending denied: UNAUTHENTICATED 2021-01-12T08:20:32.448Z DEBUG server/header_context.go:68 No context header x-apigee-api, using target header : :authority
L'output di esempio mostrato sopra contiene il messaggio
[missing authentication]
. Questo messaggio indica che la chiave API non viene passata come parte dell'intestazione della richiesta. - Se i log di Apigee Adapter for Envoy contengono una voce di log con il messaggio
[missing authentication]
sotto la sezioneAuthenticate error
, allora questa è la causa del problema. In caso contrario, vai a Causa: chiave API non valida.
Risoluzione
Se l'errore [missing authentication]
veniva visualizzato nei log
Apigee Adapter for Envoy, segui questi passaggi per risolvere il problema:
- Verifica se il client ha inviato la chiave API utilizzando l'intestazione HTTP
x-api-key
nella richiesta API. In caso contrario, richiedi al client di inviare la chiave API nell'intestazione HTTPx-api-key
. - Controlla il file di configurazione Apigee Adapter for Envoy e verifica che il nome dell'intestazione della chiave API predefinita
x-api-key
sia stato modificato, ad esempio:apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | global: tls: ... tenant: ... auth: target_header: api-key
Nell'esempio precedente, il nome dell'intestazione predefinita della chiave API è stato modificato in
api-key
. In questo caso, devi passare la chiave API come parte dell'intestazioneapi-key
. - Se il nome dell'intestazione della chiave API predefinita è stato modificato, richiedi al client di utilizzare il nome aggiornato dell'intestazione della chiave API, invia un'altra richiesta API e verifica se il problema viene risolto.
Causa: chiave API non valida
Questo errore si verifica se viene trasmessa una chiave API non valida nell'intestazione della richiesta.
Diagnostica
Per diagnosticare il problema, procedi nel seguente modo:
- Attiva i log di debug come spiegato nel passaggio 2 sopra.
- Controlla i log Apigee Adapter for Envoy e verifica che venga visualizzato il messaggio
[permission denied]
nella sezioneAuthenticate error
. Generalmente viene visualizzato dopo il recupero della chiave API da parte dell'adattatore, indicato dal messaggiofetchToken fetching: API_KEY
.Esempio di output del log di debug:
2021-01-12T05:01:07.198Z DEBUG auth/auth.go:98 Authenticate: key: 123, claims: map[string]interface {}(nil) 2021-01-12T05:01:07.198Z DEBUG auth/verify_api_key.go:106 fetchToken fetching: API_KEY 2021-01-12T05:01:09.102Z DEBUG server/header_context.go:68 No context header x-apigee-api, using target header: :authority 2021-01-12T05:01:09.831Z DEBUG auth/auth.go:159 Authenticate error: &auth.Context{Context:(*server.Handler)(0xc0001640c0), ClientID:"", AccessToken:"", Application:"", APIProducts:[]string(nil), Expires:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, DeveloperEmail:"", Scopes:[]string(nil), APIKey:""} [permission denied] 2021-01-12T05:01:09.832Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
In questo esempio, la chiave API inviata nella richiesta API non era valida.
- Se i log di Apigee Adapter for Envoy contengono una voce di log con
[permission denied]
nella sezioneAuthenticate error
, significa che la chiave API passata durante la richiesta non è valida e costituisce la causa del problema. In caso contrario, vai a Causa: Apigee Adapter for Envoy non è in grado di comunicare con il proxy API di servizio remoto.
Risoluzione
Se il messaggio [permission denied]
viene osservato nella sezione Authenticate
error
dei log Apigee Adapter for Envoy, segui questi passaggi per risolvere il problema:
- Controlla la chiave API inviata nella richiesta API in base al valore della chiave API trovato nell'applicazione collegata al prodotto API.
- Se la chiave API utilizzata dal client non è valida, chiedi al client di inviare la chiave API valida.
- Se la chiave API utilizzata dal client è valida e ricevi ancora un errore HTTP
403
, contatta l'assistenza Apigee Edge per ulteriori accertamenti.
Causa: Apigee Adapter for Envoy non è in grado di comunicare con il proxy API di servizio remoto
Questo errore si verifica se Apigee Adapter for Envoy non è in grado di comunicare con il proxy API del servizio remoto se l'host di servizio remoto configurato non è valido.
Diagnostica
Per diagnosticare il problema, procedi nel seguente modo:
- Attiva i log di debug come spiegato nel passaggio 2 sopra.
-
Controlla i log Apigee Adapter for Envoy e verifica che venga visualizzato il seguente messaggio:
Error retrieving products: REQUEST_URI: no such host
Esempio di output del log di debug:
2021-01-12T08:29:06.499Z DEBUG product/manager.go:188 retrieving products from: https://foo/remote-service/products 2021-01-12T08:29:06.505Z ERROR product/manager.go:164 Error retrieving products: GET "https://foo/remote-service/pro ducts": dial tcp: lookup foo on 169.254.169.254:53: no such host github.com/apigee/apigee-remote-service-golib/product.(*manager).start.func1 /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/product/manager.go:164 github.com/apigee/apigee-remote-service-golib/util.(*Looper).Run /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/util/looper.go:87 github.com/apigee/apigee-remote-service-golib/util.(*Looper).Start.func1 /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/util/looper.go:59
In questo esempio, Apigee Adapter for Envoy non è riuscito a comunicare con il proxy API del servizio remoto perché il nome host fornito nell'URL del proxy API del server remoto non è valido, come indicato dall'errore
no such host
. - Se i log di Apigee Adapter for Envoy contengono una voce di log con il messaggio
no such host
, allora questa è la causa del problema. In caso contrario, vai a Causa: il proxy Envoy non è in grado di comunicare con Apigee Adapter for Envoy.
Risoluzione
Se gli errori precedenti vengono visualizzati nei log Apigee Adapter for Envoy, segui questi passaggi per risolvere il problema:
Controlla il file di configurazione Apigee Adapter for Envoy e verifica che l'URL del proxy API per il servizio remoto specificato sia valido.
In caso contrario, arresta Apigee Adapter for Envoy, correggi l'URL del proxy API del servizio remoto nel file di configurazione, avvia Apigee Adapter for Envoy e invia un'altra richiesta API e verifica la correzione.
Configurazione di esempio:
apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | tenant: internal_api: https://istioservices.apigee.net/edgemicro remote_service_api: https://ORG-ENV.apigee.net/remote-service org_name: ORG env_name: ENV key: KEY secret: SECRET
- Verifica che sia stato eseguito il deployment del proxy API
remote-service
nell'ambiente perimetrale pertinente. In caso contrario, esegui il deployment del proxy APIremote-service
nell'ambiente Edge pertinente e riprova. - Verifica la connettività di rete tra l'adattatore Apigee per Envoy e l'endpoint proxy API
remote-service
. Se vengono rilevati problemi di connettività di rete, contatta il team di networking e prova a risolvere il problema.
Causa: il proxy Envoy non è in grado di comunicare con Apigee Adapter for Envoy
Diagnostica
Per diagnosticare il problema, procedi nel seguente modo:
Assicurati di aver abilitato i log di debug in Envoy. In caso contrario, arresta Envoy e riavvialo, abilitando i log di debug. quindi invia un'altra richiesta API.
Deployment autonomi:
envoy -c envoy-config.yaml -l debug
Deployment basati su Kubernetes/Istio:
kubectl -n=istio-system get pods kubectl -n=istio-system exec -it INGRESS_GATEWAY_NAME bash -- curl -X POST localhost:15000/logging?connection=debug
- Controlla i log di Apigee Adapter for Envoy e verifica che esista una voce di log con il messaggio:
connecting to APIGEE_ENVOY_ADAPTER_HOST:5000
seguito da:
upstream connect error or disconnect/reset before headers. reset reason: ACTUAL_REASON
Esempio di output del log di debug:
[2021-03-23 05:44:41.867][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:769] [C4] connecting to 127.0.0.1:5000 [2021-03-23 05:44:41.867][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:785] [C4] connection in progress [2021-03-23 05:44:41.868][1303661][debug][http2] [external/envoy/source/common/http/http2/codec_impl.cc:1173] [C4] updating connection-level initial window size to 268435456 [2021-03-23 05:44:41.869][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:634] [C4] delayed connection error: 111 [2021-03-23 05:44:41.869][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:203] [C4] closing socket: 0 [2021-03-23 05:44:41.869][1303661][debug][client] [external/envoy/source/common/http/codec_client.cc:96] [C4] disconnect. resetting 0 pending requests [2021-03-23 05:44:41.869][1303661][debug][pool] [external/envoy/source/common/conn_pool/conn_pool_base.cc:314] [C4] client disconnected, failure reason: [2021-03-23 05:44:41.869][1303661][debug][router] [external/envoy/source/common/router/router.cc:1031] [C0][S6149963213555558594] upstream reset: reset reason: connection failure, transport failure reason: [2021-03-23 05:44:41.869][1303661][debug][http] [external/envoy/source/common/http/async_client_impl.cc:100] async http request response headers (end_stream=true): ':status', '200' 'content-type', 'application/grpc' 'grpc-status', '14' 'grpc-message', 'upstream connect error or disconnect/reset before headers. reset reason: connection failure'
L'esempio sopra mostra che Envoy non è riuscita a comunicare con Apigee Adapter for Envoy a causa del motivo
connection failure
. connection failure
può essere dovuto a diversi motivi. Esaminiamo ciascuno degli scenari.
Scenario 1: processo dell'adattatore non in esecuzione
Se il processo Apigee Adapter for Envoy non è in esecuzione, può verificarsi questo errore.
- Verifica che il processo Apigee Adapter for Envoy sia in esecuzione, eseguendo questo comando. Se il processo Apigee Adapter for Envoy è in esecuzione, il risultato del seguente comando dovrebbe elencarlo.
ps -ef | grep apigee-remote-service-envoy
- Se non è in esecuzione, è questo il motivo del problema.
Risoluzione
- Se il processo Apigee Adapter for Envoy non è in esecuzione, avvia Apigee Adapter for Envoy.
- Effettua un'altra richiesta API e verifica se il problema è stato risolto.
Scenario 2: il processo dell'adattatore non è in ascolto sulla porta specifica
Se il processo Apigee Adapter for Envoy non è in ascolto sulla porta specifica, può verificarsi questo errore.
Se il processo Apigee Adapter for Envoy è in esecuzione, verifica che sia presente un socket in ascolto sulla porta 5000: APIGEE_ENVOY_ADAPTER_HOST:5000
. Puoi eseguire il comando netstat
per verificare quanto segue:
sudo netstat -lnp | grep 5000
Esempio di output:
sudo netstat -lnp | grep 5000 tcp6 0 0 :::5000 :::* LISTEN 1596530/./apigee-re
Se sulla porta 5000 non c'è nessun socket in ascolto, potrebbe essere questo il motivo del problema.
Risoluzione
- Interrompi Apigee Adapter per Envoy e riavvialo.
- Effettua un'altra richiesta API e verifica se il problema è stato risolto.
Scenario 3: connettività di rete tra Envoy e Apigee Adapter for Envoy
- Verifica la connettività di rete tra Envoy e Apigee Adapter for Envoy:
ssh $ENVOY_HOST telnet $APIGEE_ENVOY_ADAPTER_HOST 5000
Se Telnet riesce a stabilire una connessione TCP ad Apigee Adapter for Envoy, verrà visualizzato un output simile al seguente:
telnet $APIGEE_ENVOY_ADAPTER_HOST 5000 Trying ::1... Connected to localhost. Escape character is '^]'.
- L'errore
Connection timed out
con Telnet indica un problema di connettività di rete tra Envoy e Apigee Adapter for Envoy.
Risoluzione
Se riscontri problemi di connettività di rete tra Envoy e Apigee Adapter for Envoy, contatta il tuo team di networking e prova a risolvere il problema.
Se il problema persiste, vai alla pagina Devi raccogliere dati diagnostici.
Devi raccogliere dati diagnostici
Se il problema persiste dopo aver seguito le istruzioni riportate sopra, raccogli le seguenti informazioni diagnostiche e contatta l'assistenza Apigee Edge:
-
Prodotto Apigee utilizzato:
Esempio: Apigee Edge Cloud, Apigee OPDK, Apigee hybrid, Apigee X
- Organizzazione e ambiente Apigee
Definizione del prodotto API letta mediante l'API Edge:
curl -i -u $USER:$PASSWORD $MANAGEMENT_SERVER_ENDPOINT/v1/organizations/$ORGANIZATION/apiproducts/$API_PRODUCT
Riferimento: API Apigee Edge
Avvia una sessione di traccia nel proxy API
remote-service
utilizzando l'interfaccia utente di Apigee Edge. Riproduci il problema e condividi il file XML della sessione di traccia.Riferimento: Utilizzo dello strumento Trace | Apigee Edge
Log Apigee Adapter for Envoy (log completi relativi al periodo di tempo specificato)
Deployment autonomi:
# by default Apigee Envoy write logs to stdout and stderr, check your deployment configuration and collect logs accordingly
Deployment basati su Kubernetes/Istio:
kubectl -n=apigee get pods kubectl -n=apigee logs APIGEE_REMOTE_SERVICE_ENVOY_POD_NAME > apigee-remote-service-envoy.log
- Una richiesta API inviata al proxy Envoy utilizzando un comando
curl
(l'output completo del comandocurl
):curl -v ENVOY_PROXY_ENDPOINT
- Una richiesta API inviata al servizio di destinazione utilizzando un comando
curl
(l'output completo del comandocurl
):curl -v TARGET_SERVICE_ENDPOINT