Visualiza la salida de 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 la salida del puerto en serie, incluido el uso de Stackdriver Logging para retener la salida del puerto en serie incluso después de que una instancia se detenga o se borre. Si necesitas enviar comandos a un puerto en serie mientras se ejecuta una instancia, consulta la página sobre cómo interactuar con la consola serie.

Se puede acceder a la salida del puerto en serie a través de GCP 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 salida más reciente por puerto.

Si habilitas el registro de salidas del puerto en serie en Stackdriver, los registros se conservan durante 30 días y Stackdriver proporciona los primeros 50 GB por mes de registro de forma gratuita. Consulta los precios de Stackdriver para obtener más información

Antes de comenzar

Habilita o inhabilita el registro de salidas del puerto en serie en Stackdriver

Puedes controlar si las instancias envían salidas del puerto en serie a Stackdriver si configuras 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 del puerto en serie en Stackdriver no está restringido para la organización, puedes habilitarlo o inhabilitarlo para proyectos y, además, para instancias de VM individuales mediante la configuración de los metadatos 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.

Por el contrario, a fin de inhabilitar el registro de salidas del puerto en serie para proyectos o instancias, debes establecer el valor de metadatos serial-port-logging-enable en false. Cuando estos metadatos se configuran como false a nivel de proyecto, el registro de salidas del puerto en serie en Stackdriver se inhabilita para todas las instancias del proyecto. Cuando se establece en false en el nivel de instancia, el registro del puerto en serie se inhabilita solo para esa VM, sin importar la configuración del proyecto.

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

Por ejemplo, puedes usar el comando siguiente de gcloud a fin de habilitar el registro de salida del puerto en serie en Stackdriver 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 salida del puerto en serie en Stackdriver, 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 Stackdriver, puedes crear un filtro de exclusión para quitar entradas específicas del puerto en serie del visor de registros. Por ejemplo, con serial-port-logging-enable=true a nivel de proyecto, puedes inhabilitar el registro de salida del puerto en serie para 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

Puedes inhabilitar el registro de salida del puerto en serie en Stackdriver para toda la organización mediante la configuración de una política de la organización que restrinja ciertas configuraciones de recursos de GCP. En particular, establece la esta restricción booleana: constraints/compute.disableSerialPortLogging. Consulta cómo crear y administrar políticas de la organización para obtener más informació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 que tienen metadatos para habilitar el registro del puerto en serie en Stackdriver aún se registrarán en Stackdriver, a menos que vuelvas a establecer 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 para habilitar el registro de salida del puerto en serie en Stackdriver para ninguna instancia dentro de la organización.

Visualiza la salida de 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 al método instances.getSerialPortOutput.

GET https://www.googleapis.com/compute/projects/project-id/zones/zone/instances/instance-name/serialPort

Stackdriver

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

    Ir a la página Instancias de VM

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

  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 en la página Visualiza registros para obtener más detalles, incluido el filtrado básico y avanzado.

Maneja de 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 en el puerto en serie.

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

Enviar comentarios sobre...

Documentación de Compute Engine