Resolver problemas de extensões de VM

Neste documento, descrevemos como verificar a instalação da extensão de VM, diagnosticar problemas de lançamento de políticas e de estado da extensão de VM e visualizar registros de depuração do agente convidado em instâncias de máquina virtual (VM) do Compute Engine. Use estas instruções para identificar por que uma extensão esperada não foi instalada, por que uma extensão inesperada é executada em uma VM ou por que um processo de extensão foi interrompido.

Antes de começar

Antes de resolver problemas de extensão de VM nas suas VMs, conclua os seguintes pré-requisitos:

  • Confirme se você tem as permissões necessárias para inspecionar políticas de extensão, metadados de extensões compatíveis com o Gerenciador de Extensões de VM e estados de extensão de VM na sua hierarquia de recursos do Cloud de Confiance by S3NS . Para mais informações, consulte Ver detalhes e status da extensão da VM.
  • Para identificar falhas de instalação, falhas ou reversões antes de se conectar a VMs individuais, verifique os eventos históricos de aplicação de extensões no Cloud Logging. Para mais informações, consulte Visualizar registros de extensão de VM.
  • Para inspecionar os processos de extensão em execução e os registros de depuração do agente convidado diretamente em uma VM, confirme se é possível se conectar à VM usando SSH ou RDP.

Verificar se uma extensão está instalada

Para confirmar se uma extensão está instalada e em execução em uma VM do Compute Engine, inspecione o estado dela usando os métodos somente leitura. Conecte-se à VM somente se precisar de detalhes do processo ou do registro do SO convidado.

Inspecionar o estado da extensão da VM usando os métodos somente leitura

Para verificar o estado do ambiente de execução e o status de integridade das extensões instaladas sem se conectar à VM, execute o comando gcloud beta compute instances list-vm-extension-states ou gcloud beta compute instances get-vm-extension-state ou chame os métodos equivalentes da API REST. A resposta retorna a versão ativa de cada extensão, o estado de aplicação (enforcementState), o status de integridade (healthStatus), a mensagem de diagnóstico (healthMsg) e o ID da política de controle (policyId). Para mais informações, consulte Ver estados de extensão de VM em uma instância.

Inspecionar os processos de extensão em execução na VM

Se as consultas de estado remoto não retornarem o status esperado, conecte-se à VM e verifique se o processo da extensão está em execução no sistema operacional convidado.

A tabela a seguir lista os nomes de processo de cada extensão compatível:

Nome da extensão Nome do processo de extensão
google-cloud-sap-extension google_cloud_sap_agent
google-cloud-workload-extension google_cloud_workload_agent
ops-agent ops_agent

Para verificar se o processo de extensão está em execução na VM, selecione seu sistema operacional:

Linux

Para listar o processo de extensão em execução, execute o seguinte comando:

ps aux | grep 'EXTENSION_PROCESS_NAME'
Substitua EXTENSION_PROCESS_NAME pelo nome do processo da extensão na tabela anterior. Por exemplo, para listar o processo de extensão ops-agent, execute o seguinte comando:
ps aux | grep 'ops_agent'

Windows

Para listar o processo de extensão em execução, execute o seguinte comando:

tasklist | findstr "EXTENSION_PROCESS_NAME"
Substitua EXTENSION_PROCESS_NAME pelo nome do processo da extensão da tabela anterior. Por exemplo, para listar o processo de extensão ops-agent, execute o seguinte comando:
tasklist | findstr "ops_agent"

O snippet a seguir mostra um exemplo de saída do comando ps quando a extensão ops-agent está em execução em uma VM do Linux:

....
/var/lib/google-guest-agent/931374772276853249/plugins/ops-agent_baddabb3dac3
....

Analisar as entradas de instalação do agente convidado

Para confirmar quando o agente convidado fez o download, extraiu e iniciou um plug-in de extensão, ative e confira os registros de depuração do agente convidado.

O snippet a seguir mostra exemplos de entradas de registro do agente convidado quando ele instala e inicia a extensão ops-agent em uma VM do Linux:

