Usa Cloud Logging con Container-Optimized OS

Container-Optimized OS incluye un agente de Logging que exporta algunos registros del sistema y del contenedor a Cloud Logging. Hasta Container-Optimized OS 101, las imágenes de Container-Optimized OS basadas en x86 usaban un agente de Logging en contenedores basado en fluentd. Container-Optimized OS 105 comenzó a ofrecer una implementación alternativa de agente de Logging: fluent-bit. A partir de Container-Optimized OS 109, el agente de registro de bits fluidos es el predeterminado. El agente de Logging heredado, fluentd, se quitará en Container-Optimized OS 113.

Todas las versiones de imágenes de Container-Optimized OS basadas en ARM envían el agente de registro de bits fluidos.

Habilita el agente de Logging

El agente de Logging está inhabilitado de forma predeterminada. Puedes habilitar esta función cuando crees una instancia nueva o actualices una existente.

Requisitos de acceso

Cloud Logging proporciona funciones de IAM que puedes usar para otorgar el acceso adecuado. Para ver tus registros en un proyecto, debes tener la función roles/logging.viewer, y las aplicaciones deben tener permiso para escribir registros. Puedes otorgar este permiso si asignas la función de IAM roles/logging.logWriter a la cuenta de servicio de una aplicación.

Para obtener más información sobre los permisos y las funciones, consulta Funciones predefinidas.

Crea una instancia con un agente de Logging habilitado

Console

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

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

    Crea una instancia de Compute Engine nueva

  2. Especifica un nombre para tu instancia.

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

  4. Haz clic en Administración, seguridad, discos, redes, usuario único para expandir las opciones adicionales.

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

  6. De manera opcional, especifica otras opciones para tu caso de uso. Consulta Cómo crear y configurar instancias para obtener más detalles.

  7. Haz clic en Crear para crear y, además, iniciar la instancia.

gcloud

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

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

Reemplaza lo siguiente:

  • instance-name por el nombre de tu instancia de VM.
  • compute-zone por la zona de procesamiento de tu instancia.

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

Selecciona el agente de Logging

Las imágenes de Container-Optimized OS 105 y 109 basadas en x86 envían dos implementaciones del agente de Logging: fluentd (heredado) y fluent-bit. Container-Optimized OS 105 usa fluentd de forma predeterminada y Container-Optimized OS 109 usa fluentd-bit de forma predeterminada. Puedes usar la entrada de metadatos google-logging-use-fluentbit para cambiar el comportamiento predeterminado.

Para usar el agente de Logging de fluentes de bits en Container-Optimized OS 105, establece el valor de google-logging-use-fluentbit en true.

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

Habilita el agente de Logging en los metadatos del proyecto

A partir del evento importante 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

Console

  1. Ve a la página Instancias de VM

    Ir a la página Instancias de VM

  2. Haz clic en el nombre de la instancia de Container-Optimized OS desde la que deseas acceder a los registros.

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

  4. Se abrirá el Explorador de registros de la instancia en cuestión. Para obtener más información, consulta Usa 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

Reemplaza lo siguiente:

  • instance-id: El ID de tu instancia de VM

Este comando intenta leer los registros de la instancia de VM con instance-id, con un límite de 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 Logging está configurado de forma predeterminada para enviar registros de ciertos servicios esenciales del sistema y contenedores de aplicaciones del usuario al backend de Cloud Logging. Por ejemplo, registros de contenedores de Docker, servicios systemd seleccionados, registros de auditoría, errores de registro de diario, etc. Consulta la fuente de configuración específica de Container-Optimized OS (imágenes de x86 y de ARM) para obtener la configuración de registro predeterminada completa.

Para las imágenes x86 de Container-Optimized OS 105 y versiones anteriores, el agente de Logging es el agente de Logging heredado en contenedores de la observabilidad de Google Cloud. El comando de Docker que inicia el agente de Logging se define en la fuente de Container-Optimized OS del servicio systemd de stackdriver-logging. La versión del agente en contenedores que se ejecuta se define en el directorio app-admin/stackdriver de Container-Optimized OS.

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

Limitaciones conocidas

Compatibilidad con el controlador gcplogs

A partir del evento importante 89, si el agente de Logging incluido con Container-Optimized OS está habilitado y el controlador de registro gcplogs de Docker está habilitado para uno o más contenedores, el agente de Logging incluido puede generar registros de advertencia excesivos. Esto puede generar ruido de registro 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 según la configuración de Container-Optimized OS. Ten en cuenta que el agente de Logging incluido con Container-Optimized OS exportará los registros de contenedores a Cloud Logging, por lo que no es necesario usar ambas soluciones de forma simultánea.

Compatibilidad con la configuración del agente de Logging

El agente de Logging es un contenedor basado en fluentd en imágenes de Container-Optimized OS basadas en x86 y un objeto binario de fluent-bit en imágenes de Container-Optimized OS basadas en ARM. La configuración de los dos agentes no es compatible. Esto no es un problema si solo dependes de la configuración de registro predeterminada compilada en las imágenes de SO. Sin embargo, si tienes una configuración de registro personalizada, es posible que experimentes fallas cuando migres 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 Logging heredado de la observabilidad de Google Cloud. El agente de Logging en contenedores incluido con Container-Optimized OS es un subconjunto del agente de Logging heredado, por lo que esta documentación puede proporcionar contexto sobre el agente de manera más general, fuera del alcance de Container-Optimized OS.
  • Documentación sobre la observabilidad de Google Cloud. Página principal de la documentación sobre observabilidad de Google Cloud; puede ser útil para brindar contexto.