¿Qué herramienta debes usar, el agente de Logging o la biblioteca de cliente?

En este documento se proporciona la información que necesitas para decidir si quieres enviar registros de aplicaciones a Cloud Logging de forma programática mediante bibliotecas de cliente o un agente de registro. Los agentes de registro envían a Cloud Logging los datos escritos en un archivo, como stdout o un archivo, en forma de registros. Servicios como Google Kubernetes Engine, el entorno flexible de App Engine y las funciones de Cloud Run contienen un agente de registro integrado. En Compute Engine, puedes instalar el Agente de operaciones o el agente de Cloud Logging antiguo. Estos agentes recogen registros de ubicaciones de archivos conocidas o de servicios de registro, como Windows Event Log, journald o syslogd.

Si no puedes usar una biblioteca de cliente o un agente de Logging, o si solo quieres experimentar, puedes escribir registros con el comando gcloud logging write o enviando comandos HTTP al endpoint de la API Cloud Logging entries.write. La API Cloud Logging admite llamadas HTTP y gRPC. El agente de Ops y la mayoría de las bibliotecas de cliente de Logging llaman a la API de Logging de gRPC. El agente Logging y las bibliotecas de cliente antiguos de algunos lenguajes llaman a la API REST Logging.

Elegir un agente o bibliotecas de cliente

Cuando tengas que elegir entre un agente o las bibliotecas de cliente, ten en cuenta las siguientes preguntas:

¿Tu aplicación se ejecuta fuera de Google Cloud?

Si tu aplicación no se ejecuta en Google Cloud, necesitas alguna forma de enviar registros a la API Logging. Para enrutar registros de sistemas locales a Logging, te recomendamos que uses Bindplane, que implementa y gestiona colectores de OpenTelemetry para enviar telemetría a Google Cloud. Para obtener más información, consulta Acerca de Bindplane.

Bindplane te permite recoger datos telemétricos de diversas fuentes y exportarlos a Cloud Monitoring y Cloud Logging.

También puede enviar registros a Logging directamente desde la aplicación mediante bibliotecas de cliente. En los entornos efímeros, como la computación sin servidor, debes usar bibliotecas de cliente para hacer llamadas directas a la API Logging.

¿El servicio Google Cloud que ejecuta tu aplicación admite
¿Escribir contenido stdout y stderr para tu proyecto?

Algunos Google Cloud servicios están totalmente gestionados, por lo que no es necesario usar agentes para enviar registros a tu proyecto Google Cloud . Puedes usar cualquier framework de registro establecido en el lenguaje que elijas, como Go, Node.js y Python, para enviar registros a Logging en productos donde stdout y stderr se admiten de forma predeterminada. Una de las ventajas de usar stdout y stderr en lugar de bibliotecas de cliente es que los fallos de las aplicaciones no impiden que se envíen registros a tu proyecto. Para obtener información sobre cómo enviar registros estructurados a través de stdout y stderr, consulta la sección ¿Tu aplicación tiene la flexibilidad necesaria para cambiar el formato de los registros?

Puedes usar bibliotecas de cliente de Logging, pero ten en cuenta que puede introducir una dependencia de Logging para las pruebas locales, cuando no sea necesario. Para usar las bibliotecas de cliente, es posible que también se necesite un código más complejo para gestionar explícitamente el almacenamiento en búfer y los reintentos. Además, cada vez que se usan las bibliotecas de cliente de Logging, se crea un nuevo flujo de conexión a la API. Estas nuevas conexiones introducen más complejidad, usan puertos adicionales y envían solicitudes independientes solo con los registros de la aplicación, lo que podría ser un desperdicio si no hay muchos registros.

¿Es necesario que se pueda acceder a los registros de la aplicación en tu entorno local?

Si necesitas acceder a los registros de aplicaciones en tu entorno local para depurar y otros fines, puedes usar los módulos de registro de algunos lenguajes para generar resultados en stdout y stderr. Las bibliotecas de cliente de registro de algunos lenguajes admiten el enrutamiento de registros a stdout y stderr.

