Questo documento mostra come configurare il monitoraggio lato client e end-to-end utilizzando OpenTelemetry. Devi configurare il monitoraggio lato client prima di poter attivare il monitoraggio end-to-end. Per ulteriori informazioni, consulta la panoramica della raccolta dei traccianti.
Prima di iniziare
-
Per assicurarti che l'account di servizio utilizzato dalla tua applicazione abbia i requisiti autorizzazioni per configurare la raccolta delle tracce, chiedi all'amministratore di concedere l'account di servizio che la tua applicazione utilizza Ruolo IAM dell'agente Cloud Trace (
roles/cloudtrace.agent
) per il progetto.
Configurare il monitoraggio lato client
Per configurare il monitoraggio lato client, devi esportare le tracce. Puoi esportare le tracce in un raccoglitore o direttamente a un backend di osservabilità. Puoi configurare il monitoraggio utilizzando le API OpenTelemetry.
Esporta le tracce in un raccoglitore 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 all'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
Configura l'oggetto OpenTelemetry e abilita il monitoraggio.
Java
Vai
Esporta direttamente in un backend di osservabilità utilizzando le API OpenTelemetry
Per configurare le librerie client di Spanner per eseguire direttamente esportare intervalli di traccia in Cloud Trace o nel backend di un altro fornitore di servizi di osservabilità; segui questi passaggi:
Aggiungi le dipendenze necessarie all'applicazione utilizzando il codice seguente:
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
Configura l'oggetto OpenTelemetry e abilita il monitoraggio.
Java
Vai
Configura il monitoraggio end-to-end
Questa sezione fornisce istruzioni per configurare il tracciamento end-to-end (Anteprima) sulle librerie client di Spanner:
Aggiungi le dipendenze necessarie all'applicazione utilizzando il codice seguente:
Java
Le dipendenze di monitoraggio lato client esistenti sono sufficienti per configurare il monitoraggio end-to-end. Non hai bisogno di dipendenze aggiuntive.
Vai
Oltre alle dipendenze necessarie per il monitoraggio lato client, è necessaria anche la seguente dipendenza:
go.opentelemetry.io/otel/propagation v1.28.0
Attiva il monitoraggio end-to-end.
Java
SpannerOptions options = SpannerOptions.newBuilder() .setOpenTelemetry(openTelemetry) .setEnableEndToEndTracing(/* enableEndtoEndTracing= */ true) .build();
Vai
Per attivare la funzionalità, utilizza l'opzione
EnableEndToEndTracing
nella configurazione del client.client, _ := spanner.NewClientWithConfig(ctx, "projects/test-project/instances/test-instance/databases/test-db", spanner.ClientConfig{ SessionPoolConfig: spanner.DefaultSessionPoolConfig, EnableEndToEndTracing: true, }, clientOptions...)
Imposta la propagazione del contesto della 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{})
Attributi di monitoraggio 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 regione cloud Google Cloud del frontend dell'API Spanner che gestisce la richiesta dell'applicazione. |
gcp.spanner.query.fingerprint | Il valore dell'attributo è l'impronta digitale della query. Per eseguire ulteriormente il debug di questa query, consulta la colonna TEXT_FINGERPRINT nelle tabelle Statistiche sulle query. |
gcp.spanner.participants.count | Il numero di partecipanti coinvolti nella transazione. Per ulteriori informazioni, consulta la sezione Durata di letture e scritture di Spanner. |
Traccia di esempio
Una traccia end-to-end consente di visualizzare i seguenti dettagli:
- La latenza tra la tua applicazione e Spanner. Puoi calcolare la latenza della rete per verificare se ci sono problemi di rete.
- La regione cloud frontend dell'API Spanner in cui l'applicazione da cui vengono gestite le richieste. Puoi utilizzarlo per verificare la presenza di chiamate tra regioni tra la tua applicazione e Spanner.
Nell'esempio seguente, la richiesta dell'applicazione viene gestita dal frontend dell'API Spanner nella regione us-west1
e la latenza della rete è di 8,542 ms (55,47 ms - 46,928 ms).
Passaggi successivi
- Per saperne di più su OpenTelemetry, consulta la documentazione di OpenTelemetry.