Visualiza la salida de los puertos en serie


Una instancia de máquina virtual (VM) tiene cuatro puertos en serie virtuales. El sistema operativo de la instancia, el BIOS y otras entidades a nivel del sistema a menudo escriben la salida en los puertos en serie, lo que resulta útil para solucionar fallas, arranques fallidos o problemas de inicio o de apagado.

En esta página, se describen métodos a fin de ver las salidas de los puertos en serie, incluido el uso de Cloud Logging para conservarlas, incluso cuando se detiene o borra una instancia. Si necesitas enviar comandos a un puerto en serie mientras se ejecuta una instancia, consulta Interactúa con la consola en serie.

Se puede acceder a las salidas de los puertos en serie a través de la consola de Google Cloud, la CLI de gcloud y REST, pero solo mientras se ejecuta la instancia de VM. Los registros se limitan al primer MB de salida más reciente de cada puerto.

Si habilitas el registro de salidas del puerto en serie, Cloud Logging proporciona los primeros 50 gibibytes (GiB) por mes de registro gratis y conserva los registros durante 30 días.

Antes de comenzar

  • Si deseas registrar la salida del puerto en serie en Cloud Logging, familiarízate con Cloud Logging.
  • Si aún no lo hiciste, configura la autenticación. 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.

    Selecciona la pestaña sobre cómo planeas usar las muestras en esta página:

    Consola

    Cuando usas la consola de Google Cloud para acceder a los servicios y las APIs de Google Cloud, no necesitas configurar la autenticación.

    gcloud

    1. Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init
    2. Configura una región y una zona predeterminadas.

    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.

      Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init

Habilita o inhabilita el registro de salidas de puertos en serie

Para controlar si las instancias envían las salidas de los puertos en serie a Cloud Logging, configura metadatos a nivel de proyecto o de instancia. También puedes inhabilitar la función para todos los usuarios de la organización si estableces una política de la organización.

Establece metadatos de proyecto y de instancia

De forma predeterminada, el registro de salida del puerto en serie en Cloud Logging está inhabilitado. Si el registro de salidas del puerto en serie en Cloud Logging no está restringido en tu organización, puedes habilitarlo o inhabilitarlo para proyectos y, además, para instancias de VM individuales. Para ello, configura la entrada de metadatos serial-port-logging-enable en true o false.

Si configuras una entrada de metadatos de nivel de proyecto, todas las instancias de VM del proyecto heredan esa configuración de forma implícita. Si configuras una entrada de metadatos de la instancia, esta se habilita solo para esa VM, sin importar la configuración del proyecto.

Puedes establecer una entrada de metadatos con la consola de Google Cloud, la CLI de gcloud o la API de Compute Engine. Para obtener más información, consulta la sección sobre cómo establecer metadatos personalizados.

Por ejemplo, el siguiente comando de la CLI de gcloud habilita el registro de salidas del puerto en serie en Cloud Logging para tu proyecto:

gcloud compute project-info add-metadata \
    --metadata serial-port-logging-enable=true

Del mismo modo, el siguiente comando de la CLI de gcloud habilita el registro de salidas del puerto en serie en Cloud Logging para una instancia específica:

gcloud compute instances add-metadata INSTANCE_NAME \
    --metadata serial-port-logging-enable=true

Para inhabilitar el registro de salidas del puerto en serie en Cloud Logging, establece serial-port-logging-enable en false:

gcloud compute instances add-metadata INSTANCE_NAME \
    --metadata serial-port-logging-enable=false

Filtros de exclusión

Desde Cloud Logging, puedes crear un filtro de exclusión para borrar entradas específicas de los puertos en serie del Explorador de registros. Por ejemplo, con una entrada de metadatos de nivel de proyecto que se establece en serial-port-logging-enable=true, puedes inhabilitar el registro de salidas del puerto en serie para instancias de VM específicas con un filtro avanzado:

logName = "projects/PROJECT_ID/logs/serialconsole.googleapis.com%2Fserial_port_1_output"
resource.type = "gce_instance"
resource.labels.instance_id != "INSTANCE_1_ID"
resource.labels.instance_id != "INSTANCE_2_ID"

Establece una política de la organización

