En este documento, se proporciona la información que necesitas para decidir si envías de manera programática los registros de las aplicaciones a Cloud Logging mediante bibliotecas cliente o un agente de registro. Los agentes de registro envían datos escritos en un archivo, como
stdout
o un archivo, como registros a Cloud Logging. 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 heredado de Cloud Logging.
Estos agentes recopilan registros de ubicaciones de archivos
servicios, como Windows Event Log
, journald
o syslogd
.
Cuando no puedes usar una biblioteca cliente o un agente de Logging, o cuando
solo quieres experimentar, puedes escribir registros con el
gcloud logging write
o mediante el envío de comandos de HTTP al extremo de API de Cloud Logging
entries.write
La API de Cloud Logging admite llamadas HTTP y gRPC. El Agente de operaciones y la mayoría de los clientes de Logging
bibliotecas llaman a la API de Logging de gRPC. La versión heredada de Logging
y las bibliotecas cliente para algunos lenguajes llaman a la API de
API de Logging.
Elige un agente o bibliotecas cliente
Cuando decidas entre un agente o las bibliotecas cliente, ten en cuenta las siguientes preguntas:
- ¿La 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 de Logging. Para enrutar registros de sistemas locales a Logging, te recomendamos que uses BindPlane de observIQ. Para obtener más información sobre BindPlane, consulta Acerca de observIQ y BindPlane
Como alternativa, puedes enrutar los registros a Logging directamente desde la aplicación mediante bibliotecas cliente. Para entornos efímeros, como la computación sin servidores, debes usar bibliotecas cliente para realizar llamadas directas a la API de Logging.
- ¿El servicio de Google Cloud que ejecuta tu aplicación admite
- escribir contenido de
stdout
ystderr
en tu proyecto? Algunos servicios de Google Cloud están completamente administrados, por lo que no necesitas usar agentes para enviar registros a tu proyecto de 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 compatibles con
stdout
ystderr
de forma predeterminada. Una ventaja de usarstdout
ystderr
en lugar de bibliotecas cliente es que las fallas de la aplicación no interrumpen el envío de registros a tu proyecto. Para obtener información sobre el envío registros estructurados a través destdout
ystderr
, consulta la sección ¿Tu aplicación tiene la flexibilidad para cambiar el formato de registro?.Puedes usar las bibliotecas cliente de Logging, pero ten en cuenta que puede ingresar una dependencia en Logging para las pruebas locales, cuando no la necesites. El uso de las bibliotecas cliente también puede requerir una programación más compleja para controlar de forma explícita el almacenamiento en búfer y los reintentos. Además, cada uso de las bibliotecas cliente de Logging crea un flujo de conexión nuevo a la API. Estas conexiones nuevas presentan mayor complejidad, usan puertos adicionales y envían solicitudes separadas solo con los registros de la aplicación, lo que podría ser un desperdicio si no hay muchos registros.
- ¿Los registros de la aplicación deben ser accesibles en tu entorno local?
Si necesitas acceder a los registros de la aplicación en tu entorno local para la depuración y otros fines, puedes usar los módulos de registro en algunos lenguajes a fin de generar los resultados en
stdout
ystderr
. Las bibliotecas cliente de Logging para algunos lenguajes admiten el enrutamiento de registros astdout
ystderr
.Cuando ejecutas tu aplicación en los servicios de Google Cloud que no admiten el envío automático de registros escritos en
stdout
ystderr
a tu proyecto de Google Cloud, puedes recopilar registrosstdout
ystderr
en archivos en el disco y configurar el agente para que los extraiga y los envíe a Logging. Para obtener más información, consulta la guía de configuración del Agente de operaciones o el agente de Logging heredado.- ¿El proceso de instalación del agente es manual o automático?
Algunos servicios instalan agentes de forma automática o te permiten instalarlos. Si el servicio que usas no te permite instalar agentes, debes usar las bibliotecas cliente para usar Logging.
- ¿Ya ejecutas Fluentd en tu sistema?
El agente de Logging heredado se basa en Fluentd.
Si ya tienes Fluentd en ejecución en tu sistema y deseas usar ese daemon para enviar tus registros a Logging, usa el complemento de Google Cloud Logging para fluentd.
- ¿También recopilas métricas de aplicaciones para Cloud Monitoring?
En las VM de Compute Engine, el agente de operaciones puede recopilar registros y la mayoría de las métricas. Consulta las funciones del agente de operaciones para obtener más información.
Si el Agente de operaciones no aborda tus casos de uso, puedes usar el agente de Monitoring heredado o Supervisa bibliotecas cliente para recopilar tus métricas.
- ¿Tu aplicación tiene la flexibilidad de cambiar el formato de registro?
Esta pregunta te ayuda a decidir si tu aplicación puede generar registros estructurados. Logging reconoce los registros estructurados si envías los registros a la API de Logging en el formato de registro estructurado. Las bibliotecas cliente proporcionan los métodos para manejar este formato.
Existen dos formas de escribir registros estructurados: una es establecer campos específicos en el sobre de
LogEntry
y la otra es configurarjsonPayload
dentro del sobre deLogEntry
. Cloud Logging determina el esquema para lo primero, mientras que el usuario determina el esquema para el último.Debes configurar el agente para que reconozca los registros estructurados. De forma predeterminada, los agentes se configuran para detectar registros en formato JSON y controlarlos como registros estructurados. Si tu aplicación tiene su propio formato de registro que no puedes cambiar, pero deseas que los registros se reconozcan como registros estructurados, debes escribir los registros en el formato structured-logging, por lo general, JSON, en
stdout
ystderr
, para que los agentes puedan reconocerlos como registros estructurados. De lo contrario, debes configurar el agente para que comprenda tu propio formato.
Resumen de cada opción
Bibliotecas cliente de Cloud Logging
Ventajas
- Puedes enrutar registros directamente a la API de Cloud Logging.
- Algunos lenguajes pueden generar registros en
stdout
ystderr
mediante la biblioteca.
Desventajas
- Las fallas de la aplicación interrumpen el envío de registros a tu proyecto de Google Cloud.
Agente de operaciones
- Ventajas
- El Agente de operaciones puede enviar registros y métricas usando tecnologías de código abierto estables: Fluent Bit para la recopilación de registros y el OpenTelemetry Collector para la recopilación de métricas.
- Puedes recopilar registros y métricas de muchas aplicaciones; consulta Supervisar y recopilar registros de terceros aplicaciones.
- Puedes conservar registros en tu entorno local.
- Es posible que puedas recuperar registros de fallas de la aplicación.
- El Agente de operaciones está en desarrollo activo.
- Ventajas
Agente de Logging heredado
- Ventajas
- El agente usa Fluentd para recopilar registros.
- Puedes conservar registros en tu entorno local.
- Es posible que puedas recuperar registros de fallas de la aplicación.
- Desventajas
- El agente es compatible actualmente, pero no está en desarrollo activo.
- Ventajas
Registros de
stdout
ystderr
que se envían automáticamente a tu proyecto de Google Cloud- Ventajas
- Este proceso es una forma común de emitir registros a entornos locales.
- Puedes usar bibliotecas de registro arbitrarias.
- Es posible que puedas recuperar registros de fallas de la aplicación.
- Desventajas
- No todos los entornos enrutan los registros a Logging automáticamente.
- Ventajas