Ce document explique comment configurer le traçage côté client et de bout en bout à l'aide d'OpenTelemetry. Vous devez configurer le traçage côté client avant de pouvoir activer le traçage de bout en bout. Pour en savoir plus, consultez la section 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 des traces, demandez à votre administrateur d'accorder au compte de service utilisé par votre application le rôle IAM Agent de suivi Cloud (
roles/cloudtrace.agent
) sur votre projet.
Configurer le traçage côté client
Pour configurer le traçage côté client, vous devez exporter des traces. Vous pouvez exporter des traces vers un collecteur ou directement vers un backend d'observabilité. Vous pouvez configurer le traçage à l'aide des API OpenTelemetry.
Exporter des traces vers un collecteur à l'aide des API OpenTelemetry
Pour exporter des traces vers un collecteur à l'aide des API 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
Configurez l'objet OpenTelemetry et activez le traçage.
Java
Go
Exporter directement vers un backend d'observabilité à l'aide des API OpenTelemetry
Pour configurer les bibliothèques clientes Spanner afin d'exporter directement des périodes de trace vers Cloud Trace ou un autre backend de fournisseur de services d'observabilité, procédez comme suit:
Ajoutez les dépendances nécessaires à votre application à l'aide du code suivant:
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
Configurez l'objet OpenTelemetry et activez le traçage.
Java
Go
Configurer le traçage de bout en bout
Cette section fournit des instructions pour configurer le traçage de bout en bout (Preview) sur 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 sont suffisantes pour configurer le traçage de bout en bout. Vous n'avez pas besoin de dépendances supplémentaires.
Go
En plus des dépendances requises pour le traçage côté client, vous devez également disposer de la dépendance suivante:
go.opentelemetry.io/otel/propagation v1.28.0
Activez le traçage de bout en bout.
Java
SpannerOptions options = SpannerOptions.newBuilder() .setOpenTelemetry(openTelemetry) .setEnableEndToEndTracing(/* enableEndtoEndTracing= */ true) .build();
Go
Pour activer cette fonctionnalité, utilisez l'option
EnableEndToEndTracing
dans la configuration du client.client, _ := spanner.NewClientWithConfig(ctx, "projects/test-project/instances/test-instance/databases/test-db", spanner.ClientConfig{ SessionPoolConfig: spanner.DefaultSessionPoolConfig, EnableEndToEndTracing: true, }, clientOptions...)
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{})
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 | La région cloud Google Cloud du front-end de l'API Spanner qui traite la requête de votre application. |
gcp.spanner.query.fingerprint | La valeur de l'attribut correspond à 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.participants.count | 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. |
Exemple de trace
Une trace de bout en bout vous permet d'afficher les informations suivantes:
- La 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 de l'interface de l'API Spanner à partir de laquelle vos requêtes d'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 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.