Você está lendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. info
Vídeos
| Vídeo | Descrição |
|---|---|
| 500 Internal Server Error - caused by backend | Demonstra um 500 Internal Server Error em tempo real causado pelo servidor de back-end, além das etapas para solucionar e resolver o erro. |
Sintoma
O aplicativo cliente recebe um código de status HTTP de 500 com a mensagem
Internal Server Error como resposta para chamadas de API.
O código de status HTTP 500 é uma resposta de erro genérica. Isso significa que o servidor
encontrou uma condição inesperada que o impediu de atender à solicitação. Esse erro é
geralmente é retornado pelo servidor quando nenhum outro código de erro é adequado.
Mensagens de erro
O aplicativo cliente recebe o seguinte código de resposta:
HTTP/1.1 500 Internal Server Error
Além disso, você pode observar uma mensagem de erro semelhante à mostrada abaixo:
Exemplo 1
Exemplo de resposta do servidor de back-end 1
{"errorMessage":"Sorry either your e-mail or password didn't match.",
"errorParameters":"{}",
"errorCode":"500",
"errorKey":"INVALID_EMAILPASSWORD"}Exemplo 2
Exemplo de resposta do servidor de back-end 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>
Causas possíveis
O 500 Internal Server Error pode ser retornado pelo servidor de back-end devido a um
número de causas. Este manual explica como solucionar problemas usando etapas comuns e resolver esse
erro, independentemente da causa.
As possíveis causas desse problema são as seguintes:
| Causa | Descrição | Instruções de solução de problemas aplicáveis para |
|---|---|---|
| Erro no servidor de back-end | O servidor de back-end pode falhar por algum motivo. | Usuários da nuvem pública e privada do Edge |
Etapas comuns do diagnóstico
Use uma das seguintes ferramentas/técnicas para diagnosticar esse erro:
Monitoramento de APIs
Procedimento 1: usar o monitoramento de APIs
Para diagnosticar o erro usando o monitoramento de APIs:
- Faça login na interface da Apigee Edge como um usuário com um papel apropriado.
Alterne para a organização em que você quer investigar o problema.
- Acesse a página Analisar > Monitoramento de APIs > Investigar.
- Selecione o período específico em que você observou os erros.
Trace o código de falha em relação ao tempo.
Selecione uma célula que tenha o código de falha
messaging.adaptors.http.flow.ErrorResponseCodeconforme mostrado abaixo:
As informações sobre o código de falha
messaging.adaptors.http.flow.ErrorResponseCodesão mostradas abaixo:
Clique em Ver registros e expanda a linha da solicitação com falha.
- Na janela Registros, anote os seguintes detalhes:
- ID da mensagem de solicitação
- Código de status:
500 - Origem da falha:
target - Código de falha:
messaging.adaptors.http.flow.ErrorResponseCode
Trace
Procedimento 2: usar a ferramenta Trace
Para diagnosticar o erro usando a ferramenta Trace:
- Ative a sessão de trace e
- Aguarde a ocorrência do erro
500 Internal Server Errorcom o código de erromessaging.adaptors.http.flow.ErrorResponseCodeou - Se você puder reproduzir o problema, faça a chamada de API para reproduzir o problema
500 Internal Server Error
- Aguarde a ocorrência do erro
Verifique se a opção Mostrar todos os FlowInfos está ativada:

- Selecione uma das solicitações com falha e examine o trace.
- Navegue pelas diferentes fases do trace e localize onde a falha ocorreu.
O erro geralmente é encontrado em um fluxo após a fase Resposta recebida do servidor de destino conforme mostrado abaixo:

- Navegue até a fase AX (dados de análise gravados) no trace e clique nela.
Role para baixo até a seção Cabeçalhos de resposta de detalhes da fase e determine os valores de X-Apigee-fault-code e X-Apigee-fault-source, e X-Apigee-Message-ID , conforme mostrado abaixo:

