Utilizzare le tracce lato client

Questa pagina descrive come attivare le tracce lato client con OpenTelemetry quando utilizzi le librerie client di Cloud Storage per interagire con Cloud Storage. Puoi raccogliere e visualizzare i dati traccia utilizzando le seguenti librerie client di Cloud Storage supportate:

Panoramica

L'attivazione delle tracce nelle librerie client di Cloud Storage ti consente di monitorare le prestazioni, individuare i problemi di latenza ed eseguire rapidamente il debug delle richieste di Cloud Storage. Le tracce ti consentono di visualizzare la sequenza di una richiesta completata, fornendo una visualizzazione dettagliata di come la richiesta è stata ricevuta, gestita e a cui è stata data risposta da Cloud Storage. Una singola traccia è composta da più span, ovvero record dettagliati con timestamp di ogni funzione o operazione eseguita dall'applicazione durante la richiesta di Cloud Storage.

Vantaggi

La raccolta e la propagazione dei dati traccia offre i seguenti vantaggi alla tua applicazione:

  • Maggiore visibilità sulle prestazioni: poiché i dati di traccia vengono generati in quasi tempo reale quando Cloud Storage completa ogni richiesta che effettui, puoi identificare rapidamente i colli di bottiglia delle prestazioni e rilevare i problemi di latenza.

  • Gestione degli errori: puoi individuare dove si verificano i problemi, accelerare l'analisi della causa principale e ridurre il tempo di riposo utilizzando le informazioni su ogni richiesta di Cloud Storage fornite in una traccia.

Come funzionano le tracce lato client

Le sezioni seguenti descrivono in dettaglio il funzionamento della raccolta delle tracce.

Come funziona la raccolta delle tracce con OpenTelemetry

Le librerie client di Cloud Storage supportano la raccolta dei dati di traccia utilizzando l'SDK OpenTelemetry per configurare i seguenti componenti necessari per raccogliere e propagare i dati di traccia:

  • Provider di traccia: utilizzato dalle librerie client di Cloud Storage, il provider di traccia è responsabile della creazione e della gestione del sistema di monitoraggio, inclusa la generazione e la gestione di tracce e intervalli nell'applicazione.

  • Esportatore di traccia: utilizzato dall'SDK OpenTelemetry, l'esportatore di traccia è responsabile dell'invio dei dati di traccia a una piattaforma di osservabilità di backend come Cloud Trace, dove puoi analizzare e visualizzare i dati di traccia. Per scoprire di più sull'esportatore di tracce, consulta Come funzionano gli esportatori di tracce.

Come funzionano gli esportatori di tracce

La configurazione delle tracce utilizzando l'SDK OpenTelemetry include la selezione di un backend di osservabilità per esportare i dati in un luogo in cui vengono analizzati, archiviati e visualizzati. Sebbene tu possa esportare i dati di tracciamento in qualsiasi backend di osservabilità di tua scelta, ti consigliamo di utilizzare Cloud Trace, a cui puoi accedere utilizzando la console Google Cloud e che fornisce l'integrazione con altri Google Cloud servizi.

Una volta configurati e attivati il provider di traccia e l'esportatore di traccia, puoi visualizzare i dati di traccia in tempo quasi reale man mano che le tracce e gli intervalli vengono generati per ogni richiesta di Cloud Storage.

Utilizzando Trace Explorer in Google Cloud Console, puoi visualizzare ogni traccia contenente quanto segue:

  • Una visualizzazione di alto livello di una richiesta Cloud Storage end-to-end.

  • Più intervalli, ognuno dei quali acquisisce una singola operazione con timestamp all'interno della richiesta Cloud Storage eseguita.

Per scoprire di più su tracce e span, consulta la documentazione di OpenTelemetry su tracce e span.

Prezzi

I dati traccianti sono a pagamento. Gli addebiti si basano sul numero di intervalli di traccia importati e scansionati da Cloud Trace. Per scoprire di più sugli intervalli di tracciabilità soggetti a pagamento e sugli esempi di prezzi, consulta Costi di Cloud Trace.

