Memantau performa dengan trace sisi klien
Untuk memantau dan men-debug permintaan Firestore secara menyeluruh, Anda dapat dan mengaktifkan trace di library klien Java. Pelacakan sisi klien dapat memberikan mendapatkan sinyal tentang performa yang dialami aplikasi, serta yang dapat membantu mengatasi masalah proses debug.
Rekaman aktivitas sisi klien, yang dikumpulkan dengan menjalankan RPC dari klien, berikan informasi berikut:
- Span dengan stempel waktu saat klien mengirim permintaan RPC dan saat klien menerima respons RPC, termasuk latensi yang jaringan dan sistem klien
- Atribut (pasangan nilai kunci) yang menampilkan informasi tentang klien dan konfigurasinya
- Log yang terkait dengan peristiwa utama dalam span
- Stack trace jika terjadi error di klien
OpenTelemetry
Rekaman aktivitas untuk library klien Java diinstrumentasikan menggunakan OpenTelemetry API. OpenTelemetry adalah framework kemampuan observasi open source berstandar industri. OpenTelemetry menawarkan berbagai alat seperti API instrumentasi dan SDK, kolektor, pengekspor khusus backend, dan opsi konfigurasi fleksibel seperti kontrol pengambilan sampel, batas rentang, dan banyak lagi.
Mengekspor rekaman aktivitas dengan pengekspor dan kolektor
Sebagai bagian dari konfigurasi, Anda bisa mengekspor rekaman aktivitas ke backend kemampuan observasi. Sebagian besar penyedia layanan kemampuan observasi menawarkan untuk Anda gunakan, seperti Cloud Trace.
Selain pengekspor, OpenTelemetry merekomendasikan untuk menyiapkan Kolektor. Kolektor memungkinkan layanan memindahkan data dengan cepat dan memungkinkan kolektor menangani seperti percobaan ulang, pengelompokan, dan enkripsi. Kolektor berlari bersama aplikasi Anda. Kolektor menerima pesan OTLP, memproses pesan tersebut, dan mengekspornya ke backend kemampuan observasi.
Batasan
Rekaman aktivitas sisi klien memiliki batasan berikut:
- Span trace tersedia untuk library klien Java.
- Library klien tidak menghasilkan span rekaman aktivitas untuk pemroses real-time.
Penagihan
Selain penggunaan Firestore, pelacakan sisi klien dapat menimbulkan tambahan.
Tidak ada biaya untuk mengumpulkan trace atau penggunaan OpenTelemetry Google Workspace for Education.
Penyerapan span trace ke backend kemampuan observasi Anda dapat dikenai biaya. Misalnya, jika menggunakan Cloud Trace sebagai backend, Anda ditagih sesuai dengan harga Cloud Trace. Jika Anda menggunakan penyedia layanan kemampuan observasi lain, cari tahu model penagihannya dan biaya terkait.
Untuk lebih memahami penagihan, mulailah dengan rasio pengambilan sampel rekaman aktivitas yang kecil (melacak sebagian kecil RPC) berdasarkan traffic Anda.
Sebelum memulai
Sebelum memulai:
Pastikan Anda menyiapkan akun layanan tempat aplikasi menulis rekaman aktivitas ke backend kemampuan observasi yang memiliki Peran Identity and Access Management:
Operasi rekaman aktivitas Peran IAM Membaca rekaman aktivitas roles/cloudtrace.user
Menulis rekaman aktivitas roles/cloudtrace.agent
Membaca/menulis rekaman aktivitas roles/cloudtrace.admin
Pastikan Trace API diaktifkan di project ini.
Mengonfigurasi rekaman aktivitas sisi klien
Bagian ini memberikan contoh konfigurasi untuk trace sisi klien. Anda dapat mengekspor ke Kolektor atau langsung ke backend kemampuan observasi. Anda juga memiliki opsi berikut untuk mengonfigurasi trace sisi klien:
- Anda dapat mengonfigurasi rekaman aktivitas dengan API OpenTelemetry. Ini membutuhkan kode perubahan pada aplikasi Anda. Lihat contoh berikut:
- Anda dapat mengonfigurasi trace tanpa perubahan kode menggunakan agen otomatis. Anda harus
tetapkan variabel lingkungan
FIRESTORE_ENABLE_TRACING=ON
. Anda juga perlu mengatur pengaturan konfigurasi lainnya seperti yang dijelaskan di Konfigurasi Agen. Lihat contoh berikut:
Mengekspor rekaman aktivitas ke Collector dengan API OpenTelemetry
Kode berikut mengonfigurasi library klien Java Firestore untuk mengekspor span dengan rasio sampling 10% ke OpenTelemetry Collector.
Java (Admin)
Resource resource = Resource
.getDefault().merge(Resource.builder().put(SERVICE_NAME, "My App").build());
OtlpGrpcSpanExporter otlpGrpcSpanExporter =
OtlpGrpcSpanExporter
.builder()
.setEndpoint("http://localhost:4317") // Replace with your OTLP endpoint
.build();
// Using a batch span processor
// You can also use other `BatchSpanProcessorBuilder` methods
// to further customize.
BatchSpanProcessor otlpGrpcSpanProcessor =
BatchSpanProcessor.builder(otlpGrpcSpanExporter).build();
// Export to a collector that is expecting OTLP using gRPC.
OpenTelemetry otel = OpenTelemetrySdk.builder()
.setTracerProvider(SdkTracerProvider.builder()
.setResource(resource)
.addSpanProcessor(otlpGrpcSpaaudit-loggingnProcessor)
.setSampler(Sampler.traceIdRatioBased(0.1))
.build());
Firestore firestore = FirestoreOptions
.newBuilder()
.setOpenTelemetryOptions(
FirestoreOpenTelemetryOptions.newBuilder()
.setTracingEnabled(true)
.setOpenTelemetry(otel)
.build())
.build().getService();
Mengekspor langsung ke backend kemampuan observasi dengan OpenTelemetry API
Kode berikut mengonfigurasi library klien Java untuk langsung mengekspor rekaman aktivitas
akan diperluas ke Cloud Trace dengan rasio pengambilan sampel trace sebesar 10%. Anda dapat menggunakan
penyedia layanan kemampuan observasi lainnya, pengekspor untuk langsung diekspor ke
backend. Jika backend kemampuan observasi Anda mendukung penyerapan OTLP,
Anda dapat menggunakan OpenTelemetry OtlpGrpcSpanExporter
untuk mengekspor ke backend Anda
daripada menggunakan pengekspor khusus.
Java (Admin)
// TraceExporter needed for this use case
import com.google.cloud.opentelemetry.trace.TraceExporter;
Resource resource = Resource
.getDefault().merge(Resource.builder().put(SERVICE_NAME, "My App").build());
SpanExporter gcpTraceExporter = TraceExporter.createWithDefaultConfiguration();
// Using a batch span processor
// You can also use other `BatchSpanProcessorBuilder` methods
// to further customize.
SpanProcessor gcpBatchSpanProcessor =
BatchSpanProcessor.builder(gcpTraceExporter).build();
// Export directly to Cloud Trace with 10% trace sampling ratio
OpenTelemetry otel = OpenTelemetrySdk.builder()
.setTracerProvider(SdkTracerProvider.builder()
.setResource(resource)
.addSpanProcessor(gcpBatchSpanProcessor)
.setSampler(Sampler.traceIdRatioBased(0.1))
.build());
Firestore firestore = FirestoreOptions
.newBuilder()
.setOpenTelemetryOptions(
FirestoreOpenTelemetryOptions.newBuilder()
.setTracingEnabled(true)
.setOpenTelemetry(otel)
.build())
.build().getService();
Mengekspor ke Kolektor dengan Agen Otomatis
Jalankan OpenTelemetry Collector Anda dengan penerima gRPC OTLP diaktifkan. Setel
pengekspor agen ke otlp
dan menentukan endpoint tempat agen seharusnya
mengekspor data. Contoh berikut menggunakan rasio sampling 10% dan mengirimkan
rekaman aktivitas ke Kolektor yang memproses port localhost 4317
.
Terminal
FIRESTORE_ENABLE_TRACING=ON \
java \
-javaagent:path/to/opentelemetry-javaagent.jar \
-Dotel.traces.exporter=otlp \
-Dotel.exporter.otlp.endpoint="http://localhost:4317" \
-Dotel.traces.sampler=traceidratio \
-Dotel.traces.sampler.arg=0.1 \
-Dotel.service.name="My App" \
-jar myapp.jar
Mengekspor langsung ke backend kemampuan observasi dengan Agen Otomatis
Selain menetapkan variabel lingkungan FIRESTORE_ENABLE_TRACING=ON
,
Anda perlu menambahkan ekstensi
agen OpenTelemetry Java ke
backend. Contoh berikut menggunakan ekstensi pengekspor Trace
dan rasio sampling trace 10%.
Terminal
FIRESTORE_ENABLE_TRACING=ON \
java \
-javaagent:path/to/opentelemetry-javaagent.jar \
-Dotel.javaagent.extensions=/path/to/exporter-auto-0.26.0-alpha-shaded.jar \
-Dotel.traces.exporter=google_cloud_trace \
-Dotel.traces.sampler=traceidratio \
-Dotel.traces.sampler.arg=0.1 \
Contoh rekaman aktivitas
Contoh berikut menunjukkan cara informasi rekaman aktivitas ditampilkan di Cloud Trace. Untuk informasi selengkapnya tentang kemungkinan atribut dan nilai, lihat Melacak atribut dan peristiwa span.
Contoh span trace
Contoh log peristiwa
Contoh nilai atribut
Contoh Stack Trace dan Peristiwa Pengecualian
Langkah selanjutnya
- Lihat referensi untuk Atribut dan peristiwa durasi trace
- Pelajari pemantauan sisi server