Resolução de problemas relacionados com a falta de registos do Apigee no Cloud Logging

Está a ver a documentação do Apigee e do Apigee Hybrid.
Não existe um equivalente na documentação do Apigee Edge para este tópico.

Sintoma

O envio de registos da API Apigee para o Cloud Logging é um exemplo de utilização comum. Isto é geralmente feito através da política MessageLogging ou da política ServiceCallout. Em ambos os casos, o Apigee usa a API Cloud Logging para escrever os registos.

Em alguns casos, pode não ver os registos da API Apigee no Cloud Logging.

Mensagem de erro

Não é apresentada nenhuma mensagem de erro.

Causas possíveis

Causa Descrição Instruções de resolução de problemas aplicáveis a
A Cloud Logging API não está ativada Certifique-se de que ativou a API Cloud Logging no Google Cloud projeto da sua organização do Apigee. Apigee e Apigee Hybrid
A API IAM Service Account Credentials não está ativada Certifique-se de que ativou a API IAM Service Account Credentials no Google Cloud projeto da sua organização do Apigee. Apigee e Apigee Hybrid
Conta de serviço do proxy configurada incorretamente A conta de serviço usada no momento da implementação (Apigee) ou na configuração de tempo de execução (Apigee hybrid) pode ter sido eliminada/configurada incorretamente. Apigee e Apigee Hybrid
Nome do projeto incorreto na configuração da política O nome do projeto na configuração da política não é o mesmo que o associado à organização do Apigee. Apigee e Apigee Hybrid
Funções/autorizações em falta para a conta de serviço de tempo de execução Para o Apigee hybrid, certifique-se de que a conta de serviço de runtime tem a função criador de tokens da conta de serviço. Isto é necessário para usar a autenticação Google. Apigee Hybrid
O tamanho da entrada do registo excede o limite permitido do Cloud Logging O Cloud Logging tem um limite de tamanho de entrada de 256 KB que não pode ser alterado. Apigee e Apigee Hybrid
Esgotamento da quota de pedidos de gravação por minuto para a Cloud Logging API Certifique-se de que não excede o valor da quota de pedidos de gravação por minuto para a API Cloud Logging no seu projeto do Google Cloud. Apigee e Apigee Hybrid

Causa: a Cloud Logging API não está ativada

Diagnóstico

Verifique se a API Cloud Logging está ativada. Consulte Listar serviços ativados para obter instruções sobre como listar APIs ativadas e serviços na Google Cloud consola.

Resolução

Se a API Cloud Logging não estiver ativada, ative-a através dos passos em Ativar serviços. A ativação da API pode demorar alguns minutos.

Se não conseguir resolver o problema em que os registos não são vistos no Cloud Logging devido à API Cloud Logging não estar ativada, consulte o artigo Tem de recolher informações de diagnóstico.

Causa: a API IAM Service Account Credentials não está ativada

Diagnóstico

Confirme se a API IAM Service Account Credentials está ativada. Consulte Listar serviços ativados para obter instruções sobre como listar APIs ativadas e serviços na Google Cloud consola.

Resolução

Se a API IAM Service Account Credentials não estiver ativada, ative-a através dos passos em Ativar serviços. A ativação da API pode demorar alguns minutos.

Se não conseguir resolver o problema em que os registos não são vistos no Cloud Logging devido à API IAM Service Account Credentials não estar ativada, consulte o artigo Tem de recolher informações de diagnóstico.

Causa: conta de serviço de proxy configurada incorretamente

Diagnóstico

