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 para poder habilitar la opción un seguimiento de extremo a extremo. Para obtener más información, consulta Descripción general de la recopilación de seguimientos.
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 Cloud Trace (
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 registros a un recopilador con las APIs de OpenTelemetry
Para exportar registros a un recopilador con las APIs de OpenTelemetry, sigue estos pasos: 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 (Vista previa) en las bibliotecas cliente de Spanner:
Agrega las dependencias necesarias a tu aplicación con el siguiente código:
Java
Las dependencias de seguimiento del cliente existentes 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 habilitar esta opción.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 | Es la región de la 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 aún más esta consulta, revisa la columna TEXT_FINGERPRINT en las tablas de estadísticas de las consultas. |
gcp.spanner.participants.count | Indica la cantidad de participantes que participan 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 problemas.
- Es la región de la nube de frontend de la API de Spanner en la que tu aplicación de las solicitudes de servicio. Puedes usar esto para verificar el tráfico entre regiones llamadas 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 la 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.