Enviar una interrupción de diagnóstico (usuarios avanzados) - Amazon Elastic Compute Cloud

Enviar una interrupción de diagnóstico (usuarios avanzados)

aviso

Las interrupciones de diagnóstico están destinadas a ser utilizadas por usuarios avanzados. El uso incorrecto podría afectar negativamente a su instancia. El envío de una interrupción de diagnóstico a una instancia podría desencadenar que una instancia se bloquee y reinicie, lo que podría provocar la pérdida de datos.

Puede enviar una interrupción de diagnóstico a una instancia inaccesible o que no responde para activar un pánico de kernel (en instancias de Linux) o un error de parada (denominado comúnmente error de pantalla azul) en instancias de Windows.

instancias de Linux

Los sistemas operativos Linux normalmente se bloquean y se reinician cuando se produce un pánico de kernel. El comportamiento específico del sistema operativo depende de su configuración. Un pánico de kernel también se puede utilizar para hacer que el kernel del sistema operativo de la instancia realice tareas como, por ejemplo, generar un archivo de volcado de bloqueo. A continuación, puede utilizar la información del archivo de volcado de bloqueo para realizar un análisis de causa raíz y depurar la instancia. El sistema operativo genera los datos de volcado de memoria localmente en la propia instancia.

instancias de Windows

En general, los sistemas operativos Windows se bloquean y reinician cuando se produce un error de parada, pero el comportamiento específico depende de su configuración. Un error de parada también puede hacer que el sistema operativo escriba información de depuración de errores como, por ejemplo, un volcado de memoria de kernel, en un archivo. A continuación, puede utilizar esta información para llevar a cabo un análisis de causa raíz para depurar la instancia. El sistema operativo genera los datos de volcado de memoria localmente en la propia instancia.

Antes de enviar una interrupción de diagnóstico a la instancia, le recomendamos que consulte la documentación del sistema operativo y, a continuación, realice los cambios de configuración necesarios.

Tipos de instancias admitidas

La interrupción de diagnóstico es compatible con todos los tipos de instancias basadas en Nitro, a excepción de los que funcionan con procesadores Graviton de AWS. Para obtener más información, consulte las instancias integradas en el AWS Nitro System y AWS Graviton.

Requisitos previos

Antes de utilizar una interrupción de diagnóstico, debe configurar el sistema operativo de la instancia. Esto garantiza que realice las acciones que necesita cuando se produce un pánico de kernel (instancias de Linux) o un error de parada (instancias de Windows).

Para configurar Amazon Linux 2 para generar un volcado de bloqueo cuando se produce un pánico de kernel
  1. Conéctese a la instancia.

  2. Instale kexec y kdump.

    [ec2-user ~]$ sudo yum install kexec-tools -y
  3. Configure el kernel para reservar una cantidad de memoria adecuada para el kernel secundario. La cantidad de memoria que reservar depende de la memoria total disponible de la instancia. Abra el archivo /etc/default/grub utilizando su editor de texto preferido, localice la línea que comienza por GRUB_CMDLINE_LINUX_DEFAULT y, a continuación, añada el parámetro crashkernel con el formato siguiente: crashkernel=memory_to_reserve. Por ejemplo, para reservar 160MB, modifique el archivo grub como se indica a continuación:

    GRUB_CMDLINE_LINUX_DEFAULT="crashkernel=160M console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.shell=0" GRUB_TIMEOUT=0 GRUB_DISABLE_RECOVERY="true"
  4. Guarde los cambios y cierre el archivo grub.

  5. Vuelva a compilar el archivo de configuración GRUB2.

    [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  6. En instancias basadas en procesadores Intel y AMD, el comando send-diagnostic-interrupt envía una interrupción no enmascarable desconocida (NMI) a la instancia. Debe configurar el kernel para que se bloquee cuando reciba la NMI desconocida. Abra el archivo /etc/sysctl.conf con su editor de texto preferido y agregue lo siguiente.

    kernel.unknown_nmi_panic=1
  7. Reinicie la instancia y vuelva a conectarse a ella.

  8. Compruebe que el kernel se haya iniciado con el parámetro crashkernel correcto.

    $ grep crashkernel /proc/cmdline

    La siguiente salida de ejemplo indica una configuración correcta.

    BOOT_IMAGE=/boot/vmlinuz-4.14.128-112.105.amzn2.x86_64 root=UUID=a1e1011e-e38f-408e-878b-fed395b47ad6 ro crashkernel=160M console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.shell=0
  9. Compruebe que el servicio kdump está en ejecución.

    [ec2-user ~]$ systemctl status kdump.service

    La siguiente salida de ejemplo muestra el resultado si el servicio kdump se está ejecutando.

    kdump.service - Crash recovery kernel arming Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled) Active: active (exited) since Fri 2019-05-24 23:29:13 UTC; 22s ago Process: 2503 ExecStart=/usr/bin/kdumpctl start (code=exited, status=0/SUCCESS) Main PID: 2503 (code=exited, status=0/SUCCESS)