Cuando ejecutas tu aplicación en servicios que no admiten el envío automático de registros escritos en stdout y stderr a tu proyecto deGoogle Cloud , puedes recoger los registros de stdout y stderr en archivos del disco y configurar el agente para que los extraiga y los envíe a Logging. Google Cloud Para obtener más información, consulta la guía de configuración del agente de Ops o del agente de Logging antiguo.

¿El proceso de instalación del agente es manual o automático?

Algunos servicios instalan agentes automáticamente o te permiten instalarlos tú mismo. Si el servicio que usas no te permite instalar agentes, debes usar las bibliotecas de cliente para usar Logging.

¿Ya estás ejecutando Fluentd en tu sistema?

El agente de Logging antiguo se basa en Fluentd.

Si ya tienes Fluentd en tu sistema y quieres usar ese daemon para enviar tus registros a Logging, utiliza el Google Cloud complemento de Logging para Fluentd.

¿También recoges métricas de aplicaciones para Cloud Monitoring?

En las máquinas virtuales de Compute Engine, el Agente de operaciones puede recoger registros y la mayoría de las métricas. Consulta las funciones del agente de Ops para obtener más información.

Si el agente de Ops no se adapta a tus casos prácticos, puedes usar el agente de Monitoring antiguo o las bibliotecas de cliente de Monitoring para recoger tus métricas.

¿Tu aplicación tiene la flexibilidad necesaria para cambiar el formato del registro?

Esta pregunta te ayuda a decidir si tu aplicación puede generar registros estructurados. Logging reconoce los registros estructurados si los envías a la API de Logging en formato de registro estructurado. Las bibliotecas de cliente proporcionan los métodos para gestionar este formato.

Hay dos formas de escribir registros estructurados: una es definir campos específicos en el LogEntrysobre y la otra es definir el campo jsonPayload en el LogEntrysobre. El esquema del primero lo determina Cloud Logging, mientras que el del segundo lo determina el usuario.

Debes configurar el agente para que reconozca los registros estructurados. De forma predeterminada, los agentes están configurados para detectar registros en formato JSON y tratarlos como registros estructurados. Si tu aplicación tiene su propio formato de registro que no puedes cambiar, pero quieres que los registros se reconozcan como registros estructurados, debes escribir los registros en el formato de registro estructurado, normalmente JSON, en stdout y stderr para que los agentes puedan reconocerlos como registros estructurados. De lo contrario, debes configurar tu agente para que entienda tu propio formato.

Resumen de cada opción

Diagrama de patrones de registro

  • Bibliotecas de cliente de Cloud Logging

    • Ventajas

      • Puedes enrutar los registros directamente a la API de Cloud Logging.
      • Algunos idiomas pueden generar registros en stdout y stderr mediante la biblioteca.
    • Desventajas

      • Si la aplicación falla, no se podrán enviar registros a tu Google Cloud proyecto.
  • Agente de operaciones

    • Ventajas

      • El agente de operaciones puede enviar registros y métricas mediante tecnologías de código abierto estables: Fluent Bit para la recogida de registros y OpenTelemetry Collector para la recogida de métricas.
      • Puedes recoger tanto registros como métricas de muchas aplicaciones comunes. Consulta el artículo Monitorizar y recoger registros de aplicaciones de terceros.
      • Puedes conservar los registros en tu entorno local.
      • Es posible que puedas recuperar los registros de los fallos de las aplicaciones.
      • El agente de Ops está en fase de desarrollo.
    • Desventajas

      • Fluent Bit solo admite la codificación UTF-8. No admite la conversión de codificación.
  • Agente de Logging antiguo

    • Ventajas
      • El agente usa Fluentd para recoger registros, que admite la conversión de codificación.
      • Puedes conservar los registros en tu entorno local.
      • Es posible que puedas recuperar los registros de los fallos de las aplicaciones.
    • Inconvenientes
      • Actualmente, el agente es compatible, pero no está en fase de desarrollo.
  • Registros de stdout y stderr enviados automáticamente a tu Google Cloud proyecto

    • Ventajas
      • Este proceso es una forma habitual de emitir registros en entornos locales.
      • Puedes usar bibliotecas de registro arbitrarias.
      • Es posible que puedas recuperar los registros de los fallos de las aplicaciones.
    • Inconvenientes
      • No todos los entornos enrutan automáticamente los registros a Logging.