Dokumen ini menunjukkan cara menyiapkan pelacakan sisi klien dan menyeluruh menggunakan OpenTelemetry. Sebelum dapat memilih pelacakan menyeluruh, Anda harus menyiapkan pelacakan sisi klien. Untuk mengetahui informasi selengkapnya, lihat Ringkasan pengumpulan trace.
Sebelum memulai
-
Untuk memastikan bahwa akun layanan yang digunakan aplikasi Anda memiliki izin yang diperlukan untuk menyiapkan pengumpulan trace, minta administrator untuk memberikan peran IAM berikut ke akun layanan yang digunakan aplikasi Anda di project Anda:
-
Semua:
Cloud Telemetry Traces Writer (
roles/telemetry.tracesWriter)
-
Semua:
Cloud Telemetry Traces Writer (
Pastikan Cloud Trace dan Telemetry API diaktifkan di project Anda. Untuk mengetahui informasi selengkapnya tentang cara mengaktifkan API, lihat Mengaktifkan API.
Mengonfigurasi pelacakan sisi klien
Untuk mengekspor trace menggunakan OpenTelemetry Protocol (OTLP), konfigurasikan aplikasi Anda. Anda dapat mengirim data ke OpenTelemetry Collector atau langsung ke Cloud Trace melalui Telemetry API. Kedua metode tersebut menggunakan dependensi dan konfigurasi yang sama. Keduanya hanya berbeda dalam endpoint OTLP yang digunakan oleh pengekspor.
Mengekspor trace menggunakan OpenTelemetry Protocol
Untuk mengekspor trace menggunakan OpenTelemetry Protocol, konfigurasikan OpenTelemetry SDK dan pengekspor OTLP:
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
Konfigurasikan objek OpenTelemetry dan aktifkan pelacakan.
Java
Go
Node.js
Python
Mengonfigurasi pelacakan menyeluruh
Bagian ini memberikan petunjuk untuk mengonfigurasi pelacakan menyeluruh 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 menyeluruh. 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.0Node.js
Dependensi pelacakan sisi klien yang ada sudah cukup untuk mengonfigurasi pelacakan menyeluruh. Anda tidak memerlukan dependensi tambahan.
Python
Dependensi pelacakan sisi klien yang ada sudah cukup untuk mengonfigurasi pelacakan menyeluruh. Anda tidak memerlukan dependensi tambahan.
Pilih pelacakan menyeluruh.
Java
SpannerOptions options = SpannerOptions.newBuilder() .setOpenTelemetry(openTelemetry) .setEnableEndToEndTracing(/* enableEndtoEndTracing= */ true) .build();
Go
Gunakan opsi
EnableEndToEndTracingdalam konfigurasi klien untuk memilih.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)
Tetapkan penerapan konteks trace 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
Trace menyeluruh dapat mencakup informasi berikut:
| Nama atribut | Deskripsi |
|---|---|
| service.name | Nilai atribut selalu spanner_api_frontend. |
| cloud.region | Region Google Cloud cloud frontend Spanner API yang menayangkan 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. |
| gcp.spanner.isolation_level | Nilai atribut adalah tingkat isolasi transaksi.
Nilai yang mungkin adalah SERIALIZABLE dan
REPEATABLE_READ. Untuk mengetahui informasi selengkapnya, lihat Ringkasan tingkat isolasi. |
Contoh trace
Trace menyeluruh memungkinkan Anda melihat detail berikut:
- Latensi antara aplikasi Anda dan Spanner. Anda dapat menghitung latensi jaringan untuk melihat apakah Anda memiliki masalah jaringan.
- Region cloud frontend Spanner API tempat permintaan aplikasi Anda ditayangkan. Anda dapat menggunakan ini untuk memeriksa panggilan lintas region antara aplikasi Anda 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.