Resolva problemas do agente de monitorização

Esta página ajuda a diagnosticar problemas na instalação ou execução do agente de monitorização.

Lista de verificação

Se tiver problemas ao instalar ou usar o agente de monitorização, veja o que tem de verificar:

  • Se os comandos de instalação do Linux resultarem em erros, certifique-se de que prefixa os comandos de instalação com sudo.

  • Verifique se o serviço do agente está em execução na instância de VM:

    • Para uma VM do Windows, use o seguinte comando do PowerShell:

      Get-Service -Name StackdriverMonitoring
      

      Pesquise um serviço denominado Stackdriver Monitoring. Se o agente não estiver em execução, pode ter de o reiniciar.

    • Para uma VM Linux, use o seguinte comando:

      sudo service stackdriver-agent status
      

      Se o agente não estiver em execução, pode ter de o reiniciar através do seguinte comando:

      sudo service stackdriver-agent restart
      

      Se o reinício falhar e o resultado do registo mostrar "Desativado através de metadados", é provável que esteja a executar uma imagem do Google Cloud Marketplace, onde o agente de monitorização está desativado por predefinição. Isto é controlado pela chave de metadados da instância google-monitoring-enable (com o valor 0). Para reativar o agente, remova essa chave ou defina o valor como 1 (consulte Definir metadados da instância).

      Se o agente não estiver desativado através de metadados, reinstale-o. Para ver informações sobre este processo, consulte o artigo Reinstalar o agente de monitorização.

  • Verifique se o agente escreveu mensagens de erro nos registos.

    • No Windows, o agente de monitorização escreve mensagens no registo de eventos do Windows.

    • No Linux, o agente de monitorização é um pacote collectd e regista mensagens em /var/log/syslog ou /var/log/messages. As mensagens de registo têm o prefixo collectd ou stackdriver-agent:

      • Se vir erros HTTP 429, é possível que tenha excedido as suas quotas da API Monitoring. Pode ver a sua quota disponível selecionando APIs e serviços > Painel de controlo na Google Cloud consola. Escolha a API Monitoring.

      • Se vir problemas de proxy, verifique se configurou corretamente o proxy HTTP. As instruções fazem parte do artigo Instalar no Linux e no Windows.

      • Se vir problemas de acesso ou autorização da API, ou mensagens de erro como "Não é possível determinar o ponto final do collectd", consulte a secção seguinte, Verificar o projeto e as credenciais.

      • Se vir erros "Combinação de tipo/plug-in collectd não suportada" ou "ID collectd não suportado" nos registos, pode estar a enviar métricas de agente não suportadas. Isto pode acontecer nos seguintes cenários:

        • Modificou uma das configurações da aplicação de terceiros do agente. Para reverter as alterações, pode reinstalar a configuração do plug-in específico seguindo as instruções na página de documentação relevante. Se quiser usar o agente para enviar essa métrica para o Monitoring, considere convertê-la em métricas definidas pelo utilizador.

        • Um dos plug-ins de aplicações de terceiros está a enviar novas métricas desconhecidas para a monitorização. Consulte a página de apoio técnico para ver detalhes sobre como enviar uma solicitação para que estas métricas sejam revistas e categorizadas.

  • Se o agente parecer estar a ser executado normalmente, mas não estiver a receber dados ou as suas políticas de alerta não estiverem a agir como pensa que deveriam, deve verificar se o agente está a enviar dados para o projeto correto. Consulte a secção seguinte, Validar o projeto e as credenciais.

Validar projeto e credenciais

Se o agente de monitorização 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 monitorização. Para validar as suas credenciais, consulte o artigo Validar credenciais do Compute Engine.

  • Se estiver a usar uma instância de VM do Amazon EC2 ou credenciais de chave privada na sua instância do Compute Engine, as credenciais podem ser inválidas ou podem ser do projeto errado. Para contas da AWS, o projeto usado pelo agente tem de ser o projeto para o qual está a enviar as métricas. Google Cloud Para informações sobre credenciais, consulte o artigo Autorize o agente de monitorização. Para validar as suas credenciais, consulte o artigo Validar credenciais de chave privada.