Puedes inhabilitar el registro de salida del puerto en serie en Cloud Logging para toda tu organización mediante la configuración de una Política de organización, que restringe ciertas opciones de configuración de recursos de Google Cloud. En particular, establece esta restricción booleana: constraints/compute.disableSerialPortLogging. Para obtener más información, consulta la sección sobre cómo crear y administrar políticas de la organización.

La inhabilitación del registro del puerto en serie mediante el establecimiento de constraints/compute.disableSerialPortLogging en true no es retroactiva. Las instancias de VM existentes con una entrada de metadatos que habilita el registro del puerto en serie en Cloud Logging continúan registrando en Cloud Logging, a menos que restablezcas los metadatos para esas instancias.

Después de establecer esta restricción de organización en true, no podrás establecer metadatos de instancia o proyecto a fin de habilitar el registro de salida del puerto en serie en Cloud Logging para ninguna instancia dentro de la organización.

Visualiza la salida de los puertos en serie

Console

  1. En la consola de Google Cloud, ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Selecciona la instancia de VM para la que quieres ver las salidas del puerto en serie.

  3. En Registros, haz clic en Puerto en serie 1, 2, 3 o 4. Por lo general, las entidades de nivel de sistema usan el primer puerto en serie (puerto 1), que también se conoce como la consola en serie.

gcloud

Usa el comando gcloud compute instances get-serial-port-output.

gcloud compute instances get-serial-port-output INSTANCE_NAME \
  --port PORT \
  --start START \
  --zone ZONE

Reemplaza lo siguiente:

  • INSTANCE_NAME: El nombre de la instancia.
  • PORT: El número del puerto (1, 2, 3 o 4) cuya salida quieres ver. Por lo general, las entidades a nivel del sistema usan el primer puerto en serie (puerto 1), que también se conoce como consola en serie. De forma predeterminada, se muestra la salida del primer puerto en serie.
  • START: El índice de bytes (basado en cero) del primer byte que quieres mostrar. Usa esta marca si quieres seguir obteniendo la salida de una solicitud anterior que fue demasiado larga para mostrar en un intento.
  • ZONE: La zona de la instancia.

REST

En la API, crea una solicitud get para el método instances.getSerialPortOutput.

GET https://compute.googleapis.com/compute/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/serialPort

Cloud Logging

  1. Habilita el registro del puerto en serie en Cloud Logging.
  2. Ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  3. Selecciona la instancia de VM de la que deseas ver los registros del agente de inicio.

  4. En Registros (Logs), haz clic en Cloud Logging para ver los registros de Cloud Logging.

    Haz clic en Cloud Logging para ver los registros de Cloud Logging.

  5. Expande el menú desplegable Todos los registros y selecciona la salida del puerto en serie que deseas ver. Por lo general, las entidades de nivel de sistema usan el primer puerto en serie (puerto 1), que también se conoce como la consola en serie. Si un puerto no aparece en el menú desplegable, no tiene ninguna salida disponible.

  6. De manera opcional, puedes expandir el menú desplegable Cualquier nivel de registro para silenciar los registros que se encuentran por debajo del nivel de gravedad que quieres ver. Por ejemplo, si seleccionas el nivel de registro “Información”, silenciarás las entradas de registro “Depurar”. Por lo general, solo el BIOS usa las entradas de “Depurar” al momento del arranque.

Para obtener más información, incluida la información sobre los filtros, consulta Usa el Explorador de registros.

Maneja caracteres no UTF8

Usa el método CHexEscape() de la biblioteca C++ Abseil de código abierto para escapar la salida del puerto en serie, de modo que los caracteres que no son UTF8 se codifiquen como strings hexadecimales. Puedes usar el método CUnescape() correspondiente para obtener la salida exacta que se envió al puerto en serie.

Errores comunes de puertos en serie

Los siguientes son ejemplos de errores comunes que puedes encontrar en la salida del puerto en serie.

Error en la configuración de IPv6

El siguiente error puede ocurrir en los registros del diario del SO cuando no se configura IPv6:

ERROR addresses.go:301 Error configuring IPv6: Internet Systems Consortium DHCP Client 4.2.5

Ignora este error. Este error no afecta tu VM.