Utilizza i dump del core per analizzare le cause per cui un'istanza di macchina virtuale (VM) non risponde.
Per raccogliere i dump del core su Compute Engine, devi configurare le VM in modo che ricevano un indicatore NMI (Non-Maskable Interrupt), quindi eseguire un comando SendDiagnosticInterrupt
per provocare un kernel panic o una schermata blu nel sistema operativo. Un kernel panic o una schermata blu avviano una raccolta di dump del core da parte del sistema operativo guest. Questi dump del core possono essere utilizzati per scopi di debug, in particolare in scenari difficili da riprodurre, come un blocco del kernel.
Prima di iniziare
- L'invio di indicatori NMI viene conteggiato nella quota predefinita per le query dell'API. Per saperne di più, consulta Limiti di frequenza dell'API.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è
il processo mediante il quale la tua identità viene verificata per l'accesso a servizi e API di Google Cloud .
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
Select the tab for how you plan to use the samples on this page:
gcloud
-
Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.
Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Per saperne di più, consulta Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .
Ruoli obbligatori
Per assicurarti che il tuo account utente o il service account disponga delle autorizzazioni necessarie per inviare indicatori NMI a una VM, chiedi all'amministratore di concedere al tuo account utente o al service account il ruolo IAM Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) nel tuo progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.Questo ruolo predefinito contiene l'autorizzazione
compute.instances.sendDiagnosticInterrupt
, necessaria per inviare indicatori NMI a una VM.L'amministratore potrebbe anche essere in grado di concedere a te o al tuo service account questa autorizzazione tramite ruoli personalizzati o altri ruoli predefiniti.
Panoramica
Per utilizzare i dump del core per eseguire il debug di una VM che non risponde o di un problema di sicurezza, devi completare i seguenti passaggi:
- Configura la VM per generare dump del core
- Invia un indicatore NMI per generare dump del core
- Esamina i dump del core
Limitazioni
Per le VM in cui è attivato Secure Boot, devi disattivarlo prima di inviare un indicatore di interruzione NMI. Per le istruzioni, consulta Modifica delle opzioni Shielded VM in un'istanza VM.
Configura la VM
La risposta di una VM alla ricezione di un indicatore di interruzione NMI dipende dalla configurazione del sistema operativo della VM.
Ogni sistema operativo scrive i log dei dump del core in una posizione diversa. Ad esempio, nei sistemi operativi Ubuntu il file di dump di arresto anomalo viene salvato in
/var/crash/
per impostazione predefinita.Per configurare il sistema operativo guest in modo da generare un dump di arresto anomalo quando viene ricevuto un indicatore NMI, consulta la documentazione del sistema operativo supportato.
Sistema operativo Link alle istruzioni Note aggiuntive Ubuntu Ubuntu: Kernel crash dump Per le VM Linux, devi configurare il kernel in modo che abbia un arresto anomalo quando riceve l'indicatore di interruzione NMI.
Per configurare il kernel in modo che abbia un arresto anomalo, aggiungi quanto segue al file di configurazione:
kernel.unknown_nmi_panic=1
SUSE Linux Enterprise Server (SLES) Configure crashkernel memory for kernel core dump analysis Red Hat Enterprise Linux (RHEL) Utilizza entrambi i seguenti documenti:
Container-Optimized OS (COS) Enabling Kernel Crash Dump on GCE COS Instances Solo COS 93 e versioni successive supportano la generazione di kdump utilizzando l'indicatore NMI. Windows Generare un dump del kernel o un dump di arresto anomalo completo Le VM client Windows non conservano i file di dump della memoria, a meno che non siano membri di un dominio AD o se si verificano le seguenti condizioni:
- Il registro imposta
AlwaysKeepMemoryDump
su1
- Il disco ha più di 25 GB di spazio libero
Per saperne di più, consulta Kernel dump storage and clean up behavior in Windows 7
Invia NMI per generare dump del core
Dopo aver configurato la VM, puoi inviare l'indicatore NMI alla VM utilizzando Google Cloud CLI o REST.
gcloud
Per inviare l'indicatore NMI, utilizza il comando
instances send-diagnostic-interrupt
.gcloud compute instances send-diagnostic-interrupt VM_NAME \ --zone=ZONE
Sostituisci quanto segue:
VM_NAME
: l'ID istanza o il nome della VM da cui raccogliere i dump del coreZONE
: la zona in cui si trova la VM
L'output è simile al seguente:
<Empty Response>
Per un elenco completo degli output, consulta la sezione successiva di questo documento relativa alle "risposte ai comandi NMI".
REST
Facoltativo. Se non è già disponibile, crea una chiave API. Per saperne di più sulla creazione delle chiavi API, consulta Crea una chiave API.
Per inviare l'indicatore NMI, invia una richiesta
POST
al metodosendDiagnosticInterrupt
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/sendDiagnosticInterrupt?key=API_KEY
Ad esempio, puoi utilizzare il comando
curl
per inviare la richiesta come segue:curl --request POST 'https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/sendDiagnosticInterrupt?key=API_KEY' \ --header 'Authorization: Bearer $(gcloud auth print-access-token)' \ --header 'Accept: application/json' \ --compressed
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto in cui creare la VMZONE
: la zona in cui si trova la VMVM_NAME
: l'ID istanza o il nome della VM da cui raccogliere i dump del coreAPI_KEY
: la tua chiave API
L'output è simile al seguente:
<Empty Response>
Per un elenco completo degli output, consulta la sezione successiva di questo documento relativa alle "risposte ai comandi NMI".
Risposte ai comandi NMI
Quando provi a inviare un indicatore NMI, viene restituita una delle seguenti risposte.
Stato Corpo Note SUCCESS <Empty Response>
SUCCESS
indica che l'indicatore NMI è stato inviato al sistema operativo. Non garantisce che il dump del core venga raccolto o che la VM si arresti o si riavvii. Questi comportamenti sono determinati dalla configurazione del sistema operativo.FAIL UNSUPPORTED_OPERATION
Questo stato si verifica quando il sistema operativo non riceve l'indicatore NMI. I motivi sono diversi. Gli scenari comuni sono una VM in fase di migrazione live o non configurata correttamente per ricevere gli indicatori NMI.
Per risolvere il problema, puoi provare quanto segue:- Verifica che la VM sia configurata correttamente. Vedi Configura la VM.
- Attendi e riprova a inviare la richiesta
SendDiagnosticInterrupt
.
FAIL Required 'compute.instances.sendDiagnosticInterrupt' permission for [..]
Il comando non è riuscito perché l'utente che ha inviato la richiesta non dispone di autorizzazioni sufficienti.
Per risolvere il problema, puoi assegnare all'utente un ruolo contenente l'autorizzazionecompute.instances.sendDiagnosticInterrupt
.Esamina i dump del core
Esamina il file di dump di arresto anomalo nella posizione configurata o predefinita per il sistema operativo.
Ad esempio, nei sistemi operativi Ubuntu, per impostazione predefinita, il file di dump di arresto anomalo viene salvato in
/var/crash/
.Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2025-09-04 UTC.
-