Questo documento mostra come configurare la tracciabilità lato client e end-to-end utilizzando OpenTelemetry. Devi configurare la tracciabilità lato client prima di poter attivare la tracciabilità end-to-end. Per ulteriori informazioni, consulta la panoramica della raccolta delle tracce.
Prima di iniziare
-
Per assicurarti che il account di servizio utilizzato dalla tua applicazione disponga delle autorizzazioni necessarie per configurare la raccolta delle tracce, chiedi all'amministratore di concedere al account di servizio utilizzato dalla tua applicazione il ruolo IAM Agente Cloud Trace (
roles/cloudtrace.agent
) sul tuo progetto. Verifica che l'API Cloud Trace sia abilitata nel tuo progetto. Per ulteriori informazioni sull'attivazione delle API, vedi Attivazione delle API.
Configura il monitoraggio lato client
Per configurare la tracciabilità lato client, devi esportare le tracce. Puoi esportare le tracce in un raccoglitore o direttamente in un backend di osservabilità. Puoi configurare la tracciabilità utilizzando le API OpenTelemetry.
Esportare le tracce in un collettore utilizzando le API OpenTelemetry
Per esportare le tracce in un raccoglitore utilizzando le API OpenTelemetry, configura l'SDK OpenTelemetry e l'esportatore OLTP:
Aggiungi le dipendenze necessarie alla tua applicazione utilizzando il seguente codice:
Java
Vai
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 l'oggetto OpenTelemetry e abilita la tracciatura.
Java
Go
Node.js
Python
Esportare direttamente in un backend di osservabilità utilizzando le API OpenTelemetry
Per configurare le librerie client Spanner in modo da esportare direttamente gli intervalli di traccia in Cloud Trace o in un altro backend del fornitore di servizi di osservabilità, segui questi passaggi:
Aggiungi le dipendenze necessarie alla tua applicazione utilizzando il seguente codice:
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>
Vai
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 l'oggetto OpenTelemetry e abilita la tracciatura.
Java
Go
Node.js
Python
Configura la tracciabilità end-to-end
Questa sezione fornisce istruzioni per configurare la tracciabilità end-to-end nelle librerie client Spanner:
Aggiungi le dipendenze necessarie alla tua applicazione utilizzando il seguente codice:
Java
Le dipendenze di tracciamento lato client esistenti sono sufficienti per configurare il tracciamento end-to-end. Non sono necessarie dipendenze aggiuntive.
Vai
Oltre alle dipendenze necessarie per la tracciabilità lato client, devi avere anche la seguente dipendenza:
go.opentelemetry.io/otel/propagation v1.28.0
Node.js
Le dipendenze di tracciamento lato client esistenti sono sufficienti per configurare il tracciamento end-to-end. Non sono necessarie dipendenze aggiuntive.
Python
Le dipendenze di tracciamento lato client esistenti sono sufficienti per configurare il tracciamento end-to-end. Non sono necessarie dipendenze aggiuntive.
Attiva il tracciamento end-to-end.
Java
SpannerOptions options = SpannerOptions.newBuilder() .setOpenTelemetry(openTelemetry) .setEnableEndToEndTracing(/* enableEndtoEndTracing= */ true) .build();
Vai
Utilizza l'opzione
EnableEndToEndTracing
nella configurazione del client per attivare la funzionalità.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)
Imposta la propagazione del contesto di traccia in OpenTelemetry.
Java
OpenTelemetry openTelemetry = OpenTelemetrySdk.builder() .setTracerProvider(sdkTracerProvider) .setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance())) .buildAndRegisterGlobal();
Vai
// 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())
Attributi di tracciamento end-to-end
Le tracce end-to-end possono includere le seguenti informazioni:
Nome dell'attributo | Descrizione |
---|---|
service.name | Il valore dell'attributo è sempre spanner_api_frontend . |
cloud.region | La Google Cloud regione cloud del frontend dell'API Spanner che gestisce la richiesta della tua applicazione. |
gcp.spanner.server.query.fingerprint | Il valore dell'attributo è l'impronta della query. Per eseguire il debug di questa query, consulta la colonna TEXT_FINGERPRINT nelle tabelle delle statistiche sulle query. |
gcp.spanner.server.paxos.participantcount | Il numero di partecipanti coinvolti nella transazione. Per maggiori informazioni, consulta Durata di letture e scritture di Spanner. |
Traccia di esempio
Una traccia end-to-end ti consente di visualizzare i seguenti dettagli:
- La latenza tra l'applicazione e Spanner. Puoi calcolare la latenza di rete per verificare la presenza di problemi di rete.
- La regione cloud frontend dell'API Spanner da cui vengono gestite le richieste dell'applicazione. Puoi utilizzarlo per verificare le chiamate tra regioni tra l'applicazione e Spanner.
Nell'esempio seguente, la richiesta dell'applicazione viene gestita
dal frontend dell'API Spanner nella regione us-west1
e la latenza di rete è di 8,542 ms (55,47 ms - 46,928 ms).
Passaggi successivi
- Per saperne di più su OpenTelemetry, consulta la documentazione di OpenTelemetry.