my-instance google_guest_agent [14972]: Installing plugin "ops-agent", revision "2dfa648c1892da87"
my-instance google_guest_agent [14972]: (client.go:181) Sent message [[type.googleapis.com/agent_controlplane.PluginEventMessage: (revision_id:"2dfa648c1892da87)]]
my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "DownloadPluginStep" on plugin "ops-agent_2dfa648c1892da87"
my-instance google_guest_agent [14972]: (pluginengine.go:316) Successfully downloaded "https://storage.googleapis.com/acp-gcs-bucket-us-central1-a/ops-agent
my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "UnpackPluginArchiveStep" on plugin "ops-agent_2dfa648c1892da87"
my-instance google_guest_agent [14972]: (pluginengine.go:361) Successfully unpacked "/var/lib/google-guest-agent/ops-agent.tar.gz" to "/google-guest-agent/ops-agent_2dfa648c1892da87
my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "LaunchPluginStep" on plugin "ops-agent_2dfa648c1892da87"
my-instance google_guest_agent [14972]: (run_linux.go:32) Attempting process start: (OutputType:0 Name:/var/lib/google-guest-agent/plugins/ops-agent_2dfa648c1892da87)
my-instance google_guest_agent [14972]: (pluginlauncher.go:132) Launched a plugin process from "/var/lib/google-guest-agent/plugins/ops-agent_2dfa648c1892da87"
my-instance google_guest_agent [14972]: (plugin.go:136) Dialing in on plugin "ops-agent 2dfa648c1892da87"
my-instance google_guest_agent [14972]: (plugin.go:51) Executing start request on plugin "ops-agent_2dfa648c1892da87"

Resolver problemas na instalação

Se uma extensão não estiver instalada em uma VM ou se uma extensão inesperada for executada em uma VM, diagnostique o lançamento da política, os rótulos de destino e o estado de aplicação antes de tentar a instalação novamente.

Para identificar por que uma extensão não foi instalada em uma VM, siga estas etapas de diagnóstico:

  1. Aguarde a aplicação da política. O lançamento de uma política, incluindo novas tentativas, pode levar até uma hora para ser concluído nas VMs de destino. Para mais informações sobre como inspecionar o progresso do lançamento, consulte Ver políticas de extensão.
  2. Verifique se os rótulos de inclusão especificados na política correspondem aos rótulos na VM e verifique os metadados das extensões compatíveis com o Gerenciador de Extensões de VM:
    • Para verificar os seletores de rótulos de política e os números de prioridade na organização, pasta ou projeto, consulte Ver políticas de extensão.
    • Para verificar os nomes, números de versão e níveis de suporte das extensões que o Gerenciador de extensões de VM aceita em todas as zonas ou em uma zona específica, consulte Ver extensões e versões de VM.
  3. Para verificar o estado de aplicação, o status de integridade, a mensagem de diagnóstico e o ID da política de controle (policyId), inspecione o estado da extensão na VM afetada. Os estados de erro comuns incluem INSTALL_FAILED, INCOMPATIBLE e ROLLED_BACK. Quando várias políticas segmentam a mesma VM, o campo policyId mostra qual política rege cada extensão. Para mais informações, consulte Ver estados de extensão de VM em uma instância.
  4. Para identificar erros de instalação no nível do convidado na VM, ative e visualize os registros de depuração do agente convidado.

Tentar instalar a extensão de novo

Depois de corrigir a configuração da política ou o problema do SO convidado, aplique novamente a configuração da política para que o agente convidado tente instalar novamente nas VMs afetadas.

Para tentar instalar a extensão novamente, escolha uma das seguintes opções:

  • Recrie a política: exclua a política e crie uma nova.
  • Aplicar uma política temporária de prioridade mais alta: para tentar instalar novamente em VMs específicas sem recriar uma política que afete uma grande frota, siga estas etapas:

    1. Adicione um rótulo temporário, como status=failed, às VMs em que a instalação falhou.
    2. Crie uma política temporária com uma prioridade mais alta (um valor inteiro menor) que tenha como destino o rótulo temporário. Por exemplo, se a política original usar a prioridade padrão de 1000, para criar uma política temporária com prioridade 500, execute o seguinte comando:

      gcloud compute zone-vm-extension-policies create temp-policy \
          --project=test-project \
          --zone=us-central1-f \
          --extensions=ops-agent \
          --config-from-file=ops-agent="/usr/ops-agent-config.yaml" \
          --priority=500 \
          --inclusion-labels=status=failed
      
    3. Depois que o agente convidado instalar a extensão nas VMs de destino, exclua a política temporária.

    4. Remova o rótulo temporário das VMs. A extensão permanece instalada porque a política original ainda rege essas VMs.

Ver registros de depuração do agente convidado

Se as consultas de estado remoto e os logs de eventos do Logging não mostrarem por que uma extensão não foi transferida por download ou iniciada, ative o registro de depuração detalhado na seção Core do arquivo de configuração do agente convidado.

Para ativar e visualizar os registros de depuração do agente convidado, selecione seu sistema operacional:

Linux

Para ativar o registro de depuração em uma VM do Linux, siga estas etapas:

  1. Abra o arquivo de configuração do agente convidado em /etc/default/instance_configs.cfg.
  2. Em /etc/default/instance_configs.cfg, adicione as configurações a seguir. Se a seção [Core] já existir, adicione log_level e log_verbosity em [Core]:

    [Core]
    log_level = 4
    log_verbosity = 4
    
  3. Para reiniciar o gerenciador de agentes convidados, execute o seguinte comando:

    sudo systemctl restart google-guest-agent-manager
    
  4. Para ver os registros agênticos do agente convidado gerados durante a instalação da extensão, execute o seguinte comando:

    journalctl -u google-guest-agent-manager
    

Windows

Para ativar o registro de depuração em uma VM do Windows, siga estas etapas:

  1. Abra o arquivo de configuração do agente convidado em C:\Program Files\Google\Compute Engine\instance_configs.cfg.
  2. Em instance_configs.cfg, adicione as configurações a seguir. Se a seção [Core] já existir, adicione log_level e log_verbosity em [Core]:

    [Core]
    log_level = 4
    log_verbosity = 4
    
  3. Em uma janela elevada do prompt de comando ou do PowerShell, para reiniciar o gerenciador de agentes convidados, execute os seguintes comandos:

    net stop GCEAgentManager
    net start GCEAgentManager
    
  4. No PowerShell, para ver os registros agênticos do agente convidado gerados durante a instalação da extensão, execute o seguinte comando:

    Get-Eventlog -Source google_guest_agent_manager -LogName Application
    

Resolver erros comuns de registro agêntico

Ao inspecionar os registros de depuração do agente convidado, verifique se há erros de restrição de recursos que impedem que as extensões sejam extraídas ou executadas na VM.

A tabela a seguir lista os erros comuns informados nos registros de depuração do agente convidado e como resolvê-los:

Condição de erro Resolução
Espaço em disco insuficiente Se os registros informarem que a VM não tem espaço em disco suficiente para baixar ou extrair o arquivo da extensão, exclua os arquivos não utilizados ou redimensione o disco de inicialização.
Uso excessivo de recursos Se os registros indicarem que o agente convidado interrompeu a extensão devido ao alto uso de memória ou CPU, mude o tipo de máquina da VM para um com mais memória ou vCPUs.

A seguir