Visualiza la salida de los puertos en serie

Una instancia de máquina virtual tiene cuatro puertos en serie virtuales. A menudo, el sistema operativo de la instancia, el BIOS y otras entidades de nivel de sistema escriben salidas en los puertos en serie. Esto los hace útiles para solucionar fallas, arranques fallidos, problemas de inicio o de apagado.

En esta página, se describen métodos para ver las salidas de los puertos en serie, incluido el uso de Stackdriver 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 Cloud Console, la herramienta de gcloud y la API, solo cuando la instancia de VM esté en ejecución. Los registros están limitados al primer MB de salidas más recientes de cada puerto.

Si habilitas el registro de salidas de puertos en serie en Stackdriver Logging, los registros se conservan durante 30 días. Los primeros 50 GB por mes de registro son gratuitos. Consulta los precios de Stackdriver Logging para obtener más detalles.

Antes de comenzar

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 Stackdriver 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, además, de instancia

Si el registro de salidas de puertos en serie en Stackdriver Logging no está restringido para tu organización, puedes habilitarlo o inhabilitarlo para proyectos o instancias de VM individuales con solo configurar los metadatos de serial-port-logging-enable en true o false.

A nivel de proyecto, si se establece serial-port-logging-enable en true, todas las instancias de VM en el proyecto heredan esa configuración de forma implícita. Si se configura como true a nivel de instancia de VM, se habilita solo para esa VM, sin importar la configuración del proyecto.

Si, por el contrario, deseas inhabilitar el registro de salidas de puertos en serie para determinados proyectos o instancias, configura el valor de los metadatos de serial-port-logging-enable en false. Cuando la configuración de estos metadatos es false a nivel del proyecto, se inhabilita el registro de salidas de puertos en serie en Stackdriver Logging para todas las instancias del proyecto. Cuando se establece en false a nivel de la instancia, el registro de puertos en serie se inhabilita solo para esa VM, sin importar la configuración del proyecto.

Puedes configurar metadatos a través de Google Cloud Console, la herramienta de gcloud o la API. Consulta Establece metadatos personalizados para obtener más detalles.

Por ejemplo, puedes usar el siguiente comando de gcloud para habilitar el registro de salidas de puertos en serie en Stackdriver Logging para una instancia existente. El comando fallará si una política de la organización impide esta configuración.

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

Para inhabilitar el registro de salidas de puertos en serie en Stackdriver 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

Puedes crear un filtro de exclusión en Stackdriver Logging para quitar entradas específicas de los puertos en serie del visor de registros. Por ejemplo, con serial-port-logging-enable=true a nivel del proyecto, puedes inhabilitar el registro de salida de los puertos en serie de instancias de VM específicas con un filtro avanzado como el que se muestra a continuación.

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

Para inhabilitar el registro de salidas de puertos en serie en Stackdriver Logging para toda la organización, puedes configurar una política de la organización que restrinja determinadas configuraciones de los recursos de Google Cloud. En particular, establece esta restricción booleana: constraints/compute.disableSerialPortLogging. Consulta la página sobre cómo crear y administrar políticas de la organización para obtener más información.

Cuando configuras constraints/compute.disableSerialPortLogging en true para inhabilitar los registros de puertos en serie, el cambio no es retroactivo: los datos de las instancias de VM existentes con metadatos que habiliten el registro de los puertos en serie seguirán registrándose en Stackdriver Logging, a menos que restablezcas los metadatos de esas instancias.

Una vez que establezcas esta restricción de organización en true, no podrás configurar los metadatos de las instancias ni de los proyectos a fin de habilitar el registro de salidas de los puertos en serie en Stackdriver Logging para ninguna instancia perteneciente a la organización.

Visualiza la salida de los puertos en serie

Console

  1. 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 instances get-serial-port-output:

gcloud compute instances get-serial-port-output instance-name \
  --port port \
  --start start \
  --zone zone

Donde:

  • instance-name es el nombre de la instancia.
  • port es el número del puerto (1, 2, 3 o 4) cuya salida quieres observar. 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. De forma predeterminada, se muestra la salida del primer puerto en serie.
  • start especifica el índice de bytes (basado en cero) del primer byte que deseas mostrar. Usa esta marca si deseas obtener la salida de una solicitud anterior que fue demasiado larga para mostrar un resultado en un intento.

API

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

Stackdriver Logging

  1. Habilita el registro de puertos en serie en Stackdriver Logging
  2. Ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  3. Selecciona la instancia de VM en la que quieres ver los registros del agente de inicio.
  4. En Registros, haz clic en Stackdriver Logging para ver los registros correspondientes.

  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.

  7. Consulta la documentación de Stackdriver Logging sobre la visualización los registros para ver más detalles, incluido el uso de filtros básicos y avanzados.

Maneja caracteres no UTF8

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

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Compute Engine