Você está vendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. informações
Vídeos
Video | Descrição |
---|---|
500 Erro interno do servidor causado por back-end | Demonstra um 500 Internal Server Error em tempo real causado pelo servidor de back-end, bem como as etapas para solucionar o erro. |
Sintoma
O aplicativo cliente recebe um código de status HTTP de 500
com a mensagem Internal Server Error
como uma 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 este código de resposta:
HTTP/1.1 500 Internal Server Error
Além disso, talvez você veja uma mensagem de erro semelhante à mostrada abaixo:
Amostra 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"}
Amostra 2
Exemplo de resposta do servidor de back-end no 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 várias causas. Neste manual, explicamos como solucionar problemas usando etapas comuns e resolver esse erro, seja qual for a 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 de nuvem privada e pública 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 do Apigee Edge como usuário com um papel apropriado.
Alterne para a organização em que você quer investigar o problema.
- Navegue até a página Analisar > Monitoramento de API > Investigar.
- Selecione o período específico em que você observou os erros.
Trace o Código de falha em relação a Time.
Selecione uma célula que tenha o código de falha
messaging.adaptors.http.flow.ErrorResponseCode
, conforme mostrado abaixo:As informações sobre o código de falha
messaging.adaptors.http.flow.ErrorResponseCode
são mostradas conforme mostrado abaixo:Clique em Ver registros e expanda a linha da solicitação com falha.
- Na janela Registros, observe os seguintes detalhes:
- Solicitar ID da mensagem
- Código de status:
500
- Origem da falha:
target
- Código de falha:
messaging.adaptors.http.flow.ErrorResponseCode
Trace
Procedimento 2: uso da ferramenta Trace
Para diagnosticar o erro usando a ferramenta Trace:
- Ative a sessão de rastreamento e:
- Aguarde a ocorrência do erro
500 Internal Server Error
com o código de erromessaging.adaptors.http.flow.ErrorResponseCode
ou - Se for possível reproduzir o problema, faça a chamada de API para reproduzi-lo
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 rastro.
- Navegue pelas diferentes fases do rastro e localize onde a falha ocorreu.
Você encontrará o erro normalmente em um fluxo após a fase Resposta recebida do servidor de destino, conforme mostrado abaixo:
- Navegue até a fase AX (Dados do Analytics registrados) no rastreamento e clique nela.
Role para baixo até a seção Stage Details Response Headers e determine os valores de X-Apigee-fault-code, X-Apigee-fault-source e X-Apigee-Message-ID, conforme mostrado abaixo:
- Observe 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 no 3: uso de registros de acesso do NGINX
Para diagnosticar o erro usando os registros de acesso do NGINX:
- Se você for um usuário de nuvem privada, poderá usar os registros de acesso do NGINX para determinar as principais informações sobre o 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 se há algum erro
500
com o códigomessaging.adaptors.http.flow.ErrorResponseCode
durante um período específico (se o problema tiver acontecido anteriormente) ou se ainda há alguma solicitação com falha com500
. Se você encontrar erros
500
com o X-Apigee-fault-code correspondente ao valor demessaging.adaptors.http.flow.ErrorResponseCode
, determine o valor de X-Apigee-fault-source.Exemplo de erro 500 do registro de acesso do NGINX:
A entrada de amostra acima do registro de acesso do NGINX tem os seguintes valores para X-Apigee-fault-code e X-Apigee-fault-code :
Cabeçalhos Valor X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
X-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. Você precisará diagnosticar cada situação de forma independente.
- Determine o código de falha, a origem da falha do erro observado usando o monitoramento de APIs, a ferramenta de rastreamento ou os registros de acesso do NGINX, conforme explicado em Etapas comuns de diagnóstico.
- Se a Origem da falha for
target
e o Código de falha formessaging.adaptors.http.flow.ErrorResponseCode
, isso indica que o erro foi retornado pelo servidor de back-end. - Você pode usar uma das seguintes etapas para diagnosticar a causa do problema:
Trace
Como usar o Trace:
Se você tiver uma sessão do Trace para a falha, execute as seguintes 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 Stage Details e verifique Response Content,que contém a resposta do servidor de back-end.
Exemplo de conteúdo de 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 é Not Autorizado. Isso indica que o usuário pode ter passado credenciais inválidas, e é por isso que ele está recebendo esse erro.
Chamar o servidor de back-end
Fazer uma chamada direta para o servidor de back-end:
É possível fazer uma chamada direta ao servidor de back-end e:
- Valide se você está recebendo a mesma resposta
500 Internal Server Error
que foi 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 ao servidor de back-end:
- Verifique se você tem todos os cabeçalhos, parâmetros de consulta e credenciais que precisam ser transmitidos ao servidor de back-end como parte da solicitação.
- Se o serviço de back-end estiver acessível publicamente, será possível usar o comando
curl
, o Postman ou qualquer outro cliente REST e invocar a API do servidor de back-end diretamente. Se o servidor de back-end só puder ser acessado pelos processadores de mensagens, você poderá 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 realmente está retornando
500 Internal Server Error
, 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
- Revise os registros do servidor de back-end e tente conseguir mais detalhes sobre o erro e a causa dele.
- Se possível, ative o modo de depuração no servidor de back-end para saber mais 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 para o servidor de destino e clique em Mostrar curl.
- A janela Curl for Request Sent to Target Server será aberta. Nela, é possível determinar o alias do host do servidor de destino.
- Revise 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 seu próprio servidor de back-end.
- Se o alias de host do servidor de destino estiver apontando para um alias de host virtual, ele
estará encadeado por proxy. Nesse caso, você precisa repetir todas as etapas acima para o proxy encadeado até determinar o que está realmente causando o
500 Internal Server Error
. Nesses casos,500 Internal Server Error
pode acontecer em outros proxies encadeados em outros estágios, que podem ser diagnosticados e resolvidos usando as instruções fornecidas neste manual ou no manual 500 Erro interno do servidor. - Se o alias do host do servidor de destino apontar para o servidor de back-end, acesse Resolução.
Resolução
Se for confirmado que o erro 500
está vindo do servidor de back-end, entre em contato com a equipe do servidor de back-end para corrigir o problema.
No exemplo discutido acima, talvez seja necessário solicitar que os usuários transmitam credenciais válidas para corrigir esse problema.
Pontos principais
- A mensagem de erro real retornada pelo servidor de back-end para
500 Internal Server Error
só poderá ser visualizada se você tiver capturado a sessão de rastreamento 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 saber mais
sobre o
500 Internal Server Error
e/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, colete as informações de diagnóstico a seguir 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 de API
- Conclua o comando
curl
para reproduzir o erro500
. - Arquivo de rastreamento que contém as solicitações com
500 Internal Server Error
- Se os erros
500
não estiverem ocorrendo no momento, forneça o período com as informações de fuso horário em que os erros500
ocorreram no passado.
Se você for um usuário da nuvem privada, forneça as seguintes informações:
- Concluir a mensagem de erro observada para as solicitações com falha
- Organização, nomes do ambiente e do proxy de API em que você está observando
erros
500
- Pacote de proxy de API
- Arquivo de rastreamento que contém as solicitações com
500 Internal Server Error
- Registros de acesso do NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Onde: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 ocorreram os erros
500
.