503 Serviço indisponível - NoActiveTargets

Você está lendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

Vídeos

Confira os vídeos a seguir para mais informações sobre erros 503:

Vídeo Descrição
Resolver problemas e erros 503: Serviço indisponível - NoActiveTargets Saiba mais sobre:
  • Importância dos servidores de destino e dos monitores de integridade
  • Como resolver um erro 503: Serviço indisponível - NoActiveTargets em tempo real

Sintoma

O aplicativo cliente recebe o código de status de resposta HTTP 503 com a mensagem Service Unavailable e o código de erro NoActiveTargets para as solicitações de proxy de API.

Mensagem de erro

Você vai receber a seguinte resposta de erro:

HTTP/1.1 503 Service Unavailable
  

Você vai receber a seguinte mensagem de erro na resposta HTTP:

{
   "fault": {
      "faultstring": "The Service is temporarily unavailable",
      "detail": {
           "errorcode": "messaging.adaptors.http.flow.NoActiveTargets"
       }
    }
}
  

Causas possíveis

A resposta HTTP 503 Service Unavailable com o código de erro NoActiveTargets geralmente é observada quando você usa um ou mais servidores de destino na configuração do endpoint de destino no proxy de API.

A tabela a seguir lista as possíveis causas da resposta 503 Service Unavailable com o código de erro NoActiveTargets:

Causa Descrição Quem pode realizar as etapas de solução de problemas
Servidor de destino desativado O servidor de destino especificado na configuração do endpoint de destino está desativado. Usuários da nuvem pública e privada do Edge
Erros de conexão devido à resolução de DNS incorreta A resolução de DNS do servidor de destino resultou em endereços IP incorretos que levam a erros de conexão. Usuários da nuvem privada do Edge
Erros de conexão Problemas de rede ou conectividade impedem que o cliente se conecte ao servidor. Usuários da nuvem privada do Edge
Alias de host de destino incorreto O host do servidor de destino especificado está incorreto ou tem caracteres indesejados (como um espaço). Usuários da nuvem pública e privada do Edge
Falhas de handshake de SSL O handshake de TLS/SSL falhou entre o cliente e o servidor. Usuários da nuvem pública e privada do Edge
Falhas na verificação de integridade As verificações de integridade configuradas para verificar a integridade do servidor de destino podem falhar por algum motivo. Usuários da nuvem privada do Edge

Causa: servidor de destino desativado

Se todos os servidores de destino especificados na configuração do endpoint de destino estiverem desativados, você receberá a resposta 503 Service Unavailable com o código de erro NoActiveTargets.

Diagnóstico

  1. Determine o nome do servidor de destino que está sendo usado na configuração específica do endpoint de destino do proxy de API com falha usando uma das seguintes maneiras:
    1. Se houver um único endpoint de destino, verifique esse endpoint.
    2. Se houver vários endpoints de destino e você não souber qual deles tem o servidor de destino desativado, siga as etapas abaixo:
      1. Ative a sessão de rastreamento, faça a chamada de API e reproduza o problema: 503 Service Unavailable.
      2. No rastreamento, acesse Fluxo de solicitação de destino iniciado e determine o nome do endpoint de destino, conforme mostrado abaixo:
      3. Como determinar o nome do endpoint de destino usando o rastreamento

  2. Depois de identificar o endpoint de destino, receba o nome do servidor de destino usado na configuração do endpoint de destino, conforme mostrado no exemplo abaixo:
    <TargetEndpoint name="default">>
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="demo-target" />
        </LoadBalancer>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
          

    No exemplo acima, há um único servidor de destino chamado demo-target.

  3. Receba a definição de cada um dos servidores de destino usados no endpoint de destino usando a interface do Edge ou a chamada de API Edge.

    Interface do Edge

    Para receber a definição usando a interface do Edge:

    1. Acesse Admin > Ambientes > Servidores de destino.
    2. Selecione o ambiente específico em que a falha está ocorrendo.
    3. Pesquise o nome do servidor de destino específico para receber a definição do servidor de destino.

      Por exemplo, digite o nome do servidor de destino demo-target e você verá a definição dele, conforme mostrado abaixo:

      Nome do servidor de destino e status ativado/desativado

      Observe que o servidor de destino demo-target tem um alias de host, número da porta e SSL ativado. No entanto, o servidor de destino está desativado, indicado pelo elemento ENABLED esmaecido.

    API Edge

    Para receber a definição usando a API Edge:

    Use a API Get TargetServer para receber a definição do servidor de destino.

    Saída da definição do servidor de destino

    <TargetServer name="demo-target">
      <Host>demo-target.apigee.net</Host>
      <Port>443</Port>
      <IsEnabled>false</IsEnabled>
      <SSLInfo>
          <Enabled>true</Enabled>
      </SSLInfo>
    </TargetServer>
              

    A saída da API Apigee mostra que o servidor de destino demo-target está desativado , já que o elemento IsEnabled está definido como "false".

    Como o servidor de destino está desativado, o processador de mensagens enviará 503 Service Unavailable com o código de erro NoActiveTargets imediatamente como uma resposta ao cliente.

Resolução

Verifique se os servidores de destino específicos usados na configuração do endpoint de destino do proxy de API estão sempre ativados.

Interface do Edge

  1. Acesse Admin > Ambientes > Servidores de destino.
  2. Selecione o ambiente específico em que a falha está ocorrendo.
  3. Pesquise o nome do servidor de destino específico para receber a definição dele.
  4. Selecione o servidor de destino específico e clique em Editar.
  5. Marque a caixa de seleção Ativado.
  6. Clique em Atualizar.

API Edge

Use a API Update a Target Server para atualizar a definição do servidor de destino e garantir que IsEnabled esteja definido como true no payload da solicitação da API, conforme mostrado abaixo:

<TargetServer name="demo-target">
  <Host>demo-target.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
      <Enabled>true</Enabled>
  </SSLInfo>
</TargetServer>
        

Se o problema persistir, acesse Precisa de informações de diagnóstico.

Diagnosticar problemas usando o monitoramento de API

O monitoramento de API permite isolar áreas problemáticas rapidamente para diagnosticar problemas de erro, desempenho e latência e a origem deles, como aplicativos de desenvolvedor, proxies de API, destinos de back-end ou a plataforma de API.

Siga um cenário de exemplo que demonstra como solucionar problemas 5xx com suas APIs usando o monitoramento de API. Por exemplo, você pode configurar um alerta para receber uma notificação quando o número de messaging.adaptors.http.flow.NoActiveTargets falhas exceder um limite específico.

É necessário coletar informações de diagnóstico

Se o problema persistir mesmo depois de seguir as instruções acima, colete as seguintes informações de diagnóstico. Entre em contato e compartilhe-as com o suporte da Apigee:

  1. Se você for um usuário da nuvem pública, forneça as seguintes informações:
    1. Nome da organização
    2. Nome do ambiente
    3. Nome do proxy de API
    4. Comando curl completo para reproduzir o erro
    5. Arquivo de rastreamento que contém as solicitações com 503 Service Unavailable com o código de erro NoActiveTargets
  2. Se você for um usuário da nuvem privada, forneça as seguintes informações:
    1. Mensagem de erro completa observada
    2. Nome do ambiente
    3. Pacote de proxy de API
    4. Arquivo de rastreamento que contém as solicitações com 503 Service Unavailable com o código de erro NoActiveTargets
    5. Registros de acesso do NGINX

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

    6. Registros do processador de mensagens

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