Panoramica del tracciamento distribuito

Il tracciamento distribuito per i bilanciatori del carico delle applicazioni offre visibilità end-to-end sulle richieste che viaggiano dai client, attraverso il bilanciatore del carico, ai servizi di backend.

Cloud Load Balancing si integra con Cloud Trace per generare intervalli di traccia per le richieste elaborate dal bilanciatore del carico. Poiché il bilanciatore del carico è il punto di ingresso per il traffico dell'applicazione, l'avvio e la propagazione del contesto della traccia nel bilanciatore del carico garantiscono la visibilità della diagnostica nell'intero percorso della richiesta. Puoi utilizzare queste tracce per identificare i colli di bottiglia della latenza, isolare gli hop con errori e risolvere gli errori nelle architetture multilivello.

Il bilanciatore del carico genera tracce conformi agli standard aperti (W3C Trace Context e OpenTelemetry). I servizi di backend instrumentati con OpenTelemetry possono continuare la traccia avviata dal bilanciatore del carico.

Vantaggi principali

Il tracciamento distribuito con Cloud Trace offre i seguenti vantaggi:

  • Visibilità delle richieste end-to-end: traccia il percorso di una richiesta attraverso i bilanciatori del carico delle applicazioni esterni e interni e i servizi di backend a cui instradano il traffico.
  • Osservabilità perimetrale: acquisisci gli intervalli di traccia nella regola di forwarding, prima che il bilanciatore del carico selezioni un backend, in modo da poter visualizzare gli errori e la latenza perimetrali che la strumentazione del backend non è in grado di rilevare.
  • Configurazione della telemetria disaccoppiata: definisci le impostazioni di tracciamento in risorse TelemetryPolicy autonome senza modificare la configurazione di routing del bilanciatore del carico.
  • Correlazione tra dati di telemetria: correla gli intervalli di traccia con i log delle richieste di Cloud Load Balancing e le metriche di Cloud Monitoring per individuare l'origine della latenza o degli errori.

Bilanciatori del carico supportati

La tabella seguente elenca i bilanciatori del carico che supportano il tracciamento distribuito e le modalità di campionamento supportate da ciascun bilanciatore del carico:

Bilanciatore del carico Schema di bilanciamento del carico Campionamento probabilistico Campionamento basato sul genitore
Bilanciatore del carico delle applicazioni esterno globale EXTERNAL_MANAGED
Bilanciatore del carico delle applicazioni esterno regionale EXTERNAL_MANAGED
Bilanciatore del carico delle applicazioni interno regionale INTERNAL_MANAGED
Bilanciatore del carico delle applicazioni interno tra regioni INTERNAL_MANAGED

I bilanciatori del carico delle applicazioni classici non supportano il tracciamento distribuito.

Come funziona il tracciamento distribuito

Per configurare il tracciamento distribuito, crea una risorsa TelemetryPolicy nell'API Network Services. Una policy di telemetria specifica quanto segue:

  • Destinazioni: le regole di forwarding dei bilanciatori del carico che vuoi tracciare.
  • Configurazione del tracciamento: le impostazioni di campionamento che determinano quali richieste vengono tracciate dal bilanciatore del carico.

Quando una richiesta arriva a una regola di forwarding che ha come target una policy di telemetria, il bilanciatore del carico decide se campionare la richiesta. Se la richiesta viene campionata, il bilanciatore del carico genera un intervallo di traccia, lo invia a Cloud Trace e propaga il contesto della traccia al backend nell'intestazione della richiesta W3C traceparent.

Collegamento della regola di forwarding

Le policy di telemetria hanno come target la regola di forwarding del bilanciatore del carico, che rappresenta il frontend del bilanciatore del carico. Collegando il tracciamento alla regola di forwarding, il bilanciatore del carico può tracciare tutto il traffico che entra in un indirizzo IP virtuale (VIP) e in una porta, incluse le richieste che non vanno a buon fine prima che il bilanciatore del carico selezioni un backend.

Le policy di telemetria hanno le seguenti caratteristiche:

  • Ciclo di vita indipendente: le policy di telemetria sono separate dai servizi di backend, dalle mappe URL e dai proxy di destinazione. Puoi creare, modificare o eliminare una policy di telemetria senza modificare il modo in cui il bilanciatore del carico instrada il traffico.
  • Riutilizzabile nei frontend: una singola policy di telemetria può avere come target più regole di forwarding, in modo da poter applicare impostazioni di tracciamento coerenti a più frontend dei bilanciatori del carico.
  • Con ambito della località: crea una policy di telemetria nella località global per scegliere come target le regole di forwarding globali, ad esempio quelle utilizzate dai bilanciatori del carico delle applicazioni esterni globali e dai bilanciatori del carico delle applicazioni interni tra regioni. Crea una policy di telemetria in una regione per scegliere come target le regole di forwarding regionali in quella regione, ad esempio quelle utilizzate dai bilanciatori del carico delle applicazioni esterni regionali e dai bilanciatori del carico delle applicazioni interni regionali.

Modalità di campionamento

