Risolvi i problemi relativi alle estensioni VM

Questo documento descrive come verificare l'installazione delle estensioni VM, diagnosticare i problemi relativi all'implementazione delle policy e allo stato delle estensioni VM e visualizzare i log di debug dell'agente guest sulle istanze di macchine virtuali (VM) Compute Engine. Segui queste istruzioni per identificare il motivo per cui un'estensione prevista non è stata installata, il motivo per cui un'estensione imprevista viene eseguita su una VM o il motivo per cui un processo di estensione è stato interrotto.

Prima di iniziare

Prima di risolvere i problemi relativi alle estensioni VM sulle VM, completa i seguenti prerequisiti:

  • Verifica di disporre delle autorizzazioni necessarie per ispezionare le policy di estensione, i metadati per le estensioni supportate dal gestore di estensioni VM e gli stati delle estensioni VM nella gerarchia delle risorse Cloud de Confiance by S3NS . Per saperne di più, consulta Visualizza i dettagli e lo stato delle estensioni VM.
  • Per identificare errori di installazione, arresti anomali o rollback prima di connetterti alle singole VM, controlla gli eventi storici di applicazione delle estensioni in Cloud Logging. Per saperne di più, consulta Visualizza i log delle estensioni VM.
  • Per ispezionare i processi delle estensioni in esecuzione e i log di debug dell'agente guest direttamente su una VM, verifica di poterti connettere alla VM utilizzando SSH o RDP.

Verifica che un'estensione sia installata

Per verificare se un'estensione è installata e in esecuzione su una VM di Compute Engine, controlla lo stato dell'estensione della VM utilizzando i metodi di sola lettura. Connettiti alla VM solo se hai bisogno dei dettagli dei processi o dei log del sistema operativo guest.

Ispeziona lo stato dell'estensione VM utilizzando i metodi di sola lettura

Per controllare lo stato di runtime e lo stato di integrità delle estensioni installate senza connetterti alla VM, esegui il comando gcloud beta compute instances list-vm-extension-states o gcloud beta compute instances get-vm-extension-state oppure chiama i metodi dell'API REST equivalenti. La risposta restituisce la versione attiva di ogni estensione, lo stato di applicazione (enforcementState), lo stato di integrità (healthStatus), il messaggio di diagnostica (healthMsg) e l'ID della policy di gestione (policyId). Per ulteriori informazioni, vedi Visualizza gli stati delle estensioni VM su un'istanza.

Ispeziona i processi di estensione in esecuzione sulla VM

Se le query sullo stato remoto non restituiscono lo stato previsto, connettiti alla VM e controlla se il processo dell'estensione è in esecuzione nel sistema operativo guest.

La tabella seguente elenca i nomi dei processi per ogni estensione supportata:

Nome estensione Nome del processo dell'estensione
google-cloud-sap-extension google_cloud_sap_agent
google-cloud-workload-extension google_cloud_workload_agent
ops-agent ops_agent

Per verificare se il processo dell'estensione è in esecuzione sulla VM, seleziona il tuo sistema operativo:

Linux

Per elencare il processo di estensione in esecuzione, esegui questo comando:

ps aux | grep 'EXTENSION_PROCESS_NAME'
Sostituisci EXTENSION_PROCESS_NAME con il nome del processo dell'estensione della tabella precedente. Ad esempio, per elencare il processo di estensione ops-agent, esegui questo comando:
ps aux | grep 'ops_agent'

Windows

Per elencare il processo di estensione in esecuzione, esegui questo comando:

tasklist | findstr "EXTENSION_PROCESS_NAME"
Sostituisci EXTENSION_PROCESS_NAME con il nome del processo dell'estensione della tabella precedente. Ad esempio, per elencare il processo di estensione ops-agent, esegui questo comando:
tasklist | findstr "ops_agent"

Il seguente snippet mostra un esempio di output del comando ps quando l'estensione ops-agent è in esecuzione su una VM Linux:

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

Esamina le voci di installazione dell'agente guest

Per verificare quando l'agente guest ha scaricato, estratto e avviato un plug-in di estensione, attiva e visualizza i log di debug per l'agente guest.

Il seguente snippet mostra esempi di voci di log dell'agente guest quando l'agente guest installa e avvia l'estensione ops-agent su una VM 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"

Risolvere i problemi di installazione

Se un'estensione non è installata su una VM o se su una VM viene eseguita un'estensione imprevista, diagnostica l'implementazione della policy, le etichette di destinazione e lo stato di applicazione prima di riprovare l'installazione.

