503 Serviço indisponível - NoActiveTargets

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

Vídeos

Assista aos vídeos a seguir para mais informações sobre erros 503:

Vídeo Descrição
Solucionar e resolver 503 Serviço indisponível - NoActiveTargets Saiba mais sobre o seguinte:
  • Importância dos servidores-alvo e monitores de saúde
  • Solução de problemas e resolução em tempo real de um erro "Serviço 503 indisponível - erro NoActiveTargets"

Sintoma

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

Mensagem de erro

Você verá a seguinte resposta de erro:

HTTP/1.1 503 Service Unavailable
  

A seguinte mensagem de erro será exibida 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 normalmente é observada quando você usa um ou mais servidores na configuração do endpoint de destino no proxy de API.

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

Causa Descrição Quem pode realizar as etapas de solução de problemas
O servidor de destino está desativado O servidor de destino especificado na configuração do endpoint de destino está desativado. Usuários de nuvem pública e privada de borda
Erros de conexão devido à resolução incorreta de DNS A resolução de DNS do servidor de destino resultou em endereços IP incorretos que levaram a erros de conexão. Usuários da nuvem privada de borda
Erros de conexão Problemas de rede ou conectividade impedem que o cliente se conecte ao servidor. Usuários da nuvem privada de borda
Alias do host de destino incorreto O host do servidor de destino especificado está incorreto ou tem caracteres indesejados (como um espaço). Usuários de nuvem pública e privada de borda
Falhas de handshake de SSL O handshake de TLS/SSL falhou entre o cliente e o servidor. Usuários de nuvem pública e privada de borda
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 de borda

Causa: o servidor de destino está 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 usado no endpoint de destino específico Configuração do proxy de API com falha usando uma das seguintes maneiras:
    1. Se houver apenas um endpoint de destino, verifique esse endpoint específico.
    2. Se houver vários endpoints de destino e você não tiver certeza de qual deles desativou o servidor de destino, siga as etapas abaixo:
      1. Ative a sessão de rastreamento, faça a chamada de API e reproduza o problema: serviço 503 indisponível.
      2. No trace, navegue até 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 a partir do trace

  2. Depois de identificar o endpoint de destino, confira o nome do servidor de destino usado na configuração dele, 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. Confira a definição de cada um dos servidores de destino usados no endpoint de destino usando a interface ou a chamada da API Edge.

    interface do Edge

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

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

      Por exemplo, digite o nome do servidor de destino demo-target para exibir 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, a porta número e o SSL estão ativados. No entanto, o servidor de destino está desativado , o que é indicado pelo esmaecimento do elemento ATIVADO.

    API Edge

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

    Use o Acesse a API 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 falso.

    Como o servidor de destino está desativado, o processador de mensagens enviará a mensagem 503 Service Indisponível com o código de erro NoActiveTargets imediatamente como um resposta ao cliente.

Resolução

Verifique se os servidores de destino específicos usados na configuração do endpoint de destino da sua API O proxy está sempre ativado.

interface do Edge

  1. Acesse Administrador > Ambientes > Servidores de destino.
  2. Selecione o ambiente específico em que a falha está sendo exibida.
  3. Pesquise o nome do servidor de destino específico para obter sua definição.
  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 o Atualizar uma API do servidor de destino para atualizar a definição do servidor de destino e garantir que IsEnabled está 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 É necessário coletar informações de diagnóstico.

Diagnosticar problemas usando o monitoramento de APIs

O API Monitoring permite isolar o problema áreas para diagnosticar rapidamente problemas de erro, desempenho e latência e suas origens, como problemas apps, proxies de API, destinos de back-end ou a plataforma de API.

Veja um exemplo de cenário que demonstra como resolver problemas 5xx com suas APIs usando a API Monitoring. Por exemplo: defina um alerta para ser notificado quando a quantidade de messaging.adaptors.http.flow.NoActiveTargets em excesso excedem um determinado limite.

É 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: informações de diagnóstico. Entre em contato com eles e compartilhe com o suporte da Apigee:

  1. Se você é 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 da API
    4. Complete o comando curl para reproduzir o erro
    5. Arquivo de rastreamento contendo as solicitações com o status 503 Serviço Indisponível com o código de erro NoActiveTargets
  2. Se você é 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 contendo as solicitações com o status 503 Serviço Indisponível 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)