Utilizza i core dump per analizzare le cause di una macchina virtuale (VM) che non risponde in esecuzione in un'istanza Compute Engine.
Per raccogliere i core dump su Compute Engine, devi configurare
VM che ricevono un segnale NMI (Non-Maskable Interrupt) e quindi eseguono un
SendDiagnosticInterrupt
per generare un prompt panic del kernel o schermata blu
del tuo sistema operativo. Un kernel panic o una schermata blu avvia un core dump
da parte del sistema operativo guest. Questi core dump possono quindi essere utilizzati
a scopo di debug, soprattutto in scenari difficili da riprodurre, come
un blocco del kernel.
Prima di iniziare
- L'invio di indicatori NMI viene conteggiato nella quota predefinita dell'API Query. Per Per ulteriori informazioni, consulta l'articolo sui limiti di frequenza API.
-
Se non l'hai già fatto, configura l'autenticazione.
Autenticazione è
Il processo di verifica dell'identità per l'accesso ai servizi e alle API di Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi eseguire l'autenticazione
Compute Engine come segue.
Select the tab for how you plan to use the samples on this page:
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Configura la VM per generare dump del core
- Invia un segnale NMI per generare i core dump
- Esaminare i dump principali
- Il registro imposta
AlwaysKeepMemoryDump
su1
- Il disco abbia più di 25 GB di spazio libero.
VM_NAME
: ID istanza o nome della VM che da raccogliere i dump principaliZONE
: la zona in cui si trova la VMFacoltativo. Se non è già disponibile, crea una chiave API. Per ulteriori informazioni sulla creazione di chiavi API, consulta Creazione di una chiave API.
Per inviare il segnale NMI, effettua 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 effettuare 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
: ID del progetto in cui creare la VMZONE
: la zona in cui si trova la VMVM_NAME
: ID istanza o 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 sulle "risposte ai comandi NMI".
- Verifica che la VM sia configurata correttamente. Vedi Configurare la VM.
- Attendi e riprova a inviare la richiesta
SendDiagnosticInterrupt
.
REST
Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Per ulteriori informazioni, vedi Esegui l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.
Ruoli obbligatori
Per assicurarti che il tuo account utente o di servizio disponga degli per inviare segnali NMI a una VM, chiedi all'amministratore di concedere al tuo account utente o di servizio Ruolo IAM Amministratore istanze Compute (v1) (
roles/compute.instanceAdmin.v1
) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.Questo ruolo predefinito contiene
compute.instances.sendDiagnosticInterrupt
autorizzazione, che è obbligatorio per inviare segnali NMI a una VM.L'amministratore potrebbe anche essere in grado di fornire al tuo account utente o di servizio questa autorizzazione con ruoli personalizzati e altri ruoli predefiniti.
Panoramica
Per utilizzare i dump principali per eseguire il debug di una VM che non risponde o per un problema di sicurezza: devi completare questi passaggi:
Limitazioni
Per le VM in cui è abilitato l'Avvio protetto, devi disabilitare l'Avvio protetto prima di inviare un segnale di interruzione NMI. Per istruzioni, vedi Modifica delle opzioni delle Shielded VM su un'istanza VM.
Configura VM
La risposta di una VM alla ricezione di un segnale di interruzione NMI dipende configurazione del sistema operativo.
Ogni sistema operativo scrive i propri log di dump principali in una posizione diversa. Per Esempio: nei sistemi operativi Ubuntu il file dump di un arresto anomalo viene salvato
/var/crash/
per impostazione predefinita.Configurare il sistema operativo guest in modo che generi un dump di arresto anomalo quando viene generato un segnale NMI. ricevuta, consulta la documentazione relativa al sistema operativo supportato.
Sistema operativo Link alle istruzioni Note aggiuntive Ubuntu Ubuntu: kernel dump di arresto anomalo Per le VM Linux, devi configurare il kernel in modo che si arresti in modo anomalo quando riceve il Segnale di interruzione NMI.
Per configurare l'arresto anomalo del kernel, aggiungi quanto segue alla configurazione file:
kernel.unknown_nmi_panic=1
SUSE Linux Enterprise Server (SLES) Configura memoria Crashkernel per l'analisi del dump dei core del kernel Red Hat Enterprise Linux (RHEL) Utilizza entrambi i seguenti documenti:
Container-Optimized OS (COS) Attivazione in corso... Dump degli arresti anomali del kernel sulle istanze COS GCE Solo COS 93 e versioni successive supportano la generazione kdump tramite segnale NMI. Windows Genera un kernel o un arresto anomalo del sistema Le VM client di Windows non conservano i file di dump della memoria a meno che non siano membri di un AD o quanto segue:
Per ulteriori informazioni, vedi Comportamento di archiviazione e pulizia del dump del kernel in Windows 7
Invia NMI per generare core dump
Dopo aver configurato la VM, puoi inviare il segnale NMI alla VM utilizzando Google Cloud CLI oppure REST.
gcloud
Per inviare il segnale NMI, utilizza il Comando
instances send-diagnostic-interrupt
.gcloud compute instances send-diagnostic-interrupt VM_NAME \ --zone=ZONE
Sostituisci quanto segue:
L'output è simile al seguente:
<Empty Response>
Per un elenco completo degli output, consulta la sezione successiva di questo documento "Risposte del comando NMI".
REST
Risposte ai comandi NMI
Quando provi a inviare un messaggio di errore, viene restituita una delle seguenti risposte Segnale NMI.
Stato Corpo Note SUCCESS <Empty Response>
SUCCESS
mostra che il segnale NMI viene inviato un intero sistema operativo. Non garantisce che il core dump venga raccolto. che la VM si arresta o riavvia. Questi comportamenti sono determinati configurazione del sistema operativo.NON SUPERATO UNSUPPORTED_OPERATION
Questo accade quando il sistema operativo non riesce a ricevere il segnale NMI. Là per diversi motivi. Gli scenari comuni sono che la VM viene sottoposti a migrazione live o la VM non è configurato correttamente per ricevere segnali NMI.
Per risolvere il problema, prova a procedere nel seguente modo:NON SUPERATO Required 'compute.instances.sendDiagnosticInterrupt' permission for [..]
Il comando non è riuscito perché l'utente che effettua la richiesta non dispone autorizzazioni sufficienti.
Per risolvere il problema, puoi assegnare all'utente un ruolo che contiene Autorizzazionecompute.instances.sendDiagnosticInterrupt
.Esamina i dump del core
Esamina il file di dump dell'arresto anomalo nella posizione configurata o predefinita per il tuo un intero sistema operativo.
Ad esempio, nei sistemi operativi Ubuntu, per impostazione predefinita, il file dump dell'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 2024-10-14 UTC.
-