Usa volcados de memoria para analizar las causas de una instancia de máquina virtual (VM) que no responde.
Para recopilar los volcados de memoria en Compute Engine, debes configurar las VM a fin de recibir un indicador de Interrupción no enmascarable (NMI) y, luego, ejecutar un comando de SendDiagnosticInterrupt
para solicitar un error irrecuperable del kernel o pantalla azul en tu sistema operativo. La pantalla azul o el error irrecuperable del kernel inicia una recopilación de volcado de memoria por el sistema operativo invitado. Estos volcados principales se pueden usar para fines de depuración, especialmente en situaciones difíciles de reproducir, como la inmovilización del kernel.
Antes de comenzar
- El envío de indicadores de NMI se cuenta en la cuota predeterminada de la API de consultas. Para obtener más información, consulta los límites de frecuencia de la API.
-
Configura la autenticación si aún no lo hiciste.
La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud.
Para ejecutar un código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.
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 tu VM para generar volcados de memoria
- Envía una señal NMI para generar volcados de memoria
- Revisa los volcados principales
- El registro establece
AlwaysKeepMemoryDump
en1
. - El disco tiene más de 25 GB de espacio libre.
VM_NAME
: Es el ID de la instancia o el nombre de la VM desde la que deseas recopilar los volcados principales.ZONE
: La zona en la que se encuentra la VM.Opcional. Si aún no está disponible, crea una clave de API. Si deseas obtener más información para crear claves de API, consulta Crea una clave de API.
Para enviar la señal NMI, realiza 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 realizar 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
Reemplaza lo siguiente:
PROJECT_ID
: ID del proyecto en el que se creará la VMZONE
: La zona en la que se encuentra la VM.VM_NAME
: Es el ID de la instancia o el nombre de la VM desde la que deseas recopilar los volcados principales.API_KEY
: Es tu clave de API.
El resultado es similar a este:
<Empty Response>
Para obtener una lista completa de los resultados, consulta la siguiente sección de este documento sobre las “respuestas del comando de NMI”.
- Verifica que la VM esté configurada de forma correcta. Consulta Configura VM.
- Espera y vuelve a intentar la solicitud
SendDiagnosticInterrupt
.
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.
Roles obligatorios
Para asegurarte de que tu cuenta de usuario o de servicio tenga el permiso necesario para enviar señales NMI a una VM, pídele a tu administrador que le otorgue a tu usuario o cuenta de servicio el permiso correspondiente. Rol de de administrador de instancias de Compute (v1) (
roles/compute.instanceAdmin.v1
) de IAM en tu proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.Este rol predefinido contiene el permiso
compute.instances.sendDiagnosticInterrupt
, que se requiere para enviar indicadores de NMI a una VM.Es posible que tu administrador también pueda otorgar este permiso a tu cuenta de servicio con roles personalizados o con otros roles predefinidos.
Descripción general
Si quieres usar volcados principales para ayudar a depurar una VM que no responde o a un problema de seguridad, debes completar los siguientes pasos:
Limitaciones
Para las VM que tienen habilitado el inicio seguro, debes inhabilitarlo antes de enviar una señal de interrupción de NMI. Para obtener instrucciones, consulta Modifica las opciones de VM protegida en una instancia de VM.
Configura la VM
La respuesta de una VM a la recepción de una señal de interrupción de NMI depende de la configuración del sistema operativo de la VM.
Cada sistema operativo escribe sus registros de volcado principales en una ubicación diferente. Por ejemplo, en los sistemas operativos Ubuntu, el archivo de volcado de falla se guarda en
/var/crash/
de forma predeterminada.Para configurar el SO invitado a fin de generar un volcado de falla cuando se recibe una señal NMI, revisa la documentación del sistema operativo compatible.
Sistema operativo Vínculos a las instrucciones Notas adicionales Ubuntu Ubuntu: volcado de falla del kernel Para las VM de Linux, debes configurar el kernel a fin de que falle cuando reciba la señal de interrupción de NMI.
Para configurar el kernel a fin de que falle, agrega lo siguiente al archivo de configuración:
kernel.unknown_nmi_panic=1
SUSE Linux Enterprise Server (SLES) Configura la memoria de la falla del kernel para el análisis de volcado de memoria de kernel Red Hat Enterprise Linux (RHEL) Usa los siguientes documentos:
Container-Optimized OS (COS) Habilita el volcado de falla de kernel en las instancias de GCE COS Solo COS 93 y las versiones posteriores admiten la generación de kdump mediante la señal NMI. Windows Genera un kernel o volcado completo de fallas. Las VMs de cliente de Windows no conservan los archivos de volcado de memoria, a menos que sean miembros de un dominio de AD o que se cumpla lo siguiente:
Para obtener más información, consulta Almacenamiento de volcado de kernel y comportamiento de limpieza en Windows 7.
Envía NMI para generar volcados de núcleo
Después de configurar la VM, puedes enviar la señal NMI a la VM mediante Google Cloud CLI 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
Reemplaza lo siguiente:
El resultado es similar a este:
<Empty Response>
Para obtener una lista completa de los resultados, consulta la siguiente sección en este documento sobre “respuestas de comandos de NMI”.
REST
Respuestas del comando de NMI
Se muestra una de las siguientes respuestas cuando intentas enviar una señal NMI.
Estado Cuerpo Notas SUCCESS <Empty Response>
SUCCESS
muestra que la señal NMI se entrega al sistema operativo. No garantiza que se recopile el volcado de memoria o que la VM se cierre o se reinicie. Estos comportamientos se determinan según la configuración del sistema operativo.FAIL UNSUPPORTED_OPERATION
Esto ocurre cuando el sistema operativo no recibe la señal de NMI. Hay varios motivos para esto. Los casos comunes son que la VM se está migrando en vivo o la VM no está configurada correctamente para recibir señales de NMI.
Para resolver esto, puedes probar lo siguiente:FAIL Required 'compute.instances.sendDiagnosticInterrupt' permission for [..]
El comando falló porque el usuario que realiza la solicitud no tiene permisos suficientes.
Para resolver esto, puedes asignar un rol al usuario que contenga el permisocompute.instances.sendDiagnosticInterrupt
.Revisa los volcados de memoria
Revisa el archivo de volcado de falla en la ubicación configurada o predeterminada para tu sistema operativo.
Por ejemplo, en los sistemas operativos Ubuntu, de forma predeterminada, el archivo de volcado de falla se guarda en
/var/crash/
.Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-11-28 (UTC)
-