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:
Se estiver usando uma instância de VM do Compute Engine com credenciais padrão, e não uma chave privada, é pouco provável que os dados estejam indo para o projeto errado. Talvez suas credenciais ainda estejam incompletas. Para obter informações sobre credenciais, consulte Autorizar o Agente de operações. Para verificar as credenciais, consulte Como verificar credenciais do Compute Engine.
Se você estiver usando credenciais de chave privada na instância do Compute Engine, elas talvez sejam inválidas ou provenientes do projeto errado. Para obter informações sobre credenciais, consulte Autorizar o Agente de operações. Consulte Como verificar credenciais de chave privada para verificar as credenciais.
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.
Se você usar a barra de pesquisa para encontrar a página, selecione o resultado com o subtítulo Compute Engine.
- 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.
- Na página Instâncias de VM, clique no nome da instância. A página de detalhes dela é exibida.
- 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 eroles/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:
- 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:-
No console do Google Cloud, abra a página settings Configurações:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoramento.
- Selecione a guia Escopo Netric.
- Identifique o projeto que contém os recursos do Compute Engine em questão e navegue para o console do Google Cloud.
- 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:
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:
-
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.
- No Linux, substitua a chave privada localizada em
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
.
- No Linux, execute
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?. Em especial:
- 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.