Usa Cloud Logging con Container-Optimized OS

Container-Optimized OS incluye un agente de Logging que exporta algunas del sistema y del contenedor a Cloud Logging. Hasta Imágenes de Container-Optimized OS 101 basadas en x86 que usan Container-Optimized OS un agente de Logging en contenedores basado en fluentd. Container-Optimized OS 105 comenzó a enviar una implementación alternativa de agente de registro, fluent-bit. A partir de Container-Optimized OS 109, el agente de Logging fluent-bit es el predeterminado. El agente de registro heredado, fluentd, se quitará en el SO optimizado para contenedores 113.

Todas las versiones de imágenes de Container-Optimized OS basadas en ARM envían la API de fluent-bit de registro.

Habilita el agente de registro

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

Requisitos de acceso

Cloud Logging proporciona IAM roles que puedes usar para otorgar el acceso adecuado. Para ver tus registros en un proyecto, debes tener el rol roles/logging.viewer y las aplicaciones deben tener permiso para escribir registros. Puedes otorgar este permiso asignando el el rol de IAM roles/logging.logWriter en la cuenta de servicio de un y mantener la integridad de su aplicación.

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

Crea una instancia con un agente de Logging habilitado

Console

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

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

    Crea una instancia nueva de Compute Engine

  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 hacer lo siguiente: para expandir las opciones adicionales.

  5. En la pestaña Administración, desplázate hasta la sección Metadatos. Agrega un Nueva entrada de metadatos, con Key como google-logging-enabled y Value como true.

  6. De manera opcional, especifica otras opciones para tu caso de uso. Consulta Crea y configura instancias para obtener más información.

  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 registro habilitado, usa el comando gcloud compute instances create y, además, 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

Reemplaza lo siguiente:

  • instance-name por el nombre de tu instancia de VM.
  • image-name: Es el nombre de la imagen de Container-Optimized OS para la instancia. Por ejemplo, --image=cos-113-18244-85-29
  • compute-zone por la zona de procesamiento 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 detalles sobre cómo crear instancias de Container-Optimized OS, consulta Cómo crear y configurar instancias.

Selecciona el agente de registro

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 fluent-bit de forma predeterminada. Puedes usar el google-logging-use-fluentbit de metadatos para cambiar el comportamiento predeterminado.

Para utilizar el agente de Logging de fluent-bit en Container-Optimized OS 105, establece google-logging-use-fluentbit en true.

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

Habilitar el agente de Logging en los metadatos del proyecto

A partir del hito 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 a la que deseas acceder. desde donde se accede a ellos.

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

  4. Esto abrirá el Explorador de registros para la instancia determinada. 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: Es 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 el Referencia de gcloud logging read en la documentación de Google Cloud.

¿Cómo funciona?

El agente de Logging está configurado de forma predeterminada para enviar registros desde ciertos servicios esenciales y contenedores de aplicaciones de usuario a Cloud Logging backend. Por ejemplo, registros de contenedores de Docker, servicios de systemd seleccionados registros de auditoría, errores de registro de diario, etc. Consulta información específica de Container-Optimized OS fuente de configuración (imágenes x86 y, también, imágenes de ARM) para obtener la configuración de registro predeterminada completa.

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

Para imágenes de ARM de todas las versiones y de imágenes x86 para Container-Optimized OS 109 y más adelante, el agente de Logging 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

Para empezar hito 89, si el agente de Logging incluido con Container-Optimized OS está habilitado y El controlador de registro gcplogs está habilitado para uno o más contenedores, es excesivo los registros de advertencia pueden generarse a través del agente de Logging incluido. 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. en su lugar, usa el controlador predeterminado como lo configura Container-Optimized OS. Ten en cuenta que el agente de registro 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 un servidor imágenes de Container-Optimized OS y un objeto binario fluent-bit en contenedores basados en ARM, imágenes de Container-Optimized OS. La configuración de los dos agentes no está compatibles. Esto no es un problema si solo confías en el registro predeterminado integrada 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 que se basan en una arquitectura diferente o a una versión más reciente de Container-Optimized OS.

Referencias

  • Agente de Logging heredado de Google Cloud Observability documentación. El agente de Logging alojado en contenedores incluido en Container-Optimized OS es un subconjunto del agente de Logging heredado, por lo que esta documentación puede brindar contexto sobre el agente de manera más general fuera del alcance de Container-Optimized OS.
  • Documentación de Google Cloud Observability. Página principal de Google Cloud Observability documentation; puede ser útil para comprender el contexto.