Usar Cloud Logging con Container-Optimized OS

Container-Optimized OS incluye un agente de registro que exporta algunos registros del sistema y de contenedores a Cloud Logging. Hasta Container-Optimized OS 101, las imágenes de Container-Optimized OS basadas en x86 usaban un agente de registro en contenedores basado en fluentd. Container-Optimized OS 105 empezó a incluir una implementación alternativa del agente de registro, fluent-bit. Desde Container-Optimized OS 109, el agente de registro fluent-bit es el predeterminado. El agente de registro antiguo, fluentd, se quitará en Container-Optimized OS 113.

Todas las versiones de las imágenes de Container-Optimized OS basadas en Arm incluyen el agente de registro fluent-bit.

Habilitar el agente de Logging

El agente de registro está inhabilitado de forma predeterminada. Puedes habilitar esta función al crear una instancia o al actualizar una que ya tengas.

Requisitos de acceso

Cloud Logging proporciona roles de gestión de identidades y accesos (IAM) que puedes usar para conceder el acceso adecuado. Para ver los registros de un proyecto, debes tener el rol roles/logging.viewer y las aplicaciones deben tener permiso para escribir registros. Para conceder este permiso, asigna el rol de gestión de identidades y accesos roles/logging.logWriter a la cuenta de servicio de una aplicación.

Para obtener más información sobre los permisos y los roles, consulta Roles predefinidos.

Crear una instancia con un agente de registro habilitado

Consola

Para ejecutar una instancia de Compute Engine en Container-Optimized OS con el agente de registro fluent-bit habilitado, haz lo siguiente:

  1. Abre la página de creación de instancias de Compute Engine en la Google Cloud consola.

    Crear una instancia de Compute Engine

  2. Especifica un nombre para la instancia.

  3. En la sección Disco de arranque, selecciona una imagen de Container-Optimized OS.

  4. Haz clic en Gestión, seguridad, discos, redes, único cliente para ver más opciones.

  5. En la pestaña Gestión, desplázate hasta la sección Metadatos. Añade una nueva entrada de metadatos con Clave como google-logging-enabled y Valor como true.

  6. También puede especificar otras opciones para su caso práctico. Consulta más información sobre cómo crear y configurar instancias.

  7. Haz clic en Crear para crear e iniciar la instancia.

gcloud

Para ejecutar una instancia de Compute Engine en Container-Optimized OS con el agente de registro habilitado, usa el comando gcloud compute instances create e incluye google-logging-enabled=true en los metadatos. Por ejemplo:

gcloud compute instances create instance-name \
    --image image-name \
    --image-project cos-cloud \
    --zone compute-zone \
    --metadata google-logging-enabled=true

Haz los cambios siguientes:

  • instance-name: el nombre de tu instancia de VM.
  • image-name: el nombre de la imagen de Container-Optimized OS de la instancia. Por ejemplo, --image=cos-113-18244-85-29.
  • compute-zone: la zona de cálculo de tu instancia.

Para obtener más información sobre el comando gcloud, consulta la documentación de referencia de gcloud compute instances create. Para obtener más información sobre cómo crear instancias de Container-Optimized OS, consulta Crear y configurar instancias.

Seleccionar el agente de Logging

Las imágenes de Container-Optimized OS 105 y 109 basadas en x86 incluyen dos implementaciones del agente de registro: fluentd (versión antigua) y fluent-bit. Container-Optimized OS 105 usa fluentd de forma predeterminada y Container-Optimized OS 109 usa fluent-bit de forma predeterminada. Puede usar la entrada de metadatos google-logging-use-fluentbit para cambiar el comportamiento predeterminado.

Para usar el agente de registro fluent-bit en Container-Optimized OS 105, defina el valor de google-logging-use-fluentbit como true.

Para usar el agente de registro fluentd en Container-Optimized OS 109, asigna el valor false a google-logging-use-fluentbit.

Habilitar el agente de Logging en los metadatos del proyecto

A partir de la versión 97, se puede habilitar el registro en los metadatos del proyecto:

  gcloud compute project-info add-metadata \
    --metadata google-logging-enabled=true

