Esta é a documentação do Apigee Edge.
Acesse
Documentação da Apigee X. informações
Sintoma
O Envoy Proxy falha com o erro HTTP 403 Forbidden
quando chamado por meio de
Adaptador da Apigee para Envoy.
Mensagem de erro
A seguinte mensagem de erro é exibida:
HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 03 Nov 2020 00:20:10 GMT server: istio-envoy
Causas possíveis
O proxy Envoy vai gerar um erro HTTP 403
se uma das condições a seguir
ocorrer:
Causa | Descrição | Instruções de solução de problemas aplicáveis para |
---|---|---|
O produto da API não está ativado | O produto da API não está ativado para o ambiente específico. | Usuários de nuvem pública e privada de borda |
Caminho do URI do serviço de destino ausente no produto da API | O caminho do URI do serviço de destino está ausente ou não foi adicionado ao produto de API em API do Google Cloud. | Usuários de nuvem pública e privada de borda |
Nome do host ausente no produto da API | O nome do host fornecido na solicitação da API do cliente está ausente no produto de API na Apigee destinos de serviços remotos. | Usuários de nuvem pública e privada de borda |
Chave de API ausente no cabeçalho da solicitação | A chave de API não é transmitida no cabeçalho HTTP x-api-key . |
Usuários de nuvem pública e privada de borda |
Chave de API inválida | A chave de API transmitida como parte da solicitação é inválida. | Usuários de nuvem pública e privada de borda |
O adaptador da Apigee para Envoy não consegue se comunicar com o proxy de API de serviço remoto | O adaptador da Apigee para Envoy não consegue se comunicar com o proxy de API de serviço remoto. | Usuários de nuvem pública e privada de borda |
O proxy Envoy não consegue se comunicar com o adaptador da Apigee para Envoy | O proxy Envoy não consegue se comunicar com o adaptador da Apigee para Envoy | Usuários de nuvem pública e privada de borda |
Antes de começar
- Verifique se você está recebendo a mensagem de resposta
403 Forbidden
do proxy Envoy. Por exemplo: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
Ative os registros de depuração:
Verifique se você ativou os registros de depuração no adaptador da Apigee para Envoy para capturar mais detalhes sobre o erro. Caso contrário, interrompa o adaptador da Apigee para Envoy e o reinicie, ativando os registros de depuração usando o seguinte comando:
apigee-remote-service-envoy -c config.yaml -l debug
Causa: o produto da API não está ativado
Esse erro ocorrerá se o produto de API específico usado pelo proxy Envoy não estiver ativado no ambiente específico em que as chamadas da API são invocadas.
Diagnóstico
Siga estas etapas para diagnosticar o problema:
- Ative os registros de depuração, conforme explicado na etapa 2 acima.
- Verifique os registros do adaptador da Apigee para Envoy e confirme se a mensagem a seguir é exibida
na seção
Authorizing request
:product: API_PRODUCT_NAME not found
Exemplo de saída do registro de depuração:
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
O exemplo acima mostra que o produto de API
ENVOY-PRODUCT-1
não foi encontrado em Adaptador da Apigee para Envoy.Para mais informações sobre o adaptador da Apigee para geração de registros do Envoy, consulte Geração de registros.
- Se você vir essa mensagem ao autorizar a solicitação de API, é provável que ela indique se o produto de API específico não está habilitado para um ambiente específico no qual você fazer as chamadas de API.
- Siga estas etapas para verificar isso:
- Faça login na IU do Edge.
- Na página Publicar > produtos de API, clique no produto de API específico usado para configurar o adaptador da Apigee para Envoy.
- Verifique se o ambiente específico em que você está fazendo as solicitações de API está ativado no produto de API.
- Se o ambiente específico não estiver ativado no produto da API, essa será a causa para esse problema.
- Se o ambiente específico já estiver ativado, acesse Causa: caminho de URI do serviço de destino ausente no produto de API.
Resolução
Se o ambiente específico não estiver ativado no produto da API, execute as etapas a seguir para resolver o problema:
- Faça login na IU do Edge.
- Na página Publicar > página de produtos de API, clique no produto de API específico que você usou para configurar o adaptador da Apigee para Envoy.
- Na página Produtos da API > Nome do produto, clique em Editar.
- Ative o ambiente específico em que você quer fazer solicitações de API selecionando na caixa de seleção do ambiente relevante.
- Clique em Salvar.
Causa: caminho de URI do serviço de destino ausente no produto de API
Esse erro ocorrerá se o caminho do URI do destino não for especificado no produto de API específico usado. pelo Envoy Proxy.
Diagnóstico
Siga estas etapas para diagnosticar o problema:
- Ative os registros de depuração, conforme explicado na etapa 2 acima.
-
Verifique os registros do adaptador da Apigee para Envoy e confirme se a mensagem a seguir é exibido para o produto de API específico associado a um destino específico na seção
Authorizing request
:no path: REQUEST_URI_PATH
Exemplo de saída do registro de depuração:
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)
O exemplo de saída mostra a mensagem:
no path: /echo1
Isso indica que o caminho
/echo1
não foi encontrado no produto de APIENVOY-PRODUCT-1
. - Se a mensagem
no path: REQUEST_URI_PATH
aparecer Essa é a causa desse problema nos registros de depuração do adaptador da Apigee para Envoy. Caso contrário, acesse Causa: nome do host ausente no produto de API.
Resolução
Se o URI de solicitação específica não for adicionado ao produto da API para o destino específico, siga estas etapas para resolver o problema:
- Faça login na IU do Edge.
- Na página Publicar > produtos de API, clique no produto de API específico usado para configurar o adaptador da Apigee para Envoy.
- Na página Produtos da API > Nome do produto, clique em Editar.
- No painel Recursos de API, adicione o URI da solicitação de API ao produto da API.
- Monitorar os registros do adaptador da Apigee para Envoy e aguardar até que o adaptador da Apigee para Envoy busca o produto de API atualizado. Em seguida, envie outra solicitação de API para verificar a correção.
Causa: nome do host ausente no produto de API
Esse erro ocorrerá se a combinação de porta e nome do host de destino não for adicionada ao Produto da API usado pelo proxy Envoy.
Diagnóstico
Siga estas etapas para diagnosticar o problema:
- Ative os registros de depuração, conforme explicado na etapa 2 acima.
Verifique os registros do adaptador da Apigee para Envoy e confirme se a mensagem a seguir é exibido para o produto de API específico associado a um destino específico na seção
Authorizing request
:no targets: HOSTNAME:PORT
Exemplo de saída do registro de depuração:
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)
O exemplo acima mostra que a combinação de nome do host e porta
httpbin1:8080
não foi encontrado no produto de APIENVOY-PRODUCT-1
.- Se os registros do adaptador da Apigee para Envoy contiverem uma entrada com a mensagem
no targets: HOSTNAME:PORT
ao autorizar a solicitação, esse será o causa do problema. Caso contrário, acesse Causa: chave de API ausente no cabeçalho da solicitação.
Resolução
Se a combinação de porta e nome do host de destino não for adicionada ao produto da API, execute o etapas a seguir para resolver o problema:
- Faça login na IU do Edge.
- Na página Publicar > produtos de API, clique no produto de API específico usado para configurar o adaptador da Apigee para Envoy.
- Na página Produtos da API > Nome do produto, clique em Editar.
No painel Apigee Remote service targets, adicione o nome do host de destino e porta e clique em Salvar.
Se você não encontrar a seção Apigee Remote service targets na interface, adicionar um atributo personalizado ao produto da API com o nome
apigee-remote-service-targets
e adicione HOSTNAME:PORT usando a API Edge. Exemplo: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": [] }
- Quando a tarefa acima for concluída, monitore os registros do adaptador da Apigee para Envoy e aguarde até que o O adaptador da Apigee para Envoy busca o produto de API atualizado. Depois, envie outra API para verificar a correção.
Causa: chave de API ausente no cabeçalho da solicitação
Esse erro ocorrerá se a chave de API não for transmitida como parte dos cabeçalhos da solicitação.
Diagnóstico
Siga estas etapas para diagnosticar o problema:
- Ative os registros de depuração, conforme explicado na etapa 2 acima.
- Verifique os registros do adaptador da Apigee para Envoy e verifique se você vê
[missing authentication]
mensagem noAuthenticate error
nesta seção.Exemplo de saída do registro de depuração:
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
O exemplo de saída mostrado acima tem a mensagem
[missing authentication]
. Essa mensagem indica que a chave de API não é transmitida como parte do cabeçalho da solicitação. - Se os registros do adaptador da Apigee para Envoy contiverem uma entrada de registro com a mensagem
[missing authentication]
na seçãoAuthenticate error
, isso será a causa do problema. Caso contrário, acesse Causa: chave de API inválida.
Resolução
Se o erro [missing authentication]
for exibido no
Adaptador da Apigee para registros Envoy, execute as etapas a seguir para resolver o problema:
- Verifique se o cliente enviou a chave de API usando o cabeçalho HTTP
x-api-key
no a solicitação de API. Caso contrário, solicite que o cliente envie a chave de API no cabeçalho HTTP.x-api-key
: - Verifique o arquivo de configuração do adaptador da Apigee para Envoy e se a chave de API padrão
o nome do cabeçalho
x-api-key
foi alterado para um exemplo:apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | global: tls: ... tenant: ... auth: target_header: api-key
No exemplo acima, o nome do cabeçalho da chave de API padrão foi modificado para
api-key
: Nesse caso, você precisa passar a chave de API como parte do cabeçalho.api-key
: - Se o nome do cabeçalho da chave de API padrão tiver sido alterado, solicite que o cliente use o Nome do cabeçalho da chave de API, enviar outra solicitação de API e verificar se isso resolve o problema.
Causa: chave de API inválida
Esse erro ocorrerá se uma chave de API inválida for transmitida como parte do cabeçalho da solicitação.
Diagnóstico
Siga estas etapas para diagnosticar o problema:
- Ative os registros de depuração, conforme explicado na etapa 2 acima.
- Verifique os registros do adaptador da Apigee para Envoy e confirme se a mensagem é exibida
[permission denied]
na seçãoAuthenticate error
. Isso geralmente é exibido depois que a chave de API é buscada pelo adaptador, o que é indicado por a mensagemfetchToken fetching: API_KEY
.Exemplo de saída do registro de depuração:
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)
Neste exemplo, a chave de API enviada na solicitação de API não era válida.
- Se os registros do adaptador da Apigee para Envoy contiverem uma entrada de registro com
[permission denied]
na seçãoAuthenticate error
, isso indica que a chave de API transmitida como parte da solicitação é inválida e é a causa do problema. Caso contrário, acesse Causa: adaptador da Apigee para Envoy não consegue se comunicar com o proxy de API de serviço remoto.
Resolução
Se a mensagem [permission denied]
for observada na seção Authenticate
error
nos registros do adaptador da Apigee para Envoy, siga as etapas a seguir.
para resolver o problema:
- Verifique a chave de API enviada na solicitação de API em relação ao valor da chave de API encontrado no aplicativo conectado ao produto da API.
- Se a chave de API usada pelo cliente não for válida, solicite que o cliente envie essa chave.
- Se a chave de API usada pelo cliente for válida e se você ainda estiver vendo um erro
403
. Entre em contato com o suporte do Apigee Edge para investigar o problema.
Causa: o adaptador da Apigee para Envoy não consegue se comunicar com o proxy de API de serviço remoto
Esse erro ocorrerá se o adaptador da Apigee para Envoy não conseguir se comunicar com o servidor o proxy da API de serviço se o host do serviço remoto configurado for inválido.
Diagnóstico
Siga estas etapas para diagnosticar o problema:
- Ative os registros de depuração, conforme explicado na etapa 2 acima.
-
Verifique os registros do adaptador da Apigee para Envoy e confirme se a seguinte mensagem é exibida:
Error retrieving products: REQUEST_URI: no such host
Exemplo de saída do registro de depuração:
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
Neste exemplo, o adaptador da Apigee para Envoy não conseguiu se comunicar com o proxy de API de serviço remoto porque o nome do host fornecido no proxy de API do servidor remoto O URL não é válido, conforme indicado pelo erro
no such host
. - Se os registros do adaptador da Apigee para Envoy contiverem uma entrada de registro com a mensagem
no such host
, essa será a causa do problema. Caso contrário, acesse Causa: o proxy Envoy não consegue se comunicar com o adaptador da Apigee para Envoy.
Resolução
Se os erros acima forem exibidos nos registros do adaptador da Apigee para Envoy, faça o seguinte: etapas para resolver o problema:
Verifique o arquivo de configuração do adaptador da Apigee para Envoy e confirme se o O URL do proxy de API de serviço remoto é válido.
Caso contrário, interrompa o adaptador da Apigee para Envoy. Corrija o URL do proxy de API de serviço remoto no de configuração, inicie o adaptador da Apigee para Envoy, envie outra solicitação de API e verificar a correção.
Exemplo de configuração:
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
- Verifique se o proxy de API
remote-service
está implantado no Edge relevante. de nuvem. Caso contrário, implante o proxy de APIremote-service
no Edge relevante. e tente novamente. - Verifique a conectividade de rede entre o adaptador da Apigee para Envoy e o
remote-service
endpoint de proxy de API. Se houver conectividade de rede problemas encontrados, entre em contato com a equipe de rede e tente resolver o problema.
Causa: o proxy Envoy não consegue se comunicar com o adaptador da Apigee para Envoy
Diagnóstico
Siga estas etapas para diagnosticar o problema:
Verifique se você ativou os registros de depuração no Envoy. Caso contrário, interrompa o Envoy, inicie-o novamente ativar registros de depuração. Em seguida, envie outra solicitação de API.
Implantações independentes:
envoy -c envoy-config.yaml -l debug
Implantações baseadas no 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
- Verifique os registros do adaptador da Apigee para Envoy e confirme se há uma entrada de registro com a mensagem:
connecting to APIGEE_ENVOY_ADAPTER_HOST:5000
que é seguida por:
upstream connect error or disconnect/reset before headers. reset reason: ACTUAL_REASON
Exemplo de saída do registro de depuração:
[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'
O exemplo acima mostra que o Envoy não conseguiu se comunicar Adaptador da Apigee para Envoy pelo motivo
connection failure
. - O
connection failure
pode ocorrer por vários motivos. Vamos conhecer cada um dos cenários.
Cenário 1: o processo do adaptador não está em execução
Se o processo do adaptador da Apigee para Envoy não estiver em execução, esse erro poderá ocorrer.
- Para verificar se o processo do adaptador da Apigee para Envoy está sendo executado, execute o seguinte:
kubectl. Se o processo do adaptador da Apigee para Envoy estiver em execução, o resultado a seguir
deve listá-lo.
ps -ef | grep apigee-remote-service-envoy
- Se ele não estiver sendo exibido, essa é a causa do problema.
Resolução
- Se o processo do adaptador da Apigee para Envoy não estiver em execução, inicie o Adaptador da Apigee para Envoy.
- Faça outra solicitação de API e verifique se o problema foi corrigido.
Cenário 2: o processo do adaptador não está detectando na porta específica
Se o processo do adaptador da Apigee para Envoy não estiver detectando na porta específica, esse erro poderá ocorrer.
Se o processo do adaptador da Apigee para Envoy estiver em execução, verifique se há um soquete detectando
porta 5000: APIGEE_ENVOY_ADAPTER_HOST:5000
. É possível executar
netstat
para verificar isso:
sudo netstat -lnp | grep 5000
Exemplo de resposta:
sudo netstat -lnp | grep 5000 tcp6 0 0 :::5000 :::* LISTEN 1596530/./apigee-re
Se não houver um soquete detectando na porta 5000, esse pode ser o motivo do problema.
Resolução
- Interrompa o adaptador da Apigee para Envoy e inicie-o novamente.
- Faça outra solicitação de API e verifique se o problema foi corrigido.
Cenário 3: conectividade de rede entre o Envoy e o adaptador da Apigee para Envoy
- Verifique a conectividade de rede entre o Envoy e o adaptador da Apigee para Envoy:
ssh $ENVOY_HOST telnet $APIGEE_ENVOY_ADAPTER_HOST 5000
Se o telnet pudesse fazer uma conexão TCP com o adaptador da Apigee para Envoy será exibida uma saída semelhante a esta:
telnet $APIGEE_ENVOY_ADAPTER_HOST 5000 Trying ::1... Connected to localhost. Escape character is '^]'.
- Se você observar o erro
Connection timed out
com telnet, isso indica há um problema de conectividade de rede entre o Envoy e o adaptador da Apigee para Envoy.
Resolução
Se houver problemas de conectividade de rede entre o Envoy e o adaptador da Apigee para Envoy, entre em contato com sua equipe de rede e tente resolver o problema.
Se o problema persistir, acesse É necessário coletar informações de diagnóstico.
É necessário coletar informações de diagnóstico
Se o problema persistir depois de seguir as instruções acima, faça o seguinte diagnóstico e entre em contato com o suporte do Apigee Edge:
-
Produto da Apigee usado:
Exemplo:Apigee Edge Cloud, Apigee OPDK, Apigee híbrida, Apigee X
- Organização e ambiente da Apigee
leitura da definição do produto da API usando a API Edge:
curl -i -u $USER:$PASSWORD $MANAGEMENT_SERVER_ENDPOINT/v1/organizations/$ORGANIZATION/apiproducts/$API_PRODUCT
Referência: APIs Apigee Edge
Inicie uma sessão de rastreamento no proxy de API
remote-service
usando o Interface do Apigee Edge. Reproduza o problema e compartilhe o arquivo XML da sessão do Trace.Referência: Como usar a ferramenta Trace | Apigee Edge (em inglês)
Registros completos do adaptador da Apigee para Envoy (registros completos relacionados ao período)
Implantações independentes:
# by default Apigee Envoy write logs to stdout and stderr, check your deployment configuration and collect logs accordingly
Implantações baseadas no Kubernetes/Istio:
kubectl -n=apigee get pods kubectl -n=apigee logs APIGEE_REMOTE_SERVICE_ENVOY_POD_NAME > apigee-remote-service-envoy.log
- Uma solicitação de API enviada ao proxy Envoy usando um comando
curl
(a saída completa do comandocurl
):curl -v ENVOY_PROXY_ENDPOINT
- Uma solicitação de API enviada ao serviço de destino usando um comando
curl
(o comando saída do comandocurl
):curl -v TARGET_SERVICE_ENDPOINT