Per identificare il motivo per cui l'installazione di un'estensione su una VM non è riuscita, completa i seguenti passaggi diagnostici:

  1. Attendi l'applicazione delle norme. L'implementazione di una policy, inclusi i nuovi tentativi, può richiedere fino a un'ora per essere completata nelle VM di destinazione. Per saperne di più sull'ispezione dello stato di avanzamento dell'implementazione, consulta Visualizza le policy delle estensioni.
  2. Controlla che le etichette di inclusione specificate nella policy corrispondano alle etichette della VM e verifica i metadati per le estensioni supportate dal gestore di estensioni VM:
    • Per controllare i selettori delle etichette delle policy e i numeri di priorità nell'organizzazione, nella cartella o nel progetto, consulta Visualizza le policy di estensione.
    • Per controllare i nomi, i numeri di versione e i livelli di assistenza delle estensioni supportate dal gestore di estensioni VM in tutte le zone o in una zona specifica, consulta Visualizza le estensioni e le versioni delle VM.
  3. Per controllare lo stato di applicazione, lo stato di integrità, il messaggio di diagnostica e l'ID della policy di gestione (policyId), controlla lo stato dell'estensione sulla VM interessata. Gli stati di errore comuni includono INSTALL_FAILED, INCOMPATIBLE e ROLLED_BACK. Quando più policy hanno come target la stessa VM, il campo policyId mostra quale policy regola ogni estensione. Per saperne di più, consulta Visualizza gli stati delle estensioni VM su un'istanza.
  4. Per identificare gli errori di installazione a livello di guest sulla VM, attiva e visualizza i log di debug per l'agente guest.

Riprova l'installazione dell'estensione

Dopo aver risolto il problema di configurazione della policy o del sistema operativo guest, applica nuovamente la configurazione della policy in modo che l'agente guest riprovi l'installazione sulle VM interessate.

Per riprovare a installare l'estensione, scegli una delle seguenti opzioni:

  • Ricrea la policy: elimina la policy e poi creane una nuova.
  • Applica una policy temporanea con priorità più alta: per riprovare l'installazione su VM specifiche senza ricreare una policy che interessa un parco risorse di grandi dimensioni, completa i seguenti passaggi:

    1. Aggiungi un'etichetta temporanea, ad esempio status=failed, alle VM in cui l'installazione non è riuscita.
    2. Crea una policy temporanea con una priorità più alta (un valore intero più basso) che ha come target l'etichetta temporanea. Ad esempio, se la policy originale utilizza la priorità predefinita 1000, per creare una policy temporanea con priorità 500, esegui il seguente 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. Dopo che l'agente guest ha installato l'estensione sulle VM di destinazione, elimina la policy temporanea.

    4. Rimuovi l'etichetta temporanea dalle VM. L'estensione rimane installata perché la policy originale continua a governare queste VM.

Visualizza i log di debug per l'agente guest

Se le query sullo stato remoto e i log eventi di Logging non mostrano il motivo per cui un'estensione non è stata scaricata o avviata, attiva il logging di debug dettagliato nella sezione Core del file di configurazione dell'agente guest.

Per attivare e visualizzare i log di debug per l'agente guest, seleziona il tuo sistema operativo:

Linux

Per attivare il logging di debug su una VM Linux, completa i seguenti passaggi:

  1. Apri il file di configurazione dell'agente guest in /etc/default/instance_configs.cfg.
  2. In /etc/default/instance_configs.cfg, aggiungi le seguenti impostazioni. Se la sezione [Core] esiste già, aggiungi log_level e log_verbosity in [Core]:

    [Core]
    log_level = 4
    log_verbosity = 4
    
  3. Per riavviare l'agente guest, esegui questo comando:

    sudo systemctl restart google-guest-agent-manager
    
  4. Per visualizzare i log dell'agente guest generati durante l'installazione dell'estensione, esegui questo comando:

    journalctl -u google-guest-agent-manager
    

Windows

Per attivare il logging di debug su una VM Windows, completa i seguenti passaggi:

  1. Apri il file di configurazione dell'agente guest in C:\Program Files\Google\Compute Engine\instance_configs.cfg.
  2. In instance_configs.cfg, aggiungi le seguenti impostazioni. Se la sezione [Core] esiste già, aggiungi log_level e log_verbosity in [Core]:

    [Core]
    log_level = 4
    log_verbosity = 4
    
  3. In un prompt dei comandi o in una finestra di PowerShell con privilegi elevati, esegui i seguenti comandi per riavviare l'agente guest manager:

    net stop GCEAgentManager
    net start GCEAgentManager
    
  4. In PowerShell, per visualizzare i log dell'agente guest generati durante l'installazione dell'estensione, esegui questo comando:

    Get-Eventlog -Source google_guest_agent_manager -LogName Application
    

Risolvi gli errori comuni dei log dell'agente guest

Quando esamini i log di debug dell'agente guest, controlla se sono presenti errori di vincolo delle risorse che impediscono l'estrazione o l'esecuzione delle estensioni sulla VM.

La tabella seguente elenca gli errori comuni segnalati nei log di debug dell'agente guest e come risolverli:

Condizione di errore Risoluzione
Spazio su disco insufficiente Se i log indicano che la VM non dispone di spazio su disco sufficiente per scaricare o estrarre l'archivio delle estensioni, elimina i file inutilizzati o ridimensiona il disco di avvio.
Utilizzo eccessivo delle risorse Se i log indicano che l'agente guest ha interrotto l'estensione a causa di un utilizzo elevato della memoria o della CPU, modifica il tipo di macchina della VM in uno con più memoria o vCPU.

Passaggi successivi