Se ainda não tiver resolvido o problema, consulte Reinstalar o agente de monitorização.

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 do Monitoring. 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:

Aceda a Instâncias de VM

Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cuja legenda seja Compute Engine.

  1. 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.
  2. 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.
  3. 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.
  • Está a verificar uma instância do Amazon EC2, mas o Google Cloud projeto no ficheiro de credenciais não é o Google Cloud projeto para o qual está a enviar as métricas da sua conta da AWS.
  • 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 e roles/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:

  1. Para cada projeto associado que contenha instâncias que precisam de ser autorizadas com uma chave privada — cada projeto que contenha 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:
    1. Na Google Cloud consola, aceda à página  Definições:

      Aceda a Definições

      Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.

    2. Selecione o separador Âmbito da métrica.
    3. Identifique o projeto que contém os recursos do Compute Engine em causa e navegue para a Google Cloud consola.
    4. 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:

        Aceda às contas de serviço de IAM

      • 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:

        Uma faixa a notificar o utilizador de que foi criada uma conta de serviço e uma chave.

  2. 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.
  3. 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.

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.

Validar os dados do agente

Para verificar se o agente está a enviar métricas corretamente, use o método timeSeries.list da API Monitoring para procurar dados de séries cronológicas recentes da instância de VM. Pode chamar o método através do Explorador de APIs na página de documentação do método. Se não vir dados, é possível que o agente esteja a enviar dados para o projeto errado. Para verificar isso, consulte o artigo Validar o projeto e as credenciais.

Seguem-se instruções detalhadas para usar o método timeSeries.list:

  1. Determine o ID da instância da instância de VM onde instalou o agente:

    • Instâncias do Compute Engine: aceda à página de detalhes do Compute Engine da sua instância. Na parte inferior da página, clique em REST equivalente. O ID é um número de 19 dígitos.

    • Instâncias do Amazon EC2: o ID de cada instância é apresentado na lista de instâncias. O ID tem o seguinte aspeto: i-1a2b3c4d.

  2. Aceda à página de documentação do método timeSeries.list.

  3. Preencha o formulário do Explorador de APIs:

    1. Defina name para o projeto que contém a sua instância de VM, com o prefixo projects/. Por exemplo, projects/[YOUR_PROJECT_ID].

    2. Defina o filtro na seguinte linha para escolher uma métrica do agente na instância da VM. Copie-o e cole-o no APIs Explorer e, em seguida, altere o ID da instância de VM:

      metric.type = "agent.googleapis.com/memory/bytes_used" AND resource.label.instance_id = "[YOUR-VM-INSTANCE-ID]"
      
    3. Defina o intervalo de tempo de pesquisa. Quer um intervalo de aproximadamente cinco minutos:

      • Defina interval.endTime para a hora GMT atual, que pode encontrar em time.is/GMT. A hora tem de ser formatada como no seguinte exemplo. Não coloque a hora entre aspas:

        2016-10-31T14:10:00Z
        
      • Defina interval.startTime para aproximadamente cinco minutos antes da hora de fim, usando o mesmo formato.

    4. Deixe todos os outros campos em branco.

  4. Clique em Executar.

Deverá ver um resultado semelhante ao seguinte:

