Usa volcados del núcleo para analizar las causas de que una instancia de máquina virtual (VM) no responda.
Para recoger volcados del núcleo en Compute Engine, debes configurar tus máquinas virtuales para que reciban una señal de interrupción no enmascarable (NMI) y, a continuación, ejecutar un comando SendDiagnosticInterrupt
para provocar un pánico del kernel o una pantalla azul en tu sistema operativo. Un pánico del kernel o una pantalla azul inician una colección de volcado del núcleo por parte del sistema operativo invitado. Estos volcados de memoria se pueden usar para depurar, sobre todo en situaciones difíciles de reproducir, como un bloqueo del kernel.
Antes de empezar
- El envío de señales de NMI se contabiliza en la cuota de API Consultas predeterminada. Para obtener más información, consulta la página Límites de frecuencia de la API.
-
Si aún no lo has hecho, configura la autenticación.
La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Select the tab for how you plan to use the samples on this page:
gcloud
-
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- Set a default region and zone.
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .
Roles obligatorios
Para asegurarte de que tu cuenta de usuario o de servicio tiene el permiso necesario para enviar señales NMI a una VM, pide a tu administrador que le conceda a tu cuenta de usuario o de servicio el rol de gestión de identidades y accesos Administrador de instancias de Compute (v. 1) (
roles/compute.instanceAdmin.v1
) en tu proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.Este rol predefinido contiene el permiso
compute.instances.sendDiagnosticInterrupt
, que es necesario para enviar señales NMI a una VM.Es posible que tu administrador también pueda conceder este permiso a tu usuario o cuenta de servicio con roles personalizados u otros roles predefinidos.
Información general
Para usar los volcados de memoria para depurar una máquina virtual que no responde o un problema de seguridad, debes completar los siguientes pasos:
- Configura tu VM para generar volcados del núcleo
- Enviar una señal NMI para generar volcados del núcleo
- Revisa los volcados principales.
Limitaciones
En las VMs que tienen habilitado el arranque seguro, debes inhabilitarlo antes de enviar una señal de interrupción NMI. Para obtener instrucciones, consulta Modificar las opciones de VM blindada en una instancia de máquina virtual.
Configurar una VM
La respuesta de una VM al recibir una señal de interrupción NMI depende de la configuración del sistema operativo de la VM.
Cada sistema operativo escribe sus registros de volcado de memoria en una ubicación diferente. Por ejemplo, en los sistemas operativos Ubuntu, el archivo de volcado de memoria se guarda en
/var/crash/
de forma predeterminada.Para configurar tu SO invitado de forma que genere un volcado de memoria cuando se reciba una señal NMI, consulta la documentación del sistema operativo compatible.
Sistema operativo Enlaces a instrucciones Notas adicionales Ubuntu Ubuntu: volcado de memoria tras un fallo del kernel En el caso de las máquinas virtuales Linux, debes configurar el kernel para que falle cuando reciba la señal de interrupción NMI.
Para configurar el kernel para que falle, añade lo siguiente a tu archivo de configuración:
kernel.unknown_nmi_panic=1
SUSE Linux Enterprise Server (SLES) Configurar la memoria de crashkernel para analizar el volcado de memoria del kernel Red Hat Enterprise Linux (RHEL) Utiliza los dos documentos siguientes:
Container-Optimized OS (COS) Habilitar el volcado de memoria tras un fallo del kernel en instancias de COS de GCE Solo COS 93 y versiones posteriores admiten la generación de kdump mediante la señal NMI. Windows Generar un volcado de memoria del kernel o un volcado de memoria completo Las VMs de cliente Windows no conservan los archivos de volcado de memoria a menos que sean miembros de un dominio de AD o se cumpla lo siguiente:
- El registro asigna el valor
1
aAlwaysKeepMemoryDump
. - El disco tiene más de 25 GB de espacio libre
Para obtener más información, consulta el artículo Almacenamiento de volcado del kernel y comportamiento de limpieza en Windows 7.
Enviar una interrupción no enmascarable para generar volcados principales
Una vez que hayas configurado la VM, podrás enviarle la señal NMI mediante la CLI de Google Cloud o REST.
gcloud
Para enviar la señal NMI, usa el comando
instances send-diagnostic-interrupt
.gcloud compute instances send-diagnostic-interrupt VM_NAME \ --zone=ZONE
Haz los cambios siguientes:
VM_NAME
: ID o nombre de la instancia de VM de la que quieras recoger los volcados principalesZONE
: la zona en la que se encuentra tu VM
El resultado debería ser similar al siguiente:
<Empty Response>
Para ver una lista completa de las salidas, consulta la siguiente sección de este documento sobre las respuestas de los comandos NMI.
REST
Opcional. Si aún no la tienes, crea una clave de API. Para obtener más información sobre cómo crear claves de API, consulta el artículo Crear una clave de API.
Para enviar la señal NMI, haz una solicitud
POST
al métodosendDiagnosticInterrupt
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/sendDiagnosticInterrupt?key=API_KEY
Por ejemplo, puedes usar el comando
curl
para hacer la solicitud de la siguiente manera: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
Haz los cambios siguientes:
PROJECT_ID
: ID del proyecto en el que se creará la VM.ZONE
: la zona en la que se encuentra tu VMVM_NAME
: ID o nombre de la VM de la que quieras recoger los volcados principalesAPI_KEY
: tu clave de API
El resultado debería ser similar al siguiente:
<Empty Response>
Para ver una lista completa de las salidas, consulta la siguiente sección de este documento sobre las respuestas de los comandos NMI.
Respuestas a comandos NMI
Cuando intentas enviar una señal NMI, se devuelve una de las siguientes respuestas.
Estado Body Notas SE HA REALIZADO CORRECTAMENTE <Empty Response>
SUCCESS
muestra que la señal NMI se envía al sistema operativo. No garantiza que se recoja el volcado del núcleo ni que la VM se apague o se reinicie. Estos comportamientos se determinan en la configuración del sistema operativo.FAIL UNSUPPORTED_OPERATION
Esto ocurre cuando el sistema operativo no recibe la señal NMI. Esto puede ocurrir por varios motivos. Los casos habituales son que la máquina virtual se esté migrando en directo o que no esté configurada correctamente para recibir señales NMI.
Para solucionar este problema, puedes probar lo siguiente:- Comprueba que la VM esté configurada correctamente. Consulta Configurar una máquina virtual.
- Espera y vuelve a intentar la solicitud
SendDiagnosticInterrupt
.
FAIL Required 'compute.instances.sendDiagnosticInterrupt' permission for [..]
Se ha producido un error en el comando porque el usuario que ha hecho la solicitud no tiene permisos suficientes.
Para solucionar este problema, puedes asignar al usuario un rol que contenga el permisocompute.instances.sendDiagnosticInterrupt
.Revisar volcados principales
Revisa el archivo de volcado de memoria en la ubicación configurada o predeterminada de tu sistema operativo.
Por ejemplo, en los sistemas operativos Ubuntu, el archivo de volcado de fallos se guarda de forma predeterminada en
/var/crash/
.A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-12 (UTC).
-