El rastreo de OpenTelemetry te permite identificar y rastrear la latencia de varias operaciones de la biblioteca de cliente de Pub/Sub, como la creación de lotes, la gestión de concesiones y el control de flujo. Recopilar esta información puede ayudarte a depurar problemas de la biblioteca cliente.
Estos son algunos casos prácticos potenciales del rastreo de OpenTelemetry:
- Tu servicio está experimentando una latencia de publicación superior a la habitual.
- Estás experimentando un gran número de reenvíos de mensajes.
- Un cambio en la función de retrollamada del cliente de suscriptor hace que el procesamiento tarde más de lo habitual.
Antes de empezar
Antes de configurar OpenTelemetry, completa las siguientes tareas:
- Configura Pub/Sub con una de las bibliotecas de cliente.
- Instala el SDK de OpenTelemetry y configura un exportador de trazas y un proveedor de trazadores.
- Habilita la API Cloud Trace.
- Descubre cómo leer las trazas de Cloud Observability.
Roles obligatorios
Para asegurarte de que la cuenta de servicio tiene los permisos necesarios para exportar las trazas a Cloud Trace, pide a tu administrador que le conceda los siguientes roles de gestión de identidades y accesos en tu proyecto:
-
Todos:
Agente de Cloud Trace (
roles/cloudtrace.agent
)
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para exportar trazas a Cloud Trace. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para exportar trazas a Cloud Trace, se necesitan los siguientes permisos:
-
Todo:
cloudtrace.traces.patch
Es posible que tu administrador también pueda conceder estos permisos a la cuenta de servicio con roles personalizados u otros roles predefinidos.
Flujo de trabajo de las trazas de OpenTelemetry
Para configurar el rastreo de OpenTelemetry, debes usar las bibliotecas de cliente de Pub/Sub y el SDK de OpenTelemetry. Con el SDK, debes configurar un exportador de trazas y un proveedor de trazadores antes de conectarte a las bibliotecas de Pub/Sub. En algunas bibliotecas, configurar un proveedor de seguimiento es opcional.
Exportador de Trace El SDK de OpenTelemetry usa el exportador de trazas para determinar dónde enviar las trazas.
Proveedor de seguimiento. Las bibliotecas de cliente de Pub/Sub usan el proveedor de rastreo para crear rastreos.
En los siguientes pasos se explica cómo configurar el rastreo:
- Crea una instancia de un exportador de OpenTelemetry de Cloud Trace.
- Si es necesario, crea una instancia y registra un proveedor de Tracer con el SDK de OpenTelemetry.
- Configura tu cliente con la opción para habilitar el seguimiento de OpenTelemetry.
- Usa las bibliotecas de cliente de Pub/Sub para publicar un mensaje.
Cómo funciona el rastreo
Por cada mensaje publicado, la biblioteca de cliente crea un nuevo seguimiento. Este seguimiento representa todo el ciclo de vida del mensaje, desde el momento en que publicas un mensaje hasta que se confirma. Un rastreo encapsula información como la duración de las operaciones, los intervalos principales y los intervalos secundarios, así como los intervalos vinculados.
Un rastreo se compone de un span raíz y sus spans secundarios correspondientes. Estos intervalos representan el trabajo que realiza la biblioteca cliente al procesar un mensaje. Cada seguimiento de mensaje contiene lo siguiente:
- Para publicar. Control de flujo, programación de claves de ordenación, procesamiento por lotes y longitud de la RPC de publicación.
- Para suscripciones. Control de simultaneidad, programación de claves de ordenación y gestión de concesiones.
Para propagar la información del lado de publicación al de suscripción, las bibliotecas de cliente insertan un atributo específico de la traza en el lado de publicación. El mecanismo de propagación de contexto solo se habilita cuando se activa el seguimiento y se le añade el prefijo googclient_
.
Publicar mensajes con seguimiento
En el siguiente ejemplo de código se muestra cómo habilitar el seguimiento mediante la biblioteca de cliente de Pub/Sub y el SDK de OpenTelemetry. En este ejemplo, los resultados del seguimiento se exportan a Cloud Trace.
Cuestiones importantes
Al crear una instancia del proveedor de tracer, se configura una proporción de muestreo con el SDK de OpenTelemetry. Esta proporción determina cuántas trazas debe muestrear el SDK. Una frecuencia de muestreo más baja puede ayudar a reducir los costes de facturación y evitar que tu servicio supere la cuota de intervalos de Cloud Trace.
Go
C++
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración de Python que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Python de Pub/Sub.
TypeScript
Node.js
Java
Recibir mensajes con seguimiento
Go
C++
Python
TypeScript
Node.js
Java
Analizar una traza
En las siguientes secciones se incluye información detallada sobre cómo monitorizar y analizar una traza en la consola Google Cloud .
Cuestiones importantes
- Al publicar un lote de mensajes, el intervalo de la RPC de publicación se captura en un seguimiento independiente.
- Una RPC de publicación tiene varios intervalos de origen, ya que varias llamadas de creación pueden dar lugar a una RPC de publicación cuando se agrupan.
Los intervalos de OpenTelemetry pueden tener cero o un intervalo principal.
Los intervalos que representan operaciones por lotes, como un lote de publicación (que lógicamente debería tener varios elementos superiores), no se pueden representar con cero o un intervalo superior.
Registra los intervalos creados durante el ciclo de vida del mensaje.
En la siguiente imagen se muestra un ejemplo de los intervalos que se crean en un solo rastreo de un solo mensaje.
Cada intervalo puede tener atributos adicionales. Los atributos de intervalo proporcionan metadatos adicionales, como la clave de ordenación, el ID y el tamaño del mensaje.
Los principales intervalos de publicación y suscripción se aumentan con eventos de intervalo que corresponden a cuándo se emite una llamada de red y cuándo se completa.
Solucionar problemas frecuentes
Los siguientes problemas pueden provocar problemas con el seguimiento:
- La cuenta de servicio que usas para exportar trazas no tiene el rol
roles/cloudtrace.agent
necesario. - Se ha alcanzado la cuota del número máximo de intervalos ingeridos en Cloud Trace.
- Tu aplicación se ha cerrado sin llamar a la función flush adecuada.