Prima di iniziare

Prima di poter raccogliere le tracce per l'utilizzo dell'API Cloud Storage, devi completare i seguenti passaggi:

  1. Installa la libreria client di Cloud Storage.

  2. Configura l'autenticazione.

  3. Enable the Cloud Trace API.

    Enable the API

  4. Attiva l'API Cloud Storage.

    Attiva l'API

Ruoli obbligatori

Per ottenere l'autorizzazione necessaria per scrivere le tracce in Cloud Trace, chiedi all'amministratore di concederti il ruolo IAM Agente Cloud Trace (roles/coudtrace.agent) nel progetto utilizzato dal cliente.

Questo ruolo predefinito contiene l'autorizzazione cloudtrace.traces.patch necessaria per scrivere le tracce in Cloud Trace.

Potresti anche ottenere queste autorizzazioni con i ruoli predefiniti oppure creare ruoli personalizzati per concedere autorizzazioni specifiche. Per istruzioni sulla concessione dei ruoli nei progetti, consulta Concedere o revocare un ruolo. Per ulteriori informazioni sul ruolo Agente di monitoraggio in Cloud, consulta la documentazione di Identity and Access Management (IAM).

Configurare il monitoraggio per l'applicazione

Segui le istruzioni riportate di seguito per configurare il monitoraggio e iniziare a raccogliere i dati delle tracce utilizzando la libreria client di Cloud Storage:

Java

  1. Installa le seguenti versioni della libreria client Java di Cloud Storage:

    • com.google.cloud:google-cloud-storage:2.47.0 o versioni successive

    • com.google.cloud:libraries-bom:26.53.0 o versioni successive

  2. Installa l'esportatore Cloud Trace per OpenTelemetry. Puoi anche utilizzare qualsiasi esportatore a tua scelta.

  3. Installa il propagatore Cloud Trace.

  4. Crea un'istanza del client Cloud Storage con le tracce OpenTelemetry attivate.

    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. Installa la libreria client di Python per Cloud Storage:

    pip install google-cloud-storage[tracing]>=2.18.0
  2. Installa l'esportatore e il propagatore di Cloud Trace. Puoi anche utilizzare qualsiasi esportatore a tua scelta.

    pip install opentelemetry-exporter-gcp-trace opentelemetry-propagator-gcp
  3. Installa la misurazione delle richieste OpenTelemetry per monitorare le richieste HTTP sottostanti.

    pip install opentelemetry-instrumentation-requests
  4. Imposta la variabile di ambiente per attivare in modo selettivo il monitoraggio per il client di archiviazione Python:

    export ENABLE_GCS_PYTHON_CLIENT_OTEL_TRACES=True
  5. Configura l'esportatore di tracce e il provider di tracce.

    
    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))
    

Visualizzare le tracce

Utilizza Esplora tracce di Cloud per visualizzare i dati delle tracce nella console Google Cloud:

  1. Nella console Google Cloud, vai alla pagina Esplora tracce.

    Vai a Trace Explorer

    Puoi trovare questa pagina anche utilizzando la barra di ricerca.

  2. Nella pagina Trace Explorer, fai clic su una traccia specifica nel grafico a dispersione per visualizzarne i dettagli.

    Il riquadro Dettagli su Trace mostra una tabella degli intervalli della traccia.

  3. (Facoltativo) Fai clic su una riga di intervallo per visualizzare informazioni dettagliate su un intervallo specifico, ad esempio le seguenti:

    • Attributi: coppie chiave-valore che forniscono informazioni aggiuntive sull'intervallo.

    • Log ed eventi: le voci di log associate all'intervallo.

    • Tracce dello stack: le tracce dello stack associate all'intervallo.

    • Metadati e link: link ad altri Google Cloud servizi associati all'intervallo.

Per ulteriori informazioni sull'utilizzo di Esplora tracce di Cloud, consulta Trovare ed esplorare le tracce.

Passaggi successivi