En este documento, se muestra cómo configurar el registro de extremo a extremo y del cliente con OpenTelemetry. Debes configurar el registro del cliente antes de habilitar el registro de extremo a extremo. Para obtener más información, consulta Descripción general de la recopilación de registros 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 de Agente de Cloud Trace (
roles/cloudtrace.agent
) en tu proyecto. Verifica que la API de Cloud Trace esté habilitada en tu proyecto. Para obtener más información sobre cómo habilitar las APIs, consulta Habilita las APIs.
Configura el rastreo del cliente
Para configurar el registro de seguimiento del cliente, debes exportar los registros de seguimiento. Puedes exportar los registros 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 seguimientos a un recopilador con las APIs de OpenTelemetry, configura el SDK de OpenTelemetry y el exportador de OTLP:
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
Node.js
"@opentelemetry/exporter-trace-otlp-grpc": "^0.57.0", "@opentelemetry/sdk-trace-base": "^1.26.0", "@opentelemetry/sdk-trace-node": "^1.26.0",
Python
pip install opentelemetry-api opentelemetry-sdk pip install opentelemetry-exporter-otlp
Configura el objeto OpenTelemetry y habilita el seguimiento.
Java
Go
Node.js
Python
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
Node.js
"@google-cloud/opentelemetry-cloud-trace-exporter": "^2.4.1", "@opentelemetry/sdk-trace-base": "^1.26.0", "@opentelemetry/sdk-trace-node": "^1.26.0",
Python
pip install opentelemetry-api opentelemetry-sdk pip install opentelemetry-exporter-gcp-trace
Configura el objeto OpenTelemetry y habilita el seguimiento.
Java
Go
Node.js
Python
Configura el registro de extremo a extremo
En esta sección, se proporcionan instrucciones para configurar el registro de extremo a extremo 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 registro del cliente, también necesitas la siguiente dependencia:
go.opentelemetry.io/otel/propagation v1.28.0
Node.js
Las dependencias de seguimiento del cliente existentes son suficientes para configurar el seguimiento de extremo a extremo. No necesitas dependencias adicionales.
Python
Las dependencias de seguimiento del cliente existentes son suficientes para configurar el seguimiento de extremo a extremo. No necesitas dependencias adicionales.
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 la función.client, _ := spanner.NewClientWithConfig(ctx, "projects/test-project/instances/test-instance/databases/test-db", spanner.ClientConfig{ SessionPoolConfig: spanner.DefaultSessionPoolConfig, EnableEndToEndTracing: true, }, clientOptions...)
Node.js
const spanner = new Spanner({ projectId: projectId, observabilityOptions: { tracerProvider: openTelemetryTracerProvider, enableEndToEndTracing: true, } })
Python
observability_options = dict( tracer_provider=tracer_provider, enable_end_to_end_tracing=True, ) spanner = spanner.NewClient(project_id, observability_options=observability_options)
Configura 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{})
Node.js
const {propagation} = require('@opentelemetry/api'); const {W3CTraceContextPropagator} = require('@opentelemetry/core'); propagation.setGlobalPropagator(new W3CTraceContextPropagator());
Python
from opentelemetry.propagate import set_global_textmap from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator set_global_textmap(TraceContextTextMapPropagator())
Atributos de seguimiento de extremo a extremo
Los registros de seguimiento 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 Cloud de la interfaz de la API de Spanner que atiende la solicitud de tu aplicación. Google Cloud |
gcp.spanner.server.query.fingerprint | El valor del atributo es la huella digital de la búsqueda. Para depurar aún más esta consulta, consulta la columna TEXT_FINGERPRINT en las tablas de estadísticas de consultas. |
gcp.spanner.server.paxos.participantcount | 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. |
Registro de muestra
Un registro de extremo a extremo te permite ver los siguientes detalles:
- Es la latencia entre tu aplicación y Spanner. Puedes calcular la latencia de red para ver si tienes problemas de red.
- Región de Cloud del frontend de la API de Spanner desde la que se atienden las solicitudes de tu aplicación. Puedes usar esta opción para verificar las llamadas entre regiones entre tu aplicación y Spanner.
En el siguiente ejemplo, el frontend de la API de Spanner en la región us-west1
atiende la solicitud de tu aplicación, 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.