En este documento, se muestra cómo configurar el seguimiento del cliente y de extremo a extremo con OpenTelemetry. Debes configurar el seguimiento del cliente antes de habilitar el seguimiento de extremo a extremo. Para obtener más información, consulta Descripción general de la recopilación de Trace.
Antes de comenzar
-
Para asegurarte de que la cuenta de servicio que usa tu aplicación tenga los permisos necesarios para configurar la recopilación de registros, pídele a tu administrador que le otorgue a la cuenta de servicio que usa tu aplicación el rol de IAM Agente de seguimiento de Cloud (
roles/cloudtrace.agent
) en tu proyecto.
Configura el seguimiento del cliente
Para configurar el seguimiento del cliente, debes exportar los seguimientos. Puedes exportar seguimientos a un recopilador o directamente a un backend de observabilidad. Puedes configurar el seguimiento con las APIs de OpenTelemetry.
Exporta seguimientos a un recopilador con las APIs de OpenTelemetry
Para exportar seguimientos a un recopilador con las APIs de OpenTelemetry, configura el SDK de OpenTelemetry y el exportador de OLTP:
Agrega las dependencias necesarias a tu aplicación con el siguiente código:
Java
Go
go.opentelemetry.io/otel v1.28.0 go.opentelemetry.io/otel/sdk v1.28.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0
Configura el objeto OpenTelemetry y habilita el seguimiento.
Java
Go
Exporta directamente a un backend de observabilidad con las APIs de OpenTelemetry
Para configurar las bibliotecas cliente de Spanner de modo que exporten directamente los intervalos de seguimiento a Cloud Trace o a otro backend de proveedor de servicios de observabilidad, sigue estos pasos:
Agrega las dependencias necesarias a tu aplicación con el siguiente código:
Java
<dependency> <groupId>com.google.cloud</groupId> <artifactId>google-cloud-spanner</artifactId> </dependency> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-api</artifactId> </dependency> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-sdk</artifactId> </dependency> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-sdk-common</artifactId> </dependency> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-sdk-trace</artifactId> </dependency> <dependency> <groupId>com.google.cloud.opentelemetry</groupId> <artifactId>exporter-trace</artifactId> <version>0.30.0</version> </dependency>
Go
go.opentelemetry.io/otel v1.28.0 go.opentelemetry.io/otel/sdk v1.28.0 github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.24.1
Configura el objeto OpenTelemetry y habilita el seguimiento.
Java
Go
Cómo configurar el registro de extremo a extremo
En esta sección, se proporcionan instrucciones para configurar el seguimiento de extremo a extremo (versión preliminar) en las bibliotecas cliente de Spanner:
Agrega las dependencias necesarias a tu aplicación con el siguiente código:
Java
Las dependencias de seguimiento existentes del cliente son suficientes para configurar el seguimiento de extremo a extremo. No necesitas dependencias adicionales.
Go
Además de las dependencias que necesitas para el seguimiento del cliente, también necesitas la siguiente dependencia:
go.opentelemetry.io/otel/propagation v1.28.0
Habilita el seguimiento de extremo a extremo.
Java
SpannerOptions options = SpannerOptions.newBuilder() .setOpenTelemetry(openTelemetry) .setEnableEndToEndTracing(/* enableEndtoEndTracing= */ true) .build();
Go
Usa la opción
EnableEndToEndTracing
en la configuración del cliente para habilitarla.client, _ := spanner.NewClientWithConfig(ctx, "projects/test-project/instances/test-instance/databases/test-db", spanner.ClientConfig{ SessionPoolConfig: spanner.DefaultSessionPoolConfig, EnableEndToEndTracing: true, }, clientOptions...)
Establece la propagación del contexto de seguimiento en OpenTelemetry.
Java
OpenTelemetry openTelemetry = OpenTelemetrySdk.builder() .setTracerProvider(sdkTracerProvider) .setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance())) .buildAndRegisterGlobal();
Go
// Register the TraceContext propagator globally. otel.SetTextMapPropagator(propagation.TraceContext{})
Atributos de seguimiento de extremo a extremo
Los seguimientos de extremo a extremo pueden incluir la siguiente información:
Nombre del atributo | Descripción |
---|---|
service.name | El valor del atributo siempre es spanner_api_frontend . |
cloud.region | La región de nube de Google Cloud del frontend de la API de Spanner que entrega la solicitud de tu aplicación |
gcp.spanner.query.fingerprint | El valor del atributo es la huella digital de la consulta. Para depurar esta consulta en más detalle, consulta la columna TEXT_FINGERPRINT en las tablas de estadísticas de consultas. |
gcp.spanner.participants.count | Es la cantidad de participantes involucrados en la transacción. Para obtener más información, consulta Ciclo de vida de las operaciones de lectura y escritura de Spanner. |
Seguimiento de muestra
Un seguimiento de extremo a extremo te permite ver los siguientes detalles:
- La latencia entre tu aplicación y Spanner. Puedes calcular la latencia de red para ver si tienes algún problema de red.
- La región de nube del frontend de la API de Spanner desde la que se entregan las solicitudes de tu aplicación Puedes usar esto para verificar si hay llamadas entre regiones entre tu aplicación y Spanner.
En el siguiente ejemplo, el frontend de la API de Spanner entrega la solicitud de tu aplicación en la región us-west1
y la latencia de red es de 8.542 ms (55.47 ms - 46.928 ms).
¿Qué sigue?
- Para obtener más información sobre OpenTelemetry, consulta la documentación de OpenTelemetry.