Una instancia de Compute Engine 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 los métodos para ver la salida del puerto en serie, incluido el uso de Cloud Logging para conservar la salida del puerto en serie incluso después de que se detiene una instancia. Si necesitas enviar comandos a un puerto en serie mientras se ejecuta una instancia, consulta Interactúa con la consola en serie.
Para ver el resultado del puerto en serie de una instancia de procesamiento en ejecución, usa la Google Cloud consola, gcloud CLI o REST. Estos métodos solo proporcionan el MB de salida más reciente por puerto. Para ver el resultado que supera 1 MB por puerto o el resultado de instancias detenidas, usa Cloud Logging.
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 verifica tu identidad para acceder a los servicios y las APIs de Google Cloud . Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Selecciona la pestaña según cómo planeas usar las muestras de esta página:
Console
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
-
Instala Google Cloud CLI. Después de instalarla, inicializa Google Cloud CLI ejecutando el siguiente comando:
gcloud initSi usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
- Configura una región y una zona predeterminadas.
REST
Para usar las muestras de la API de REST incluidas en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la gcloud CLI.
Instala Google Cloud CLI.
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de Google Cloud .
Requisitos y limitaciones de las redes
Para ver el resultado del puerto en serie con la consola de Google Cloud o interactuar con la consola, la red y el entorno del cliente deben cumplir con los siguientes requisitos:
- Puerto TCP 9600: Si usas el vínculo Puerto en serie 1 (consola) en la consola deGoogle Cloud , tu red debe permitir el tráfico saliente en el puerto TCP 9600 para conectarse a la puerta de enlace de la consola en serie.
- Controles del servicio de VPC: La consola en serie interactiva no se admite dentro de los perímetros de los Controles del servicio de VPC.
- Acceso privado a Google: Las VIP de Acceso privado a Google (
private.googleapis.comorestricted.googleapis.com) no admiten el tráfico de SSH necesario para la consola en serie. Estas VIP solo admiten protocolos basados en HTTP.
Si tu red restringe estos puertos o protocolos, usa Cloud Logging para ver los registros del puerto en serie, ya que usa HTTPS estándar (puerto 443).
Soluciona problemas de errores de SSH
Si estás viendo los registros del puerto en serie porque no puedes conectarte a tu VM con SSH, consulta la guía para solucionar problemas de SSH, en la que encontrarás una lista de errores comunes y los pasos para corregirlos.
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.
De forma predeterminada, el registro de salida del puerto en serie en Cloud Logging está inhabilitado. Si habilitas el registro de salida del puerto en serie, Cloud Logging proporciona los primeros 50 gibibytes (GiB) por mes de registro de forma gratuita y conserva los registros durante 30 días.
Establece metadatos de proyecto y de instancia
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 procesamiento
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 procesamiento 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 instancia de procesamiento, sin importar la configuración del proyecto.
Puedes establecer una entrada de metadatos con la consola de Google Cloud , gcloud CLI 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=trueDel 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=truePara 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=falseFiltros 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 procesamiento 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 salidas del puerto en serie en Cloud Logging para toda tu organización si estableces una política de la organización, que restringe ciertas configuraciones de los recursos de Google Cloud . Específicamente, establece la siguiente restricción booleana:constraints/compute.disableSerialPortLogging. Para obtener más información, consulta Crea y administra 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 procesamiento existentes con una entrada de metadatos que habilita el registro de puerto en serie en Cloud Logging seguirán registrando datos en Cloud Logging, a menos que restablezcas los metadatos de 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 del puerto en serie
Usa la consola de Google Cloud , la gcloud CLI o REST para ver el último 1 MB de resultado por puerto en serie de las instancias en ejecución. Para ver el resultado que supera 1 MB por puerto o el resultado de instancias detenidas, usa Cloud Logging.
Console
En la consola de Google Cloud , ve a la página Instancias de VM.
Selecciona la instancia de procesamiento para la que deseas ver el resultado del puerto en serie.
En Registros, haz clic en Puerto en serie 1 (consola), Puerto en serie 2 (consola), Puerto en serie 3 o Puerto en serie 4.
Las entidades a nivel del sistema suelen usar el puerto en serie 1, que también se conoce como la consola en serie.
gcloud
Para ver la salida del puerto en serie de una instancia de procesamiento en ejecución, 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,3o4) 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
Antes de que puedas ver estos registros, debes enviar la salida del puerto en serie a Cloud Logging.
- En la consola de Google Cloud , accede a la página Explorador de registros.
En el panel Consulta, ingresa la siguiente consulta y, luego, haz clic en Ejecutar consulta:
resource.type="gce_instance" logName="projects/PROJECT_ID/logs/serialconsole.googleapis.com%2Fserial_port_1_output" resource.labels.instance_id="INSTANCE_ID"
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto que contenía la instancia.INSTANCE_ID: Es el ID de la instancia de procesamiento.
Para obtener más información sobre el filtrado en el Explorador de registros, consulta Visualiza registros con 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.