Ver salidas de puertos serie


Una instancia de máquina virtual (VM) tiene cuatro puertos serie virtuales. El sistema operativo, la BIOS y otras entidades a nivel de sistema de la instancia suelen escribir la salida en los puertos serie, lo que hace que la salida del puerto serie sea útil para solucionar problemas de fallos, errores de arranque, problemas de inicio o problemas de apagado.

En esta página se describen los métodos para ver la salida del puerto serie, incluido el uso de Cloud Logging para conservar la salida del puerto serie incluso después de que se detenga o se elimine una instancia. Si necesitas enviar comandos a un puerto serie mientras se ejecuta una instancia, consulta Interactuar con la consola de serie.

Se puede acceder a la salida del puerto serie a través de la consola Google Cloud , la CLI de gcloud y REST, pero solo mientras se esté ejecutando la instancia de VM. Los registros se limitan a 1 MB de salida por puerto.

Si habilitas el registro de salida del puerto serie, Cloud Logging proporciona los primeros 50 gibibytes (GiB) al mes de registro de forma gratuita y conserva los registros durante 30 días.

Antes de empezar

  • Si quieres registrar la salida del puerto serie en Cloud Logging, familiarízate con Cloud Logging.
  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

    Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Habilitar e inhabilitar el registro de la salida del puerto serie

Puedes controlar si tus instancias envían la salida del puerto serie a Cloud Logging definiendo metadatos a nivel de proyecto o de instancia. También puedes inhabilitar la función para todos los usuarios de tu organización configurando una política de la organización.

Configurar metadatos de proyectos e instancias

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

Si defines una entrada de metadatos en todo el proyecto, todas las instancias de VM del proyecto heredarán ese ajuste de forma implícita. Si defines una entrada de metadatos de instancia, esta se habilitará solo para esa VM, independientemente de la configuración del proyecto.

Puedes definir una entrada de metadatos mediante la Google Cloud consola, la CLI de gcloud o la API de Compute Engine. Para obtener más información, consulta Configurar metadatos personalizados.

Por ejemplo, el siguiente comando de gcloud CLI habilita el registro de salida del puerto 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 salida del puerto 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 la salida del puerto serie en Cloud Logging, define serial-port-logging-enable como false:

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

Filtros de exclusión

En Cloud Logging, puedes crear un filtro de exclusión para quitar entradas de puerto serie específicas de Explorador de registros. Por ejemplo, con una entrada de metadatos de todo el proyecto definida como serial-port-logging-enable=true, puedes inhabilitar el registro de salida del puerto serie de instancias de VM específicas mediante 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"

Definir una política de organización

Puedes inhabilitar el registro de salida del puerto serie en Cloud Logging para toda tu organización configurando una política de organización, que restringe determinadas configuraciones de los recursos de Google Cloud . En concreto, define la siguiente restricción booleana:constraints/compute.disableSerialPortLogging. Para obtener más información, consulta el artículo Crear y gestionar políticas de organización.

Inhabilitar el registro del puerto serie asignando el valor true a constraints/compute.disableSerialPortLogging no es retroactivo. Las instancias de VM que tengan una entrada de metadatos que habilite el registro del puerto serie en Cloud Logging seguirán registrando datos en Cloud Logging a menos que restablezcas los metadatos de esas instancias.

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

Ver salidas de puertos serie

Consola

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

    Ve a la página Instancias de VM.

  2. Selecciona la instancia de VM de la que quieras ver la salida del puerto serie.

  3. En Registros, haz clic en Puerto serie 1, 2, 3 o 4. Las entidades a nivel de sistema suelen usar el primer puerto serie (puerto 1), que también se conoce como consola 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

Haz los cambios siguientes:

  • INSTANCE_NAME: el nombre de la instancia.
  • PORT: el número del puerto (1, 2, 3 o 4) del que quieres ver la salida. Las entidades a nivel de sistema suelen usar el primer puerto serie (puerto 1), también conocido como consola serie. De forma predeterminada, se devuelve la salida del primer puerto serie.
  • START: el índice de bytes (basado en cero) del primer byte que quieras que se devuelva. Usa esta marca si quieres seguir recibiendo la salida de una solicitud anterior que era demasiado larga para devolverla en un solo intento.
  • ZONE: la zona de tu instancia.

REST

En la API, crea una solicitud get al 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 serie en Cloud Logging.
  2. Ve a la página Instancias de VM.

    Ve a la página Instancias de VM.

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

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

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

Para obtener más información, incluido cómo filtrar, consulta el artículo Usar el Explorador de registros.

Gestionar caracteres no UTF-8

La salida del puerto serie se escapa mediante el método CHexEscape() de la biblioteca de C++ Abseil de código abierto, por lo que los caracteres que no son UTF-8 se codifican como cadenas hexadecimales. Puede usar el método CUnescape() correspondiente para obtener el resultado exacto que se envió al puerto serie.

Errores comunes de puertos serie

A continuación se indican ejemplos de errores habituales que pueden producirse en la salida del puerto serie.

Error al configurar IPv6

Puede producirse el siguiente error en los registros del diario del SO cuando no se ha configurado IPv6:

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

Ignora este error. Este error no afecta a tu máquina virtual.