Apigee

  1. Encontre o nome da conta de serviço.
    1. Usando a IU do Apigee:
      1. Clique em Desenvolver > Proxies de API e, de seguida, clique no nome de um proxy. Por exemplo, TurboBooks.
      2. Em Implementações, é apresentado o nome da conta de serviço.

    2. Usando a API Apigee:

      Emita a seguinte chamada da API Apigee:

      curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/PROXY_NAME/revisions/REVISION_NUMBER/deployments"

      Substitua o seguinte:

      • ORG_NAME: o nome da sua organização. Por exemplo, apigee-example-org.
      • ENV_NAME: o nome do ambiente. Por exemplo, myenv.
      • PROXY_NAME: o nome do proxy. Por exemplo, TurboBooks.
      • REVISION_NUMBER: o número de revisão. Por exemplo, 4.

      Por exemplo:

      curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/apigee-example-org/environments/myenv/apis/TurboBooks/revisions/4/deployments"

      É devolvido algo semelhante ao seguinte:

      {
        "environment": "myenv",
        "apiProxy": "TurboBooks",
        "revision": "4",
        "deployStartTime": "1687408163394",
        "state": "READY",
        "instances": [
          {
            "instance": "apiginstance",
            "deployedRevisions": [
              {
                "revision": "4",
                "percentage": 100
              }
          .
          .
          .
          .
        "serviceAccount": "projects/-/serviceAccounts/envsa-79@apigee-example-org.iam.gserviceaccount.com"
      }

      Onde serviceAccount é a conta de serviço associada ao proxy da API.

  2. Valide o seguinte para esta conta de serviço de proxy:
    1. Esta conta de serviço tem de estar no mesmo projeto do Google Cloud que usou para criar a sua organização do Apigee. Por exemplo, apigee-example-org.
    2. O utilizador que implementa o proxy tem a autorização iam.serviceAccounts.actAs nesta conta de serviço.
    3. A conta de serviço do proxy tem as autorizações necessárias para chamar o serviço Cloud Logging.

Apigee Hybrid

Para o Apigee hybrid, além dos passos indicados no Apigee, abra o ficheiro overrides.yaml e certifique-se de que existe uma conta de serviço especificada em cada ambiente que requer autenticação Google. Por exemplo:

envs:
  - name: "ENVIRONMENT_NAME"
    serviceAccountPaths:
      runtime: "KEY_FILE_PATH"

Substitua o seguinte:

  • ENVIRONMENT_NAME: o nome do ambiente. Por exemplo, myenv.
  • KEY_FILE_PATH: o caminho para o ficheiro da chave da conta de serviço de tempo de execução. Normalmente, já teria criado a conta de serviço em Criar contas de serviço durante a instalação.

Resolução

  1. Se a conta de serviço não estiver no mesmo Google Cloud projeto que usou para criar a sua organização do Apigee, tem de criar uma conta de serviço no mesmo Google Cloud projeto e usá-la. Isto também é mencionado em Usar a autenticação Google.
  2. Se o utilizador que implementa o proxy não tiver a autorização iam.serviceAccounts.actAs nesta conta de serviço, consulte Conceda uma única função.
  3. Se a conta de serviço do proxy não tiver as autorizações necessárias para chamar o serviço Cloud Logging, consulte o artigo Conceda uma única função.

Se os passos neste documento não resolverem o problema em que a conta de serviço do proxy está configurada incorretamente para o Apigee e o Apigee hybrid, consulte o artigo Informações de diagnóstico necessárias.

Causa: nome do projeto incorreto na configuração da política

Diagnóstico

Se estiver a usar a política MessageLogging para enviar registos para o Cloud Logging:

  1. Na IU do Apigee, clique em Develop > API Proxies > nome do proxy de API > separador Develop.
  2. No painel Código, localize o elemento <CloudLogging>.
  3. Verifique se o valor <LogName> é o nome do projeto correto:
    <CloudLogging>
      <LogName>projects/PROJECT_ID/logs/LOG_ID</LogName>
    </CloudLogging>

    Substitua o seguinte:

    • PROJECT_ID: O Google Cloud ID do projeto. Por exemplo, apigee-example-org.
    • LOG_ID: o ID do registo do Cloud Logging. Por exemplo, apigee-logs.

Resolução

Se o valor no elemento <LogName> não tiver o valor correto, atualize-o para o valor correto.

Se os passos neste documento não resolverem o problema, consulte o artigo Informações de diagnóstico necessárias.

Causa: funções/autorizações em falta para a conta de serviço de tempo de execução

Diagnóstico

Certifique-se de que o tempo de execução consegue usar a identidade da conta de serviço do proxy.

Execute o seguinte comando gcloud para verificar se a conta de serviço de tempo de execução tem a função iam.serviceAccountTokenCreator na conta de serviço do proxy:

gcloud iam service-accounts get-iam-policy PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com

Substitua o seguinte:

  • PROXY_SA_NAME: o nome da conta de serviço proxy. Por exemplo, envsa-79.
  • PROJECT_ID: O Google Cloud ID do projeto. Por exemplo, apigee-example-org.

É devolvido algo semelhante ao seguinte:

- members:
  - serviceAccount:RUNTIME_SA_NAME@PROJECT_ID.iam.gserviceaccount.com
  role: roles/iam.serviceAccountTokenCreator

Substitua o seguinte:

RUNTIME_SA_NAME: o ID da conta de serviço do ambiente de execução. Por exemplo, apigee-runtime.

Por exemplo:

gcloud iam service-accounts get-iam-policy envsa-79@apigee-example-org.iam.gserviceaccount.com
  bindings:
  - members:
    - user:222larabrown@gmail.com
    role: roles/iam.serviceAccountAdmin
  - members:
    - serviceAccount:apigee-runtime@apigee-example-org.iam.gserviceaccount.com
    role: roles/iam.serviceAccountTokenCreator
  - members:
    - user:222larabrown@gmail.com
    role: roles/iam.serviceAccountUser
  etag: BwX-shcrL3o=
  version: 1

Se não vir a função iam.serviceAccountTokenCreator e o membro esperado no resultado, siga os passos na Resolução para conceder as funções corretas.

Resolução

Conceda à conta de serviço de tempo de execução a função iam.serviceAccountTokenCreator na conta de serviço de proxy executando o seguinte comando gcloud:

gcloud iam service-accounts add-iam-policy-binding \
PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
--member=serviceAccount:RUNTIME_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
--role=roles/iam.serviceAccountTokenCreator

Substitua o seguinte:

  • PROXY_SA_NAME: o nome da conta de serviço proxy. Por exemplo, envsa-79.
  • PROJECT_ID: O Google Cloud ID do projeto. Por exemplo, apigee-example-org.
  • RUNTIME_SA_NAME: o ID da conta de serviço do ambiente de execução. Por exemplo, apigee-runtime.

Se os passos neste documento não resolverem o problema, consulte o artigo Informações de diagnóstico necessárias.

Causa: o tamanho da entrada do registo excede o limite de registo permitido

Diagnóstico

Se não vir alguns dos registos apresentados no Cloud Logging depois de se certificar de que as outras causas descritas neste documento não são o problema, é possível que o tamanho de algumas das entradas de registo enviadas do Apigee exceda 256 KB, que é o limite rígido para uma entrada de tamanho de registo no Cloud Logging. Consulte a secção Registo de limites de utilização para mais informações.

Resolução

Este é um limite não configurável definido no Cloud Logging e a única solução alternativa conhecida atualmente é manter o tamanho da entrada de registo enviada do Apigee abaixo de 256 KB. Se estiver a registar uma carga útil que possa exceder este limite, não registe esta carga útil ou compreenda que algumas transações não serão registadas quando o limite for atingido.

Se os passos neste documento não resolverem o problema, consulte o artigo Informações de diagnóstico necessárias.

Causa: esgotamento da quota de pedidos de gravação por minuto para a Cloud Logging API

Diagnóstico

Por vezes, os clientes verificam que conseguem ver o pedido na sessão de depuração, mas, ao mesmo tempo, o pedido não é registado no explorador de registos, apesar de estar presente nos registos do equilibrador de carga.

A perda de mensagens observada pode ser atribuída ao esgotamento da quota no projeto. A API Cloud Logging aplica um limite de taxa de 120 000 pedidos de escrita por minuto. Exceder esta quota pode resultar na perda de mensagens.Para mais informações, consulte o artigo Veja e faça a gestão das quotas.

Estas quotas podem ser aumentadas no Google Cloud console e o próprio cliente pode fazê-lo seguindo a documentação de aumento de quotas.

Resolução

Siga o procedimento abaixo para aumentar uma quota:

  1. Na página Quotas , use as caixas de verificação para selecionar API Cloud Logging e, de seguida, clique em Editar quotas. Se receber um erro Edit is not allowed for this quota, pode contactar o apoio ao cliente do Google Cloud para pedir alterações à quota. Tenha também em atenção que a faturação tem de estar ativada no projeto do Google Cloud para clicar nas caixas de verificação.
  2. No painel Alterações de quota, selecione o serviço para expandir a vista e, em seguida, preencha os campos Novo limite e Descrição do pedido. Clique em Seguinte.
  3. Preencha o formulário no painel Detalhes de contacto e clique em Enviar pedido.

Para mais informações, consulte esta documentação sobre quotas e limites .

Tem de recolher 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, em seguida, contacte o apoio ao cliente do Google Cloud:

  • Organização do Apigee.
  • O ambiente e o proxy de API estão a detetar o problema.
  • Sessão de depuração transferida (esta opção fornece todas as informações acima).
  • O nome da política específica no proxy de API que está a enviar registos para o Cloud Logging.
  • Para o Apigee Hybrid: o ficheiro overrides.yaml.