Resolver problemas de credenciais

Este documento fornece informações para ajudar você a resolver problemas de autorização e credenciais do Agente de operações nas suas instâncias de VM do Compute Engine.

Quando o Agente de operações informa erros de acesso ou de autorização, é recomendável verificar se as credenciais da instância de VM estão corretas, inclusive se especificam o projeto certo. Isso também é necessário quando parece que o agente está em execução normalmente e não há dados ou quando as políticas de alertas apresentam um comportamento inesperado. Veja como proceder:

Como verificar credenciais do Compute Engine

Use a página de Instâncias de VM do Compute Engine, do console do Google Cloud, para verificar se a instância de VM do Compute Engine tem credenciais adequadas para o Agente de operações. Normalmente, as credenciais são adicionadas à conta de serviço padrão de todas as novas instâncias de VM do Compute Engine, mas é possível substituir esses padrões ao criar uma instância.

No Console do Google Cloud, acesse a página Instâncias de VM.

Acessar Instâncias de VM

Se você usar a barra de pesquisa para encontrar a página, selecione o resultado com o subtítulo Compute Engine.

  1. Se necessário, altere o projeto atual do Google Cloud para ser associado à instância de VM do Compute Engine. Por exemplo, se for solicitado que você ative o faturamento, isso significa que o projeto atual não tem nenhuma instância de VM do Compute Engine.
  2. Na página Instâncias de VM, clique no nome da instância. A página de detalhes dela é exibida.
  3. Na página Detalhes da instância de VM, verifique o cabeçalho Escopos de acesso à API Cloud:
    • Suas credenciais serão adequadas se a mensagem "Permitir acesso completo a todas as Cloud APIs" for exibida.
    • Se aparecer ao lado de API Stackdriver Monitoring, um nome mais antigo para a API Cloud Monitoring, você tem Somente gravação ou Total, você terá as credenciais adequadas.
    • Caso contrário, a conta de serviço padrão da instância não terá as credenciais necessárias para o agente. Para usar o agente na instância, você precisa adicionar as credenciais da conta de serviço da chave privada. Para ver instruções, consulte Como adicionar credenciais.

Se você tiver as credenciais padrão corretas, prossiga para Como instalar no Linux e Windows.

Como verificar credenciais de chave privada

Para verificar se as credenciais de chave privada válidas estão instaladas na instância de VM, confirme primeiro se o arquivo de credenciais está na localização esperada e se as informações nele são válidas. As credenciais anteriormente válidas podem ser revogadas por meio da seção IAM e Administrador > Contas de serviço do Console do Google Cloud. Se não houver credenciais válidas, consulte Como adicionar credenciais para substituir as existentes ou adicionar novas.

As credenciais estão presentes?

Para ver se as credenciais da conta de serviço de chave privada estão na instância, execute os seguintes comandos do Linux na instância:

sudo cat $GOOGLE_APPLICATION_CREDENTIALS
sudo cat /etc/google/auth/application_default_credentials.json

Se um dos comandos exibir um arquivo conforme mostrado a seguir, pode ser que a instância tenha credenciais de chave privada válidas. Se ambos os comandos exibirem um arquivo, será usado o arquivo indicado por GOOGLE_APPLICATION_CREDENTIALS.

{
  "type": "service_account",
  "project_id": "{your-project-id}",
  "private_key_id": "{your-private-key-id}",
  "private_key": "{your-private-key}",
  "client_email": "{your-project-number}-{your-key}@developer.gserviceaccount.com",
  "client_id": "{your-client-id}",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "{x509-cert-url}",
  "client_x509_cert_url": "{client-x509-cert-url}"
}

Se não houver arquivos de credenciais presentes, consulte Como adicionar credenciais.

As credenciais são válidas?

No arquivo de credenciais, o campo project_id é o projeto do Google Cloud, client_email identifica a conta de serviço no projeto e private_key_id identifica a chave privada na conta de serviço. Combine essas informações com o que é exibido na seção IAM e Administrador > Contas de serviço do console do Google Cloud.

O arquivo de credenciais não será válido se uma das seguintes condições for verdadeira:

  • Você está verificando uma instância de VM do Compute Engine, mas o projeto do Google Cloud no arquivo de credenciais não é o projeto que contém a instância.
  • A conta de serviço listada não existe. Ela pode ter sido excluída.
  • A conta de serviço listada não tem os papéis certos ativados. Ela deve ter pelo menos roles/monitoring.metricWriter (Gravador de métricas do Monitoring) para a coleta de métricas e roles/logging.logWriter (Gravador de registros) para registros de gravação.
  • A chave privada não existe. Ela pode ter sido revogada.

Se a conta de serviço está correta, mas a chave privada foi revogada, você pode criar uma nova chave privada e copiá-la na sua instância. Caso contrário, você precisa criar uma nova conta de serviço, conforme descrito na seção Como adicionar credenciais.

Como gerar novas credenciais

Se as credenciais não forem válidas, siga estas etapas:

  1. Para cada projeto conectado que contém instâncias que precisam ser autorizadas com uma chave privada — As instâncias do Compute Engine que foram criadas sem incluir o escopo de acesso https://www.googleapis.com/auth/monitoring.write — crie uma conta de serviço e gere uma chave privada, caso ela ainda não exista. Siga as etapas abaixo:
    1. No console do Google Cloud, abra a página  Configurações:

      Acessar Configurações

      Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoramento.

    2. Selecione a guia Escopo Netric.
    3. Identifique o projeto que contém os recursos do Compute Engine em questão e navegue para o console do Google Cloud.
    4. Acesse a página Contas de serviço do IAM do console do Google Cloud, selecione seu projeto do Google Cloud, crie uma nova conta de serviço e gere uma nova chave privada para essa conta de serviço.

      Para executar essas etapas, siga um destes procedimentos:

      • Acesse a página Contas de serviço do IAM, selecione seu projeto do Google Cloud e siga as etapas em Criar uma conta de serviço:

        Acessar as contas de serviço do IAM

      • Clique no botão a seguir e selecione seu projeto do Google Cloud:

        Crie uma conta de serviço e faça o download da chave

        O botão anterior automatiza o processo de criação e download de uma chave do sistema local para a conta de serviço específica do agente. Se necessário, o processo também cria a conta de serviço necessária e garante que ela tenha as permissões corretas. As contas de serviço específicas do agente têm um nome semelhante a stackdriver-1234@PROJECT_ID.iam.gserviceaccount.com. Você será notificado sobre a conclusão dessas ações com uma caixa de diálogo semelhante a esta:

        Um banner notificando o usuário de que uma conta de serviço e uma chave foram criadas.

  2. Substitua a chave privada pelas instâncias que correspondem à conta de serviço em questão.

    • No Linux, substitua a chave privada localizada em /etc/google/auth/application_default_credentials.json.
    • No Windows, substitua a chave privada localizada em C:\ProgramData\Google\Auth\application_default_credentials.json. Para obter mais informações, consulte Copiar a chave privada na sua instância.
  3. Reinicie o agente.

    • No Linux, execute sudo service stackdriver-agent restart.
    • No Windows, acesse o console de gerenciamento de serviço e reinicie o serviço Cloud Monitoring.

Se você tiver vários projetos que precisam de novas chaves privadas, repita esse processo para cada um deles.

Para verificar se a chave privada está correta, consulte As credenciais estão presentes?. Especificamente:

  • Leia o arquivo JSON da chave privada na instância. Por exemplo (no Linux): sudo cat /etc/google/auth/application_default_credentials.json
  • Verifique se o valor de project_id corresponde ao valor do projeto monitorado para o qual você acabou de gerar credenciais.