Menggunakan rekaman aktivitas sisi klien

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

Ringkasan

Dengan mengaktifkan rekaman aktivitas di library klien Cloud Storage, Anda dapat memantau performa, menunjukkan masalah latensi, dan melakukan proses debug dengan cepat untuk permintaan Cloud Storage. Dengan rekaman aktivitas, Anda dapat melihat urutan permintaan yang telah selesai, sehingga memberikan tampilan mendetail tentang cara permintaan diterima, dikelola, dan direspons oleh Cloud Storage. Satu rekaman aktivitas 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

Pengumpulan dan propagasi data rekaman aktivitas memberikan manfaat berikut bagi aplikasi Anda:

  • Peningkatan visibilitas performa: karena data rekaman aktivitas 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 menentukan dengan tepat tempat terjadinya masalah, mempercepat analisis akar masalah, dan mengurangi waktu henti menggunakan informasi tentang setiap permintaan Cloud Storage yang disediakan dalam rekaman aktivitas.

Cara kerja rekaman aktivitas sisi klien

Bagian berikut memberikan gambaran mendetail tentang cara kerja pengumpulan rekaman aktivitas.

Cara kerja pengumpulan rekaman aktivitas dengan OpenTelemetry

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

  • Penyedia rekaman aktivitas: digunakan oleh library klien Cloud Storage, penyedia rekaman aktivitas bertanggung jawab untuk membuat dan mengelola sistem rekaman aktivitas, termasuk membuat dan mengelola rekaman aktivitas dan rentang di aplikasi Anda.

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

Cara kerja pengekspor rekaman aktivitas

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

Setelah penyedia rekaman aktivitas dan pengekspor rekaman aktivitas dikonfigurasi dan diaktifkan, Anda dapat melihat data rekaman aktivitas secara hampir real-time saat rekaman aktivitas dan rentang dihasilkan untuk setiap permintaan Cloud Storage.

Dengan menggunakan penjelajah Cloud Trace di konsolGoogle Cloud , Anda dapat melihat setiap rekaman aktivitas yang berisi hal berikut:

  • Tampilan tingkat tinggi permintaan Cloud Storage secara menyeluruh.

  • Beberapa rentang, setiap rentang merekam satu operasi yang diberi stempel waktu dalam permintaan Cloud Storage yang dilakukan.

Untuk membaca lebih lanjut rekaman aktivitas dan rentang, lihat dokumentasi OpenTelemetry tentang rekaman aktivitas dan rentang.

Harga

Data rekaman aktivitas dikenai biaya. Biaya dihitung berdasarkan jumlah rentang aktivitas yang diserap dan dipindai oleh Cloud Trace. Untuk mempelajari lebih lanjut rentang aktivitas yang dikenai biaya dan contoh harga, lihat Biaya Cloud Trace.

Sebelum memulai

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

  1. Instal library klien Cloud Storage.

  2. Siapkan autentikasi.

  3. Enable the Cloud Trace API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  4. Aktifkan Cloud Storage API.

    Mengaktifkan API

Peran yang diperlukan

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

Peran bawaan ini berisi izin cloudtrace.traces.patch , yang diperlukan untuk menulis rekaman aktivitas 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 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 rekaman aktivitas 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 untuk CMake atau Bazel.

  3. Buat instance klien Cloud Storage dengan mengaktifkan rekaman aktivitas OpenTelemetry.

    #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 eksportir pilihan Anda.

  3. Instal propagator Cloud Trace.

  4. Buat instance klien Cloud Storage dengan mengaktifkan rekaman aktivitas OpenTelemetry.

    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 secara selektif dalam pelacakan untuk klien penyimpanan Python:

    export ENABLE_GCS_PYTHON_CLIENT_OTEL_TRACES=True
  5. Konfigurasi eksportir rekaman aktivitas dan penyedia rekaman aktivitas.

    
    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 penjelajah Cloud Trace untuk melihat data rekaman aktivitas di konsol: Google Cloud

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

    Buka Trace explorer

    Anda juga dapat menemukan halaman ini dengan menggunakan kotak penelusuran.

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

    Panel Detail rekaman aktivitas menampilkan tabel rentang rekaman aktivitas.

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

    • Atribut: key-value pair yang memberikan informasi tambahan tentang rentang.

    • Log & peristiwa: entri log yang terkait dengan rentang.

    • Stack trace: stack trace yang terkait dengan rentang.

    • Metadata & Link: link ke layanan Google Cloud lain yang terkait dengan rentang.

Untuk mengetahui informasi selengkapnya tentang cara menggunakan penjelajah Cloud Trace, lihat Menemukan dan menjelajahi rekaman aktivitas.

Langkah berikutnya