Menggunakan rekaman aktivitas sisi klien

Halaman ini menjelaskan cara mengaktifkan trace sisi klien dengan OpenTelemetry saat Anda menggunakan library klien Cloud Storage untuk berinteraksi dengan Cloud Storage. Anda dapat mengumpulkan dan melihat data trace menggunakan library klien Cloud Storage yang didukung berikut:

Ringkasan

Dengan mengaktifkan trace di library klien Cloud Storage, Anda dapat memantau performa, menemukan masalah latensi, dan melakukan proses debug dengan cepat untuk permintaan Cloud Storage. Trace memungkinkan Anda melihat urutan permintaan yang telah selesai, sehingga memberikan tampilan mendetail tentang cara permintaan diterima, dikelola, dan direspons oleh Cloud Storage. Satu trace terdiri dari beberapa span, yang merupakan catatan mendetail dengan stempel waktu dari setiap fungsi atau operasi yang dilakukan aplikasi Anda selama permintaan Cloud Storage.

Manfaat

Mengumpulkan dan menyebarkan data trace memberikan manfaat berikut untuk aplikasi Anda:

  • Visibilitas performa yang ditingkatkan: karena data trace dibuat hampir secara real-time saat Cloud Storage menyelesaikan setiap permintaan yang Anda buat, Anda dapat dengan cepat mengidentifikasi bottleneck dalam performa dan mendeteksi masalah latensi.

  • Penanganan error: Anda dapat menemukan tempat masalah muncul, mempercepat analisis akar masalah, dan mengurangi waktu nonaktif menggunakan informasi tentang setiap permintaan Cloud Storage yang disediakan dalam trace.

Cara kerja trace sisi klien

Bagian berikut memberikan tampilan mendetail tentang cara kerja pengumpulan trace.

Cara kerja pengumpulan trace dengan OpenTelemetry

Library klien Cloud Storage mendukung pengumpulan data trace menggunakan OpenTelemetry SDK untuk menyiapkan komponen berikut yang diperlukan untuk mengumpulkan dan menyebarkan data trace:

  • Penyedia trace: digunakan oleh library klien Cloud Storage, penyedia trace bertanggung jawab untuk membuat dan mengelola sistem pelacakan, termasuk membuat dan mengelola trace dan span di aplikasi Anda.

  • Pengekspor trace: digunakan oleh OpenTelemetry SDK, pengekspor trace bertanggung jawab untuk mengirim data trace ke platform observabilitas backend seperti Cloud Trace, tempat Anda dapat menganalisis dan memvisualisasikan data trace. Untuk mempelajari pengekspor trace lebih lanjut, lihat Cara kerja pengekspor trace.

Cara kerja pengekspor trace

Mengonfigurasi trace menggunakan OpenTelemetry SDK mencakup pemilihan backend observabilitas untuk mengekspor data Anda ke tempat data tersebut dianalisis, disimpan, dan divisualisasikan. Meskipun Anda dapat mengekspor data trace ke backend observabilitas pilihan Anda, sebaiknya gunakan Cloud Trace, yang dapat diakses menggunakan konsol dan menyediakan integrasi dengan layanan lainnya. Google Cloud Google Cloud

Setelah penyedia trace dan pengekspor trace dikonfigurasi dan diaktifkan, Anda dapat melihat data trace hampir secara real-time saat trace dan span dibuat untuk setiap permintaan Cloud Storage.

Dengan menggunakan Cloud Trace Explorer di Google Cloud konsol, Anda dapat melihat setiap trace yang berisi hal berikut:

  • Tampilan tingkat tinggi permintaan Cloud Storage dari ujung ke ujung.

  • Beberapa span, dengan setiap span menangkap satu operasi dengan stempel waktu dalam permintaan Cloud Storage yang dilakukan.

Untuk membaca lebih lanjut tentang trace dan span, lihat dokumentasi OpenTelemetry tentang trace dan span.

Harga

Data trace dikenai biaya. Biaya didasarkan pada jumlah span trace yang diserap dan dipindai oleh Cloud Trace. Untuk mempelajari lebih lanjut span trace yang dikenai biaya dan contoh harga, lihat Biaya Cloud Trace.

Sebelum memulai

Sebelum dapat mengumpulkan trace untuk penggunaan Cloud Storage API, Anda harus menyelesaikan langkah-langkah berikut:

  1. Instal library klien Cloud Storage.

  2. Siapkan autentikasi.

  3. Aktifkan Cloud Trace API.

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (roles/serviceusage.serviceUsageAdmin), yang berisi izin serviceusage.services.enable. Pelajari cara memberikan peran.

    Mengaktifkan API

  4. Aktifkan Cloud Storage API.

    Mengaktifkan API

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan guna menulis trace ke Cloud Trace, minta administrator Anda untuk memberi Anda peran IAM Cloud Trace Agent (roles/cloudtrace.agent) di project yang digunakan oleh klien.