nota

De forma predeterminada, el archivo de volcado de bloque se guarda en /var/crash/. Para cambiar la ubicación, modifique el archivo /etc/kdump.conf utilizando su editor de texto preferido.

Para configurar Amazon Linux para generar un volcado de bloqueo cuando se produce un pánico de kernel
  1. Conéctese a la instancia.

  2. Instale kexec y kdump.

    [ec2-user ~]$ sudo yum install kexec-tools -y
  3. Configure el kernel para reservar una cantidad de memoria adecuada para el kernel secundario. La cantidad de memoria que reservar depende de la memoria total disponible de la instancia.

    $ sudo grubby --args="crashkernel=memory_to_reserve" --update-kernel=ALL

    Por ejemplo, para reservar 160MB para el kernel de bloqueo, utilice el comando siguiente.

    $ sudo grubby --args="crashkernel=160M" --update-kernel=ALL
  4. En instancias basadas en procesadores Intel y AMD, el comando send-diagnostic-interrupt envía una interrupción no enmascarable desconocida (NMI) a la instancia. Debe configurar el kernel para que se bloquee cuando reciba la NMI desconocida. Abra el archivo /etc/sysctl.conf con su editor de texto preferido y agregue lo siguiente.

    kernel.unknown_nmi_panic=1
  5. Reinicie la instancia y vuelva a conectarse a ella.

  6. Compruebe que el kernel se haya iniciado con el parámetro crashkernel correcto.

    $ grep crashkernel /proc/cmdline

    La siguiente salida de ejemplo indica una configuración correcta.

    root=LABEL=/ console=tty1 console=ttyS0 selinux=0 nvme_core.io_timeout=4294967295 LANG=en_US.UTF-8 KEYTABLE=us crashkernel=160M
  7. Compruebe que el servicio kdump está en ejecución.

    [ec2-user ~]$ sudo service kdump status

    Si el servicio se está ejecutando, el comando devuelve la respuesta Kdump is operational.

nota

De forma predeterminada, el archivo de volcado de bloque se guarda en /var/crash/. Para cambiar la ubicación, modifique el archivo /etc/kdump.conf utilizando su editor de texto preferido.

Para configurar SUSE Linux Enterprise, Ubuntu o Red Hat Enterprise Linux

En instancias basadas en procesadores Intel y AMD, el comando send-diagnostic-interrupt envía una interrupción no enmascarable desconocida (NMI) a la instancia. Debe configurar el kernel para que se bloquee cuando reciba la NMI desconocida, al ajustar el archivo de configuración del sistema operativo. Para obtener más información acerca de cómo configurar el kernel para que se bloquee, consulte la documentación de su sistema operativo:

Para configurar Windows para generar un volcado de memoria cuando se produce un error de parada
  1. Conéctese a la instancia.

  2. Abra el Panel de control y seleccione Sistema, Configuración avanzada del sistema.

  3. En el cuadro de diálogo Propiedades del sistema, seleccione la pestaña Avanzadas.

  4. En la sección Inicio y recuperación, elija Configuración....

  5. En la sección Error del sistema, establezca la configuración según sea necesario y, a continuación, elija Aceptar.

Para obtener más información sobre la configuración de errores de parada de Windows, consulte Overview of memory dump file options for Windows.

Enviar una interrupción de diagnóstico

Después de haber completado los cambios de configuración necesarios, puede enviar una interrupción de diagnóstico a su instancia mediante la AWS CLI o la API de Amazon EC2.

AWS CLI
Para enviar una interrupción de diagnóstico a su instancia (AWS CLI)

Utilice el comando send-diagnostic-interrupt y especifique el ID de instancia.

aws ec2 send-diagnostic-interrupt --instance-id i-1234567890abcdef0
PowerShell
Para enviar una interrupción de diagnóstico a su instancia (AWS Tools for Windows PowerShell)

Utilice el comando Send-EC2DiagnosticInterrupt y especifique el ID de instancia.

PS C:\> Send-EC2DiagnosticInterrupt -InstanceId i-1234567890abcdef0