Registros de acceso

Consola

  1. Ve a la página Instancias de VM.

    Ve a la página Instancias de VM.

  2. Haga clic en el nombre de la instancia de Container-Optimized OS de la que quiera acceder a los registros.

  3. En la sección Registros, haga clic en Cloud Logging.

  4. Se abrirá el Explorador de registros de la instancia en cuestión. Para obtener más información, consulta el artículo sobre cómo usar el Explorador de registros.

gcloud

Para acceder a los registros, usa el comando gcloud logging read. Por ejemplo:

gcloud logging read \
"resource.type=gce_instance AND resource.labels.instance_id=instance-id" \
    --limit 10 \
    --format json \
    --freshness 30d

Haz los cambios siguientes:

  • instance-id: el ID de tu instancia de VM.

Este comando intenta leer los registros de la instancia de VM con instance-id, limitando a 10 registros, en formato JSON, de los últimos 30 días.

Para obtener más información sobre el comando gcloud, consulta la documentación de referencia de gcloud logging read.

¿Cómo funciona?

El agente de registro está configurado de forma predeterminada para enviar registros de determinados servicios críticos del sistema y contenedores de aplicaciones de usuario al backend de Cloud Logging. Por ejemplo, los registros de contenedores Docker, los servicios systemd seleccionados, los registros de auditoría, los errores de registro de journal, etc. Consulta la fuente de configuración específica de Container-Optimized OS (imágenes x86 e imágenes Arm) para ver la configuración de registro predeterminada completa.

En el caso de las imágenes x86 de Container-Optimized OS 105 y versiones anteriores, el agente de registro es el agente de registro antiguo en contenedores de Observabilidad de Google Cloud. El comando de Docker que inicia el agente de registro se define en la fuente de Container-Optimized OS para el servicio systemd stackdriver-logging. La versión del agente contenedorizado que se está ejecutando se define en el directorio app-admin/stackdriver de la fuente de Container-Optimized OS.

En las imágenes Arm de todas las versiones y las imágenes x86 de Container-Optimized OS 109 y versiones posteriores, el agente de registro es un paquete de SO integrado llamado fluent-bit. El agente está integrado en el SO y se actualiza junto con las imágenes del SO.

Limitaciones conocidas

Compatibilidad con el controlador gcplogs

A partir de la versión 89, si el agente de registro incluido en Container-Optimized OS está habilitado y el controlador de registro de Docker gcplogs está habilitado en uno o varios contenedores, el agente de registro incluido puede generar un número excesivo de registros de advertencia. Esto puede generar ruido en los registros o aumentar los cargos relacionados con Cloud Logging.

Una solución alternativa es no usar gcplogs como controlador de registro de Docker y, en su lugar, usar el controlador predeterminado configurado por Container-Optimized OS. Ten en cuenta que el agente de registro incluido en Container-Optimized OS exportará los registros de contenedores a Cloud Logging, por lo que no es necesario usar ambas soluciones simultáneamente.

Compatibilidad de la configuración del agente de Logging

El agente de registro es un contenedor basado en fluentd en imágenes de Container-Optimized OS basadas en x86 y un archivo binario de fluent-bit en imágenes de Container-Optimized OS basadas en Arm. Las configuraciones de los dos agentes no son compatibles. Esto no supone ningún problema si solo usas la configuración de registro predeterminada integrada en las imágenes del SO. Sin embargo, si tienes una configuración de registro personalizada, es posible que se produzcan errores al migrar cargas de trabajo a imágenes basadas en una arquitectura diferente o a una versión más reciente de Container-Optimized OS.

Referencias

  • Documentación del agente de registro antiguo de Observabilidad de Google Cloud. El agente de registro en contenedores incluido en Container-Optimized OS es un subconjunto del agente de registro antiguo, por lo que esta documentación puede proporcionar contexto sobre el agente en general, fuera del ámbito de Container-Optimized OS.
  • Documentación de Google Cloud Observability. Página principal de la documentación de Observabilidad de Google Cloud. Puede ser útil para obtener contexto.