Dokumen ini menunjukkan cara menyiapkan pelacakan sisi klien dan end-to-end menggunakan OpenTelemetry. Anda harus menyiapkan pelacakan sisi klien sebelum dapat memilih untuk menggunakan pelacakan end-to-end. Untuk mengetahui informasi selengkapnya, lihat Ringkasan pengumpulan rekaman aktivitas.
Sebelum memulai
-
Untuk memastikan bahwa akun layanan yang digunakan aplikasi Anda memiliki izin yang diperlukan untuk menyiapkan pengumpulan rekaman aktivitas, minta administrator untuk memberikan peran IAM Agen Cloud Trace (
roles/cloudtrace.agent
) kepada akun layanan yang digunakan aplikasi Anda di project Anda. Pastikan Cloud Trace API diaktifkan di project Anda. Untuk mengetahui informasi selengkapnya tentang cara mengaktifkan API, lihat Mengaktifkan API.
Mengonfigurasi pelacakan sisi klien
Untuk mengonfigurasi pelacakan sisi klien, Anda perlu mengekspor rekaman aktivitas. Anda dapat mengekspor rekaman aktivitas ke pengumpul atau langsung ke backend kemampuan pengamatan. Anda dapat mengonfigurasi pelacakan menggunakan OpenTelemetry API.
Mengekspor rekaman aktivitas ke pengumpul menggunakan OpenTelemetry API
Untuk mengekspor rekaman aktivitas ke pengumpul menggunakan OpenTelemetry API, konfigurasi OpenTelemetry SDK dan OLTP exporter:
Tambahkan dependensi yang diperlukan ke aplikasi Anda menggunakan kode berikut:
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
Konfigurasi objek OpenTelemetry dan aktifkan pelacakan.
Java
Go
Node.js
Python
Mengekspor langsung ke backend kemampuan pengamatan menggunakan OpenTelemetry API
Untuk mengonfigurasi library klien Spanner agar dapat mengekspor rentang rekaman aktivitas secara langsung ke backend penyedia layanan observabilitas lain atau Cloud Trace, ikuti langkah-langkah berikut:
Tambahkan dependensi yang diperlukan ke aplikasi Anda menggunakan kode berikut:
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
Konfigurasi objek OpenTelemetry dan aktifkan pelacakan.
Java
Go
Node.js
Python
Mengonfigurasi pelacakan end-to-end
Bagian ini memberikan petunjuk untuk mengonfigurasi pelacakan end-to-end di library klien Spanner:
Tambahkan dependensi yang diperlukan ke aplikasi Anda menggunakan kode berikut:
Java
Dependensi pelacakan sisi klien yang ada sudah cukup untuk mengonfigurasi pelacakan end-to-end. Anda tidak memerlukan dependensi tambahan.
Go
Selain dependensi yang Anda perlukan untuk pelacakan sisi klien, Anda juga memerlukan dependensi berikut:
go.opentelemetry.io/otel/propagation v1.28.0
Node.js
Dependensi pelacakan sisi klien yang ada sudah cukup untuk mengonfigurasi pelacakan end-to-end. Anda tidak memerlukan dependensi tambahan.
Python
Dependensi pelacakan sisi klien yang ada sudah cukup untuk mengonfigurasi pelacakan end-to-end. Anda tidak memerlukan dependensi tambahan.
Aktifkan pelacakan menyeluruh.
Java
SpannerOptions options = SpannerOptions.newBuilder() .setOpenTelemetry(openTelemetry) .setEnableEndToEndTracing(/* enableEndtoEndTracing= */ true) .build();
Go
Gunakan opsi
EnableEndToEndTracing
di konfigurasi klien untuk mengaktifkan fitur ini.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)
Tetapkan penerapan konteks rekaman aktivitas di 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())
Atribut pelacakan menyeluruh
Perekaman aktivitas end-to-end dapat mencakup informasi berikut:
Nama atribut | Deskripsi |
---|---|
service.name | Nilai atribut selalu spanner_api_frontend . |
cloud.region | Region cloud Google Cloud frontend Spanner API yang melayani permintaan aplikasi Anda. |
gcp.spanner.server.query.fingerprint | Nilai atribut adalah sidik jari kueri. Untuk men-debug kueri ini lebih lanjut, lihat kolom TEXT_FINGERPRINT di tabel Statistik kueri. |
gcp.spanner.server.paxos.participantcount | Jumlah peserta yang terlibat dalam transaksi. Untuk mengetahui informasi selengkapnya, lihat Proses Operasi Baca & Tulis Spanner. |
Contoh rekaman aktivitas
Trace end-to-end memungkinkan Anda melihat detail berikut:
- Latensi antara aplikasi Anda dan Spanner. Anda dapat menghitung latensi jaringan untuk melihat apakah ada masalah jaringan.
- Region cloud frontend Spanner API tempat permintaan aplikasi Anda ditayangkan. Anda dapat menggunakan ini untuk memeriksa panggilan lintas region antara aplikasi dan Spanner.
Dalam contoh berikut, permintaan aplikasi Anda ditayangkan
oleh frontend Spanner API di region us-west1
dan latensi jaringan adalah 8,542 md (55,47 md - 46,928 md).
Langkah berikutnya
- Untuk mengetahui informasi selengkapnya tentang OpenTelemetry, lihat dokumentasi OpenTelemetry.