Peran bawaan ini berisi izin cloudtrace.traces.patch , yang diperlukan untuk menulis trace ke Cloud Trace.

Anda mungkin juga bisa mendapatkan izin ini dengan peran bawaan, atau Anda dapat membuat peran khusus untuk memberikan izin tertentu. Untuk mengetahui petunjuk tentang cara memberikan peran pada project, lihat Memberikan atau mencabut peran. Untuk mengetahui informasi selengkapnya tentang peran Cloud Trace Agent, lihat dokumentasi Identity and Access Management (IAM).

Mengonfigurasi pelacakan untuk aplikasi Anda

Gunakan petunjuk berikut untuk mengonfigurasi pelacakan dan mulai mengumpulkan data trace menggunakan library klien Cloud Storage:

C++

  1. Instal versi berikut:

    • Library klien C++ versi v2.16.0 atau yang lebih baru

    • C++ versi 14 atau yang lebih baru

  2. Untuk mengaktifkan instrumentasi pelacakan OpenTelemetry di library klien C++, perbarui konfigurasi sistem build Anda untuk CMake atau Bazel.

  3. Buat instance klien Cloud Storage dengan trace OpenTelemetry diaktifkan.

    #include "google/cloud/opentelemetry/configure_basic_tracing.h"
    #include "google/cloud/storage/client.h"
    #include "google/cloud/opentelemetry_options.h"
    #include <iostream>
    
    int main(int argc, char* argv[]) {
      if (argc != 3) {
        std::cerr << "Usage: " << argv[0] << " <bucket-name> <project-id>\n";
        return 1;
      }
      std::string const bucket_name = argv[1];
      std::string const project_id = argv[2];
    
      // Create aliases to make the code easier to read.
      namespace gc = ::google::cloud;
      namespace gcs = ::google::cloud::storage;
    
      // Instantiate a basic tracing configuration which exports traces to Cloud
      // Trace. By default, spans are sent in batches and always sampled.
      auto project = gc::Project(project_id);
      auto configuration = gc::otel::ConfigureBasicTracing(project);
    
      // Create a client with OpenTelemetry tracing enabled.
      auto options = gc::Options{}.set<gc::OpenTelemetryTracingOption>(true);
      auto client = gcs::Client(options);
    
      auto writer = client.WriteObject(bucket_name, "quickstart.txt");
      writer << "Hello World!";
      writer.Close();
      if (!writer.metadata()) {
        std::cerr << "Error creating object: " << writer.metadata().status()
                  << "\n";
        return 1;
      }
      std::cout << "Successfully created object: " << *writer.metadata() << "\n";
    
      auto reader = client.ReadObject(bucket_name, "quickstart.txt");
      if (!reader) {
        std::cerr << "Error reading object: " << reader.status() << "\n";
        return 1;
      }
    
      std::string contents{std::istreambuf_iterator<char>{reader}, {}};
      std::cout << contents << "\n";
    
      // The basic tracing configuration object goes out of scope. The collected
      // spans are flushed to Cloud Trace.
    
      return 0;
    }

Java

  1. Instal versi library klien Java Cloud Storage berikut:

    • com.google.cloud:google-cloud-storage:2.47.0 atau yang lebih baru

    • com.google.cloud:libraries-bom:26.53.0 atau yang lebih baru

  2. Instal pengekspor Cloud Trace untuk OpenTelemetry. Anda juga dapat menggunakan pengekspor pilihan Anda.

  3. Instal propagator Cloud Trace.

  4. Buat instance klien Cloud Storage dengan trace OpenTelemetry diaktifkan.

    public class QuickstartOpenTelemetrySample {
      public static void main(String... args) throws Exception {
        SpanExporter spanExporter = TraceExporter.createWithDefaultConfiguration();
        TextMapPropagator propagators =
            TextMapPropagator.composite(
                W3CTraceContextPropagator.getInstance(),
                new XCloudTraceContextPropagator(/* oneway= */ true));
    
        OpenTelemetrySdk openTelemetry =
            OpenTelemetrySdk.builder()
                .setPropagators(ContextPropagators.create(propagators))
                .setTracerProvider(
                    SdkTracerProvider.builder()
                        // Sample Rate is set to alwaysOn
                        // It is recommended to sample based on a ratio for standard use ie.
                        // .setSampler(Sampler.traceIdRatioBased(0.2)) // sample only 20% of trace ids
                        .setSampler(Sampler.alwaysOn())
                        .addSpanProcessor(BatchSpanProcessor.builder(spanExporter).build())
                        .build())
                .build();
        StorageOptions options = StorageOptions.newBuilder().setOpenTelemetry(openTelemetry).build();
        Storage storage = options.getService();
        System.out.println("Created an instance of storage with OpenTelemetry configured");
      }
    }