Il tracciamento distribuito supporta le seguenti modalità di campionamento. Per saperne di più sulle modalità di campionamento supportate da ciascun bilanciatore del carico, consulta Bilanciatori del carico supportati in questo documento.

  • Campionamento probabilistico: il bilanciatore del carico campiona una percentuale fissa di richieste, che imposti nel campo samplingRate. Ad esempio, un valore di 0.01 campiona l'1% delle richieste. Il campionamento probabilistico è supportato su tutti i bilanciatori del carico supportati.
  • Campionamento basato sull'elemento principale: il bilanciatore del carico rispetta la decisione di campionamento nell'intestazione traceparent in entrata da un client o servizio upstream. Puoi configurare il campionamento basato sull'elemento principale nel campo parentBasedSampling. Il campionamento basato sull'elemento principale è supportato solo sui bilanciatori del carico delle applicazioni interni.

    Quando attivi il campionamento basato sull'elemento principale, il bilanciatore del carico gestisce le richieste come segue:

    • Se l'intestazione traceparent in entrata ha il flag sampled impostato, il bilanciatore del carico campiona la richiesta alla frequenza specificata nel campo parentBasedSampling.samplingRate. Ad esempio, imposta questo campo su 1.0 per tracciare tutte le richieste già campionate da un servizio upstream.
    • Se l'intestazione traceparent in entrata non ha il flag di campionamento impostato, il bilanciatore del carico non campiona la richiesta. Questo comportamento rispetta la decisione upstream e segue la specifica OpenTelemetry, che impedisce la visualizzazione di tracce disconnesse in Cloud Trace.
    • Se la richiesta non include un'intestazione traceparent, il bilanciatore del carico applica la samplingRate di base.

Gestione dell'Trace del contesto della traccia

Il bilanciatore del carico gestisce l'intestazione W3C traceparent come segue:

  • Il tracciamento non è abilitato o la richiesta non è campionata: il bilanciatore del carico inoltra l'intestazione traceparent in entrata al backend senza modifiche.
  • La richiesta viene campionata e non include un'intestazione traceparent: il bilanciatore del carico genera un nuovo ID traccia e un nuovo ID intervallo e imposta i flag di traccia su 03 (casuale e campionato).
  • La richiesta viene campionata e include un'intestazione traceparent: il bilanciatore del carico conserva l'ID traccia in entrata e il flag casuale, genera un nuovo ID intervallo e imposta il flag di campionamento.

I servizi di backend che utilizzano un SDK OpenTelemetry con il propagatore del contesto della traccia W3C leggono automaticamente l'intestazione traceparent e continuano la traccia. Per saperne di più, consulta Contesto della traccia.

Casi d'uso comuni

Questa sezione descrive gli scenari comuni per il tracciamento distribuito.

Monitora l'edge della vetrina virtuale

Un negozio di e-commerce utilizza un bilanciatore del carico delle applicazioni esterno globale per ricevere il traffico dei clienti. Per monitorare la latenza e gli errori perimetrali, come le risposte 404 e gli errori TLS, devi collegare una policy di telemetria con campionamento probabilistico alla regola di forwarding dello storefront. Una frequenza di campionamento bassa, ad esempio 0.01 (1%), mantiene prevedibili i costi di importazione di Cloud Trace durante gli eventi di picco del traffico.

Mantieni la continuità delle tracce nei servizi di pagamento

Le richieste di pagamento passano dallo storefront, tramite un bilanciatore del carico delle applicazioni interno, ai servizi interni di carrello, inventario e pagamento. Per assicurarti che le richieste di pagamento campionate nello storefront vengano tracciate in ogni hop interno, attiva il campionamento basato sull'elemento principale sul bilanciatore del carico interno con un parentBasedSampling.samplingRate di 1.0. Il traffico interno di routine che non comporta una decisione di campionamento upstream viene campionato in base alla baseline samplingRate.

Isola i colli di bottiglia della latenza

Quando la latenza del pagamento aumenta o si verifica un picco di errori 5xx, confronti gli intervalli del bilanciatore del carico in Cloud Trace con i log delle richieste e le metriche di latenza del bilanciatore del carico. Questo confronto ti aiuta a determinare se il problema ha origine sul perimetro del bilanciatore del carico, in un hop del bilanciatore del carico interno o in un servizio di backend.

Prezzi

Il bilanciatore del carico non addebita costi per la generazione di intervalli di traccia. Tuttavia, Cloud Trace addebita l'importazione degli intervalli di traccia in base ai prezzi di Cloud Trace.

Per gestire i costi di importazione per i workload di produzione con traffico elevato, consigliamo un valore samplingRate di 0.01 (1%) o 0.001 (0,1%).

Limitazioni

Durante l'anteprima, il tracciamento distribuito per i bilanciatori del carico delle applicazioni presenta le seguenti limitazioni:

  • Il campionamento basato sull'elemento principale non è supportato sui bilanciatori del carico delle applicazioni esterni.
  • Gli attributi di intervallo personalizzati non sono supportati.
  • Non puoi configurare il tracciamento distribuito utilizzando l'API Gateway di Google Kubernetes Engine o Terraform.
  • Una singola policy di telemetria può avere come target fino a 50 risorse.

Tracciamento distribuito per Agent Gateway

Se utilizzi Agent Gateway per gestire il traffico degli agenti AI, consulta Monitora il traffico tramite Agent Gateway per informazioni sul monitoraggio del traffico degli agenti.

Passaggi successivi