Este documento fornece informações para ajudar a resolver problemas de autorização e credenciais do agente de operações nas suas instâncias de VM do Compute Engine.
Se o agente de operações estiver a comunicar erros de acesso ou autorização, ou se o agente parecer estar a ser executado normalmente, mas não existirem dados ou as suas políticas de alerta não estiverem a funcionar como esperado, verifique se as credenciais da instância de VM estão corretas, incluindo se especificam o projeto correto:
Se estiver a usar uma instância de VM do Compute Engine com credenciais padrão (não de chave privada), é improvável que os dados sejam enviados para o projeto errado, mas as suas credenciais podem ainda ser deficientes. Para informações sobre credenciais, consulte o artigo Autorize o agente de operações. Para validar as suas credenciais, consulte o artigo Validar credenciais do Compute Engine.
Se estiver a usar credenciais de chave privada na sua instância do Compute Engine, as credenciais podem ser inválidas ou podem ser do projeto errado. Para obter informações sobre as credenciais, consulte o artigo Autorize o agente de operações. Para validar as suas credenciais, consulte o artigo Validar credenciais de chave privada.
Validar credenciais do Compute Engine
Use a página Instâncias de VM do Compute Engine da Google Cloud consola para verificar se a sua instância de VM do Compute Engine tem credenciais adequadas para o agente Ops. Normalmente, as credenciais são adicionadas à conta de serviço predefinida de todas as novas instâncias de VMs do Compute Engine, mas é possível substituir essas predefinições quando cria uma instância.
Na Google Cloud consola, aceda à página Instâncias de VM:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cuja legenda seja Compute Engine.
- Se necessário, altere o projeto atual para o projeto associado à instância de VM do Compute Engine. Google Cloud Por exemplo, se lhe for pedido que ative a faturação, significa que o projeto atual não tem instâncias de VM do Compute Engine.
- Na página Instâncias de VM, clique no nome da instância de VM. É apresentada a página de detalhes da instância de VM.
- Na página Detalhes da instância de VM, procure o cabeçalho Âmbitos de acesso à API Cloud
:
- Se vir "Permitir acesso total a todas as APIs Cloud", tem credenciais adequadas.
- Se vir, junto a API Stackdriver Monitoring, um nome mais antigo para a API Cloud Monitoring, que tem autorização Apenas de escrita ou Completa, significa que tem credenciais adequadas.
- Caso contrário, a conta de serviço predefinida da sua instância não tem as credenciais necessárias para o agente. Para usar o agente na sua instância, tem de adicionar credenciais da conta de serviço de chave privada. Para ver instruções, consulte o artigo Adicionar credenciais.
Se tiver as credenciais predefinidas corretas, avance para a secção Instalar no Linux e no Windows.
Validar credenciais de chave privada
Para verificar se as credenciais de chave privada válidas estão instaladas na instância de VM, verifique primeiro se o ficheiro de credenciais existe na localização esperada e, em seguida, verifique se as informações no ficheiro de credenciais são válidas. As credenciais válidas anteriormente podem ser revogadas através da secção IAM e administrador > Contas de serviço da Google Cloud consola. Se não existirem credenciais válidas, consulte o artigo Adicionar credenciais para substituir as credenciais 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 sua instância, execute os seguintes comandos do Linux na sua instância:
sudo cat $GOOGLE_APPLICATION_CREDENTIALS
sudo cat /etc/google/auth/application_default_credentials.json
Se qualquer um dos comandos apresentar um ficheiro como o apresentado abaixo, a sua instância pode ter credenciais de chave privada válidas. Se ambos os comandos apresentarem um ficheiro, é usado o ficheiro 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 existirem ficheiros de credenciais, consulte a secção Adicionar credenciais.
As credenciais são válidas?
No ficheiro de credenciais, o campo project_id
é o seu Google Cloud projeto,client_email
identifica a conta de serviço no projeto e private_key_id
identifica a chave privada na conta de serviço. Faça corresponder estas informações ao que é apresentado na secção IAM e administrador > Contas de serviço daGoogle Cloud consola.
O ficheiro de credenciais não é válido se alguma das seguintes afirmações for verdadeira:
- Está a verificar uma instância de VM do Compute Engine, mas o Google Cloud projeto no ficheiro de credenciais não é o projeto que contém a sua instância.
- A conta de serviço apresentada não existe. Pode ter sido eliminada.
- A conta de serviço apresentada não tem as funções corretas ativadas. Deve ter, pelo menos,
roles/monitoring.metricWriter
(Monitoring Metric Writer) para a recolha de métricas eroles/logging.logWriter
(Logs Writer) para escrever registos. - A chave privada não existe. Pode ter sido revogada.
Se a conta de serviço estiver bem, mas a chave privada tiver sido revogada, pode criar uma nova chave privada e copiá-la para a sua instância. Caso contrário, tem de criar uma nova conta de serviço, conforme descrito na secção seguinte, Adicionar credenciais.
A gerar novas credenciais
Se as credenciais não forem válidas, siga estes passos:
- Para cada projeto associado que contenha instâncias que precisam de ser autorizadas
com uma chave privada —
instâncias do Compute Engine que foram
criadas sem incluir o âmbito de acesso
https://www.googleapis.com/auth/monitoring.write
— crie uma conta de serviço e gere uma chave privada, se ainda não existirem. Siga os passos abaixo:-
Na Google Cloud consola, aceda à página settings Definições:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
- Selecione o separador Âmbito da métrica.
- Identifique o projeto que contém os recursos do Compute Engine em causa e navegue para a Google Cloud consola.
- Aceda à página Contas de serviço do IAM da
Google Cloud consola, selecione o seu Google Cloud projeto, crie uma nova
conta de serviço e, em seguida, gere uma nova chave privada para essa
conta de serviço.
Para realizar estes passos, efetue uma das seguintes ações:
Aceda à página Contas de serviço do IAM, selecione o seu Google Cloud projeto e, de seguida, siga os passos em Crie uma conta de serviço:
Clique no botão seguinte e, de seguida, selecione o seu Google Cloud projeto:
Crie uma conta de serviço e transfira a chave
O botão anterior automatiza o processo de criação e transferência de uma chave para o seu 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 a conta de serviço tem as autorizações corretas. As contas de serviço específicas do agente têm um nome semelhante a
stackdriver-1234@PROJECT_ID.iam.gserviceaccount.com
. Recebe uma notificação da conclusão destas ações com uma caixa de diálogo semelhante à seguinte:
-
Substitua a chave privada nas 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 mais informações, consulte o artigo Copiar a chave privada para a sua instância.
- No Linux, substitua a chave privada localizada em
Reinicie o agente
- No Linux, execute
sudo service stackdriver-agent restart
- No Windows, aceda à consola de gestão de serviços e reinicie o serviço
Cloud Monitoring
.
- No Linux, execute
Se tiver vários projetos que precisam de novas chaves privadas, repita este procedimento para cada um deles.
Para verificar se a chave privada está correta, consulte o artigo As credenciais estão presentes?. Em concreto:
- Leia o ficheiro JSON da chave privada na instância, por exemplo (no Linux):
sudo cat /etc/google/auth/application_default_credentials.json
- Certifique-se de que o valor do campo
project_id
corresponde ao do projeto monitorizado para o qual acabou de gerar credenciais.