Python

  1. Instal library klien Python Cloud Storage:

    pip install google-cloud-storage[tracing]>=2.18.0
  2. Instal pengekspor dan propagator Cloud Trace. Anda juga dapat menggunakan pengekspor pilihan Anda.

    pip install opentelemetry-exporter-gcp-trace opentelemetry-propagator-gcp
  3. Instal instrumentasi permintaan OpenTelemetry untuk melacak permintaan HTTP yang mendasarinya.

    pip install opentelemetry-instrumentation-requests
  4. Tetapkan variabel lingkungan untuk memilih ikut serta dalam pelacakan untuk klien penyimpanan Python:

    export ENABLE_GCS_PYTHON_CLIENT_OTEL_TRACES=True
  5. Konfigurasikan pengekspor trace dan penyedia trace.

    
    from opentelemetry import trace
    from opentelemetry.exporter.cloud_trace import CloudTraceSpanExporter
    from opentelemetry.resourcedetector.gcp_resource_detector import (
        GoogleCloudResourceDetector,
    )
    from opentelemetry.sdk.trace import TracerProvider
    from opentelemetry.sdk.trace.export import BatchSpanProcessor
    from opentelemetry.sdk.trace.sampling import ALWAYS_ON
    # Optional: Enable traces emitted from the requests HTTP library.
    from opentelemetry.instrumentation.requests import RequestsInstrumentor
    
    from google.cloud import storage
    
    # The ID of your GCS bucket
    # bucket_name = "your-bucket-name"
    # The ID of your GCS object
    # blob_name = "your-object-name"
    # The contents to upload to the file
    # data = "The quick brown fox jumps over the lazy dog."
    
    # In this sample, we use Google Cloud Trace to export the OpenTelemetry
    # traces: https://cloud.google.com/trace/docs/setup/python-ot
    # Choose and configure the exporter for your environment.
    
    tracer_provider = TracerProvider(
        # Sampling is set to ALWAYS_ON.
        # It is recommended to sample based on a ratio to control trace ingestion volume,
        # for instance, sampler=TraceIdRatioBased(0.2)
        sampler=ALWAYS_ON,
        resource=GoogleCloudResourceDetector().detect(),
    )
    
    # Export to Google Cloud Trace.
    tracer_provider.add_span_processor(BatchSpanProcessor(CloudTraceSpanExporter()))
    trace.set_tracer_provider(tracer_provider)
    
    # Optional: Enable traces emitted from the requests HTTP library.
    RequestsInstrumentor().instrument(tracer_provider=tracer_provider)
    
    # Get the tracer and create a new root span.
    tracer = tracer_provider.get_tracer("My App")
    with tracer.start_as_current_span("trace-quickstart"):
        # Instantiate a storage client and perform a write and read workload.
        storage_client = storage.Client()
        bucket = storage_client.bucket(bucket_name)
        blob = bucket.blob(blob_name)
        blob.upload_from_string(data)
        print(f"{blob_name} uploaded to {bucket_name}.")
    
        blob.download_as_bytes()
        print("Downloaded storage object {} from bucket {}.".format(blob_name, bucket_name))
    

Melihat trace Anda

Gunakan Cloud Trace Explorer untuk melihat data trace Anda di Google Cloud konsol:

  1. Di Google Cloud konsol, buka halaman Trace explorer:

    Buka Trace explorer

    Anda juga dapat menemukan halaman ini menggunakan kotak penelusuran.

  2. Di halaman Trace explorer, klik trace tertentu dalam diagram pencar untuk melihat detail trace.

    Panel Trace details menampilkan tabel span trace.

  3. Opsional: klik baris span untuk melihat informasi mendetail tentang span tertentu seperti informasi berikut:

    • Attributes: key-value pair yang memberikan informasi tambahan tentang span.

    • Logs &events: entri log yang terkait dengan span.

    • Stack traces: stack trace yang terkait dengan span.

    • Metadata & Links: link ke layanan lainnya yang terkait dengan span. Google Cloud

Untuk mengetahui informasi selengkapnya tentang cara menggunakan Cloud Trace Explorer, lihat Menemukan dan menjelajahi trace.

Langkah berikutnya