{
 "timeSeries": [
  {
   "metric": {
    "labels": {
     "state": "buffered"
    },
    "type": "agent.googleapis.com/memory/bytes_used"
   },
   "resource": {
    "type": "[INSTANCE-TYPE]",
    "labels": {
     "instance_id": "[YOUR-VM-INSTANCE-ID]",
     "zone": "[YOUR-INSTANCE-ZONE]",
     "project_id": "[YOUR-PROJECT-ID]"
    }
   },
   "metricKind": "GAUGE",
   "valueType": "DOUBLE",
   "points": [
    {
     "interval": {
      "startTime": "[START_TIME]",
      "endTime": "[END_TIME]"
     },
     "value": {
      "doubleValue": 27451392
     }
    },
    ...

Se a chamada da API devolver dados de séries cronológicas da sua instância de VM, conforme mostrado acima, o agente está a funcionar corretamente e a configuração está concluída.

Se não vir dados de séries cronológicas, verifique o seguinte:

  • Se a sua chamada API resultar numa mensagem de erro, isto não indica um problema do agente. Verifique se os campos do APIs Explorer estão preenchidos corretamente:

    • Os erros "Argumento inválido" indicam provavelmente um problema com a ortografia e o formato do ID do projeto, do filtro ou das duas datas/horas.

      Os requisitos dos argumentos de data/hora dependem do tipo de métrica especificado. Um tipo de métrica regista dados de GAUGE, DELTA ou CUMULATIVE. Consulte MetricKind para mais informações.

      Para as métricas DELTA e CUMULATIVE, são necessárias as horas de início e de fim, e a hora de fim tem de ser posterior à hora de início. Estes tipos de métricas registam alterações medidas ao longo do tempo, pelo que as horas de início e fim têm de definir um intervalo diferente de zero.

    • Os erros "Não autorizado" podem significar que escreveu incorretamente o ID do projeto.

    • Os erros "Não encontrado" podem indicar que omitiu o prefixo projects/ necessário no campo "name" (nome).

    Corrija os problemas e tente novamente a chamada da API.

  • Se a chamada da API for bem-sucedida, mas vir apenas uma resposta vazia, { }, verifique se o filtro e o intervalo de tempo estão corretos. Os erros na formatação das datas/horas podem resultar na não devolução de dados. Se tudo parecer correto, mas não estiver a receber dados, significa que o agente não está a enviar dados de métricas ou, pelo menos, não os está a enviar para o projeto que espera. Isto pode indicar um problema de credenciais. Consulte o artigo Validar credenciais de chave privada.

Reinstalar o agente de monitorização

A instalação da versão mais recente do agente pode resolver muitos problemas:

Determinar que VMs do Linux têm o agente instalado

  • Execute uma das seguintes consultas para ver que VMs Linux estão a executar o agente:

    Tenha em atenção que, para cada consulta, tem de introduzir o nome do projeto e ajustar os limites de tempo.

Reiniciar automaticamente o agente

Pode configurar um script para verificar se o agente está em execução e, em seguida, reiniciar o agente caso este falhe.

Por exemplo, no Linux, pode criar a seguinte entrada crontab para verificar o estado do agente a cada 5 minutos:

  */5 * * * * /bin/pidof stackdriver-collectd >/dev/null 2>&1 || /usr/sbin/service stackdriver-agent restart >/dev/null 2>&1

Problemas conhecidos

As secções seguintes descrevem problemas conhecidos do agente de monitorização.

Problema de acesso aos dados de processos (Windows)

Pode ver uma mensagem de erro do agente no registo de eventos do Windows semelhante à seguinte:

Read access denied for processes: Registry (84), smss.exe (264), csrss.exe (376), wininit.exe (448), csrss.exe (456), services.exe (580), NisSrv.exe (3008), MsMpEng.exe (3624), csrss.exe (7044)

Esta mensagem indica que o agente não tem acesso a estes dados no seu sistema. Para deixar de ver esta mensagem, pode conceder autorizações suficientes ao utilizador SYSTEM para ler os dados de processos dos processos e serviços indicados nas mensagens de erro. Se não precisar destes dados, pode ignorar com segurança estas mensagens informativas.

Problemas de cache de metadados (Linux)

Pode ver uma mensagem de erro no ficheiro de registo do sistema Linux (/var/log/syslog no Debian / Ubuntu ou /var/log/messages no Red Hat / CentOS / SLES) semelhante à seguinte:

collectd[25571]: uc_update: Value too old: name = myhost/processes-all/ps_vm;
value time = 1511345468.180; last cache update = 1511345468.180;
write_gcm: wg_update_stats failed.
write_gcm: uc_update returned an error.

Estas mensagens são avisos inofensivos e não indicam perda de dados. Estas mensagens são geradas pela implementação do plug-in de processos atual quando existe uma incompatibilidade de data/hora.

Problema de ponto de dados com valor infinito ignorado (Linux)

Pode ver uma mensagem de erro no ficheiro de registo do sistema Linux (/var/log/syslog no Debian / Ubuntu ou /var/log/messages no Red Hat / CentOS / SLES) semelhante à seguinte:

write_gcm: can not take infinite value

Esta mensagem indica que um único ponto de dados com formato incorreto foi ignorado. Normalmente, isto não é prejudicial e pode ser ignorado.

Problema de limitação da chave de metadados (Linux)

Pode ver uma mensagem de erro no ficheiro de registo do sistema Linux (/var/log/syslog no Debian / Ubuntu ou /var/log/messages no Red Hat / CentOS / SLES) semelhante à seguinte:

collectd[7440]:match_throttle_metadata_keys: uc_meta_data_add returned an error
collectd[7440]:match_throttle_metadata_keys: mtg_update_stats failed

Esta mensagem indica que a atualização do estado da limitação da memória falha uma vez. Normalmente, é inofensivo, mas pode ser um sinal de que o agente está a ficar sem memória, especialmente se ocorrer com frequência.

Problema de quota da API Cloud Monitoring (Linux)

Pode ver uma mensagem de erro no ficheiro de registo do sistema Linux (/var/log/syslog no Debian / Ubuntu ou /var/log/messages no Red Hat / CentOS / SLES) semelhante à seguinte:

collectd[25198]: write_gcm: Unsuccessful HTTP request 429

Esta mensagem indica que o limite de quota da API Cloud Monitoring foi atingido. Siga o guia de Quota para obter informações sobre como gerir o limite de quota.

Utilização elevada da memória devido a COLLECTD_INTERVAL baixa (Linux)

Pode observar uma utilização elevada de memória do agente quando o COLLECTD_INTERVAL está configurado para ser mais curto do que o 60 seconds predefinido, por exemplo, 10 seconds. Esta é uma limitação conhecida do agente, uma vez que envia pedidos em série a partir de uma única discussão. Para mitigar esta situação, considere reduzir o COLLECTD_INTERVAL apenas para um subconjunto de métricas necessárias e deixar as restantes métricas no intervalo predefinido.

Problema de overflow do buffer de tokens (Linux)

Pode ver uma mensagem de erro no ficheiro de registo do sistema Linux (/var/log/syslog no Debian / Ubuntu ou /var/log/messages no Red Hat / CentOS / SLES) semelhante à seguinte:

write_gcm: Error or buffer overflow when building auth_header
write_gcm: wg_oauth2_get_auth_header failed.
write_gcm: wg_transmit_unique_segment failed.
write_gcm: wg_transmit_unique_segments failed. Flushing.

Estas mensagens indicam que o agente de monitorização tem de ser atualizado para a versão 6.1.2 ou superior.

O repositório alterou o respetivo valor "Origin" (Linux)

Pode ver uma mensagem de erro semelhante à seguinte ao atualizar o agente, instalar o agente ou executar apt-get update no Linux Debian/Ubuntu:

E: Repository 'https://packages.cloud.google.com/apt google-cloud-monitoring-buster-all InRelease' changed its 'Origin' value from 'google-cloud-monitoring-buster' to 'namespaces/cloud-ops-agents-artifacts/repositories/google-cloud-monitoring-buster-all'
E: Repository 'https://packages.cloud.google.com/apt google-cloud-monitoring-buster-all InRelease' changed its 'Label' value from 'google-cloud-monitoring-buster' to 'namespaces/cloud-ops-agents-artifacts/repositories/google-cloud-monitoring-buster-all'

Esta mensagem indica que a cache do repositório de pacotes pode ter divergido da respetiva origem. Para resolver este problema, execute o seguinte comando:

apt-get --allow-releaseinfo-change update

Em seguida, execute a atualização ou a instalação novamente.

Agente removido comunicado pela consola Google Cloud como instalado

Depois de desinstalar o agente, a Google Cloud consola pode demorar até uma hora a comunicar esta alteração.

O agente de monitorização não aparece na lista Desinstalar um programa do Windows

Para desinstalar o agente de monitorização quando não estiver listado na lista Desinstalar um programa do painel de controlo do Windows, execute uninstall.exe a partir do diretório onde o instalou.