Ce document explique comment configurer le traçage côté client et de bout en bout à l'aide de OpenTelemetry. Avant de pouvoir activer le traçage de bout en bout, vous devez configurer le traçage côté client. Pour en savoir plus, consultez la présentation de la collecte de traces.
Avant de commencer
-
Pour vous assurer que le compte de service utilisé par votre application dispose des autorisations nécessaires pour configurer la collecte de traces, demandez à votre administrateur d'attribuer les rôles IAM suivants au compte de service utilisé par votre application dans votre projet :
-
Tous : Rédacteur de traces de télémétrie cloud (
roles/telemetry.tracesWriter)
-
Tous : Rédacteur de traces de télémétrie cloud (
Vérifiez que l'API Cloud Trace et l'API Telemetry sont activées dans votre projet. Pour en savoir plus sur l'activation des API, consultez Activer desAPI.
Configurer le traçage côté client
Pour exporter des traces à l'aide du protocole OpenTelemetry (OTLP), configurez votre application. Vous pouvez envoyer des données à un collecteur OpenTelemetry ou directement à Cloud Trace via l'API Telemetry. Les deux méthodes utilisent les mêmes dépendances et la même configuration. Elles ne diffèrent que par le point de terminaison OTLP utilisé par l'exportateur.
Exporter des traces à l'aide du protocole OpenTelemetry
Pour exporter des traces à l'aide du protocole OpenTelemetry, configurez le SDK OpenTelemetry et l'exportateur OTLP :
Ajoutez les dépendances nécessaires à votre application à l'aide du code suivant :
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
Configurez l'objet OpenTelemetry et activez le traçage.
Java
Go
Node.js
Python
Configurer le traçage de bout en bout
Cette section explique comment configurer le traçage de bout en bout dans les bibliothèques clientes Spanner :
Ajoutez les dépendances nécessaires à votre application à l'aide du code suivant :
Java
Les dépendances de traçage côté client existantes suffisent pour configurer le traçage de bout en bout. Vous n'avez besoin d'aucune dépendance supplémentaire.
Go
En plus des dépendances dont vous avez besoin pour le traçage côté client, vous avez également besoin de la dépendance suivante :
go.opentelemetry.io/otel/propagation v1.28.0Node.js
Les dépendances de traçage côté client existantes suffisent pour configurer le traçage de bout en bout. Vous n'avez besoin d'aucune dépendance supplémentaire.
Python
Les dépendances de traçage côté client existantes suffisent pour configurer le traçage de bout en bout. Vous n'avez besoin d'aucune dépendance supplémentaire.
Activez le traçage de bout en bout.
Java
SpannerOptions options = SpannerOptions.newBuilder() .setOpenTelemetry(openTelemetry) .setEnableEndToEndTracing(/* enableEndtoEndTracing= */ true) .build();
Go
Utilisez l'option
EnableEndToEndTracingdans la configuration du client pour l'activer.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={ "tracer_provider": tracer_provider, "enable_end_to_end_tracing": True, } spanner = spanner.Client(project_id, observability_options=observability_options)
Définissez la propagation du contexte de trace dans 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())
Attributs de traçage de bout en bout
Les traces de bout en bout peuvent inclure les informations suivantes :
| Nom de l'attribut | Description |
|---|---|
| service.name | La valeur de l'attribut est toujours spanner_api_frontend. |
| cloud.region | Région cloud Google Cloud du frontend de l'API Spanner qui traite la requête de votre application. |
| gcp.spanner.server.query.fingerprint | La valeur de l'attribut est l'empreinte de la requête. Pour déboguer davantage cette requête, consultez la colonne TEXT_FINGERPRINT
dans les tables de statistiques sur les requêtes. |
| gcp.spanner.server.paxos.participantcount | Nombre de participants impliqués dans la transaction. Pour en savoir plus, consultez la page Déroulement des opérations de lecture et d'écriture Spanner. |
| gcp.spanner.isolation_level | La valeur de l'attribut correspond au niveau d'isolation de la transaction.
Les valeurs possibles sont SERIALIZABLE et
REPEATABLE_READ. Pour en savoir plus, consultez la présentation des niveaux d'isolation. |
Exemple de trace
Une trace de bout en bout vous permet d'afficher les détails suivants :
- Latence entre votre application et Spanner. Vous pouvez calculer la latence du réseau pour voir si vous rencontrez des problèmes de réseau.
- Région cloud du frontend de l'API Spanner à partir de laquelle les requêtes de votre application sont traitées. Vous pouvez l'utiliser pour vérifier les appels interrégionaux entre votre application et Spanner.
Dans l'exemple suivant, la requête de votre application est traitée par le frontend de l'API Spanner dans la région us-west1, et la latence du réseau est de 8,542 ms (55,47 ms - 46,928 ms).

Étape suivante
- Pour en savoir plus sur OpenTelemetry, consultez la documentation OpenTelemetry.