- Anote os valores de X-Apigee-fault-code, X-Apigee-fault-source, e X-Apigee-Message-ID:
| Cabeçalhos de resposta | Valor |
|---|---|
| X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
| X-Apigee-fault-source | target |
| X-Apigee-Message-ID | MESSAGE_ID |
NGINX
Procedimento 3: usar registros de acesso do NGINX
Para diagnosticar o erro usando registros de acesso do NGINX:
- Se você for um usuário da nuvem privada, poderá usar os registros de acesso do NGINX para determinar
as principais informações sobre o erro HTTP
500 Internal Server Error. Verifique os registros de acesso do NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log- Pesquise para ver se há erros
500com o código de erromessaging.adaptors.http.flow.ErrorResponseCodedurante um período específico (se o problema ocorreu no passado) ou se ainda há solicitações com falha com500. Se você encontrar erros
500com o X-Apigee-fault-code correspondente ao valor demessaging.adaptors.http.flow.ErrorResponseCode, então determine o valor de X-Apigee-fault-source.Exemplo de erro 500 do registro de acesso do NGINX:
A entrada de exemplo acima do registro de acesso do NGINX tem os seguintes valores para X-Apigee-fault-code e X-Apigee-fault-source:
Cabeçalhos Valor X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCodeX-Apigee-fault-source target
Causa: erro no servidor de back-end
Diagnóstico
O 500 Internal Server Error respondido pelo servidor de back-end pode ser
causado por vários motivos. É necessário diagnosticar cada situação de forma independente.
- Determine o código de falha, a origem da falha para o erro observado usando o monitoramento de APIs, a ferramenta Trace ou os registros de acesso do NGINX, conforme explicado em Etapas comuns do diagnóstico.
- Se a origem da falha for
targete o código de falha formessaging.adaptors.http.flow.ErrorResponseCode, isso indica que o erro é retornado pelo servidor de back-end. - Você pode usar uma das etapas a seguir para diagnosticar a causa do problema:
Trace
Como usar o Trace :
Se você tiver uma sessão de trace para a falha, siga estas etapas:
- No trace, selecione a solicitação de API que falhou com
500 Internal Server Error. Selecione a fase Resposta recebida do servidor de destino na solicitação de API com falha, conforme mostrado na figura abaixo:
Role para baixo até a seção Detalhes da fase e verifique o conteúdo da resposta, que contém a resposta do servidor de back-end.
Exemplo de conteúdo da resposta :
<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>
Na resposta acima, observe que a mensagem de erro do servidor de back-end é Não autorizado. Isso indica que o usuário pode ter transmitido credenciais inválidas e, por isso, está recebendo esse erro.
Chamar servidor de back-end
Como fazer uma chamada direta para o servidor de back-end :
É possível fazer uma chamada direta para o servidor de back-end e:
- Validar se você está recebendo a mesma
500 Internal Server Errorresposta recebida quando a solicitação foi feita pelo Apigee Edge - Verificar a mensagem de erro (resposta) recebida do servidor de back-end
Siga estas etapas para fazer a chamada direta para o servidor de back-end:
- Verifique se você tem todos os cabeçalhos, parâmetros de consulta e quaisquer credenciais necessárias que precisam ser transmitidas ao servidor de back-end como parte da solicitação.
- Se o serviço de back-end for acessível publicamente, use o
curlcomando, o Postman ou qualquer outro cliente REST e invoque a API do servidor de back-end diretamente. Se o servidor de back-end só puder ser acessado pelos processadores de mensagens, então você pode usar o comando
curl, o Postman ou qualquer outro cliente REST e invocar a API do servidor de back-end diretamente do processador de mensagens.- Valide se o serviço de back-end está realmente retornando
500 Internal Server Errore verifique a mensagem de erro (resposta) retornada pelo servidor de back-end e determine a causa desse erro.
Registros do servidor de back-end
Como usar registros do servidor de back-end
- Analise os registros do servidor de back-end e tente receber mais detalhes sobre o erro e a causa dele.
- Se possível, ative o modo de depuração no servidor de back-end para receber mais detalhes sobre o erro e a causa.
- No trace, selecione a solicitação de API que falhou com
Verifique se você está usando o encadeamento de proxy no endpoint de destino específico do proxy de API com falha. Ou seja, se o servidor/endpoint de destino está invocando outro proxy no Apigee Edge. Para determinar isso:
Se você tiver o trace da solicitação com falha, navegue até a fase Solicitação enviada ao servidor de destino e clique em Mostrar Curl.
- A janela Curl para solicitação enviada ao servidor de destino é aberta. Nela, é possível determinar o alias do host do servidor de destino.
- Analise o endpoint de destino do proxy de API e verifique se o URL do servidor de back-end ou o nome do host no servidor de destino aponta para outro proxy ou para o seu próprio servidor de back-end.
- Se o alias do host do servidor de destino estiver apontando para um alias de host virtual, ele
será encadeado por proxy. Nesse caso, repita todas as etapas acima para o
proxy encadeado até determinar o que realmente está causando o
500 Internal Server Error. Nesses casos,500 Internal Server Errortambém pode ocorrer em outros proxies encadeados em outras etapas, que podem ser diagnosticados e resolvidos usando as instruções fornecidas neste manual ou no manual 500 Internal Server Error. - Se o alias do host do servidor de destino apontar para o servidor de back-end, acesse Resolução.
Resolução
Se for constatado que o erro 500 está vindo do servidor de back-end, então
trabalhe com a equipe do servidor de back-end para corrigir o problema adequadamente.
No exemplo discutido acima, talvez seja necessário solicitar que os usuários transmitam credenciais válidas para corrigir esse problema.
Pontos importantes a serem observados
- A mensagem de erro real retornada pelo servidor de back-end para
500 Internal Server Errorsó poderá ser visualizada se você tiver capturado a sessão de trace para as solicitações com falha. - A resposta do servidor de back-end não será registrada no monitoramento de APIs, nos registros de acesso do NGINX ou nos registros do processador de mensagens por motivos de segurança.
- É possível analisar os registros do servidor de back-end ou ativar o modo de depuração no back-end para receber mais
detalhes sobre o
500 Internal Server Errore/ou visualizar a mensagem de erro retornada pelo servidor de back-end.
É necessário coletar informações de diagnóstico
Se o problema persistir mesmo depois de seguir as instruções acima, reúna as seguintes informações de diagnóstico e entre em contato com o suporte do Apigee Edge.
Se você for um usuário da nuvem pública, forneça as seguintes informações:
- Nome da organização
- Nome do ambiente
- Nome do proxy da API
- Comando
curlcompleto para reproduzir o erro500 - Arquivo de trace contendo as solicitações com
500 Internal Server Error - Se os erros
500não estiverem ocorrendo no momento, forneça o período com as informações de fuso horário em que os erros500ocorreram no passado.
Se você for um usuário da nuvem privada, forneça as seguintes informações:
- Mensagem de erro completa observada para as solicitações com falha
- Nome da organização, do ambiente e do proxy de API para o qual você está observando
500erros - Pacote de proxy de API
- Arquivo de trace contendo as solicitações com
500 Internal Server Error - Registros de acesso do NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logEm que: ORG, ENV, e PORT# são substituídos por valores reais.
- Registros do sistema do processador de mensagens
/opt/apigee/var/log/edge-message-processor/logs/system.log - O período com as informações de fuso horário em que os erros
500ocorreram.