Questo documento spiega come configurare il tracciamento distribuito per i bilanciatori del carico delle applicazioni utilizzando Cloud Trace. Crei una policy di telemetria che ha come target la regola di forwarding del bilanciatore del carico, quindi visualizzi le tracce risultanti in Cloud Trace.
Gli esempi in questo documento utilizzano un'applicazione di e-commerce con la seguente architettura:
- Un bilanciatore del carico delle applicazioni esterno globale che riceve il traffico dei clienti per uno storefront web.
- Un bilanciatore del carico delle applicazioni interno regionale che instrada le richieste di pagamento dallo storefront ai servizi interni di carrello, inventario e pagamento.
Per informazioni su come funziona il tracciamento distribuito, incluse le modalità di campionamento e la gestione delle intestazioni del contesto della traccia, consulta la panoramica del tracciamento distribuito.
Prima di iniziare
Abilita l'Cloud Trace API e l'API Network Services nel tuo progetto:
gcloud services enable \ cloudtrace.googleapis.com \ networkservices.googleapis.comAssicurati di aver eseguito il deployment di un bilanciatore del carico supportato. Per ulteriori informazioni, consulta le seguenti risorse:
Prendi nota del nome e dell'ambito della regola di forwarding del bilanciatore del carico. L'ambito della regola di forwarding dipende dal tipo di bilanciatore del carico:
- Regola di forwarding globale: utilizzata dai bilanciatori del carico delle applicazioni esterni globali e dai bilanciatori del carico delle applicazioni interni tra regioni.
- Regola di forwarding regionale: utilizzata dai bilanciatori del carico delle applicazioni esterni regionali e dai bilanciatori del carico delle applicazioni interni regionali.
Per elencare le regole di forwarding nel tuo progetto, utilizza il comando
gcloud compute forwarding-rules list:gcloud compute forwarding-rules list
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per configurare le policy di telemetria e visualizzare le tracce, chiedi all'amministratore di concederti i seguenti ruoli Identity and Access Management (IAM) nel progetto:
- Per creare, aggiornare o eliminare le policy di telemetria:
Compute Network Admin
(
roles/compute.networkAdmin) o Compute Admin (roles/compute.admin) - Per visualizzare le tracce nella console Google Cloud :
Utente Cloud Trace
(
roles/cloudtrace.user)
Per consentire al bilanciatore del carico di scrivere intervalli di traccia in Cloud Trace, concedi il ruolo Agente Cloud Trace (roles/cloudtrace.agent) nel tuo progetto ai seguenti service account:
- Agente di servizio Compute Engine:
service-PROJECT_NUMBER@compute-system. - Agente di servizio di sicurezza di rete:
service-PROJECT_NUMBER@gcp-sa-networksecurity. - I service account dei tuoi workload di backend, se i tuoi backend esportano i propri intervalli in Cloud Trace. Senza questo ruolo, Cloud Trace mostra solo l'intervallo del bilanciatore del carico e la traccia non contiene intervalli di backend.
Sostituisci PROJECT_NUMBER con il tuo numero di progettoGoogle Cloud .
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Configurazione della policy di telemetria
Puoi definire una policy di telemetria in un file YAML che utilizza il seguente formato:
name: "projects/PROJECT_ID/locations/LOCATION/telemetryPolicies/POLICY_NAME"
displayName: "DISPLAY_NAME"
telemetryTarget:
resources:
- "FORWARDING_RULE_URI"
tracingConfiguration:
samplingRate: SAMPLING_RATE
parentBasedSampling:
enabled: ENABLE_PARENT_BASED_SAMPLING
samplingRate: PARENT_BASED_SAMPLING_RATE
La tabella seguente descrive i campi di una policy di telemetria:
| Campo | Descrizione |
|---|---|
name |
Il nome della risorsa della policy di telemetria. Sostituisci quanto segue:
|
displayName |
Facoltativo. Un nome leggibile (DISPLAY_NAME) per la policy di telemetria. |
telemetryTarget.resources |
Un elenco dei nomi completi delle risorse (
|
tracingConfiguration.samplingRate |
La percentuale di richieste da tracciare (SAMPLING_RATE), specificata come valore compreso tra 0.0 (0%) e 1.0 (100%). Ad esempio, 0.01 campiona l'1% delle richieste. Il valore predefinito è 0.0. |
tracingConfiguration.parentBasedSampling.enabled |
Facoltativo. Se il bilanciatore del carico rispetta il flag sampled nell'intestazione W3C traceparent in entrata (ENABLE_PARENT_BASED_SAMPLING) è true o false. Il valore predefinito è false. Supportato solo sui bilanciatori del carico delle applicazioni interni. |
tracingConfiguration.parentBasedSampling.samplingRate |
Facoltativo. La proporzione di richieste campionate upstream da tracciare
(PARENT_BASED_SAMPLING_RATE),
specificata come valore compreso tra 0.0 e 1.0. Ad esempio, 1.0 traccia tutte le richieste che un client o un servizio upstream ha già campionato. |
Configura il tracciamento per un bilanciatore del carico esterno
Questo esempio configura il campionamento probabilistico sulla regola di forwarding di un bilanciatore del carico delle applicazioni esterno globale per uno storefront di e-commerce. Una frequenza di campionamento di 0.01 traccia l'1% delle richieste, acquisendo la latenza e gli errori perimetrali e mantenendo prevedibili i costi di importazione di Cloud Trace durante i periodi di traffico elevato.
Crea un file YAML denominato
storefront-tracing-policy.yaml:cat <<EOF > storefront-tracing-policy.yaml name: "projects/PROJECT_ID/locations/global/telemetryPolicies/storefront-tracing-policy" displayName: "Tracing policy for the storefront load balancer" telemetryTarget: resources: - "//compute.googleapis.com/projects/PROJECT_ID/global/forwardingRules/FORWARDING_RULE_NAME" tracingConfiguration: samplingRate: 0.01 EOFSostituisci quanto segue:
PROJECT_ID: l'ID del tuo progettoGoogle CloudFORWARDING_RULE_NAME: il nome della regola di forwarding globale del bilanciatore del carico
Per un bilanciatore del carico delle applicazioni esterno regionale, sostituisci
globalnel nome della policy con la regione della regola di forwarding e utilizza il formato della regola di forwarding regionale.Importa la policy di telemetria utilizzando il comando
gcloud beta network-services telemetry-policies import:gcloud beta network-services telemetry-policies import storefront-tracing-policy \ --source=storefront-tracing-policy.yaml \ --location=global
Configura il tracciamento per un bilanciatore del carico interno
Questo esempio configura un bilanciatore del carico delle applicazioni interno regionale per i servizi di pagamento e di checkout interni. La policy utilizza le seguenti impostazioni di campionamento:
- Un valore di riferimento
samplingRatedi0.01(1%) per le richieste che non comportano una decisione di campionamento upstream. - Campionamento basato sul livello principale con un
samplingRatedi1.0(100%), in modo che ogni richiesta di pagamento già campionata nello storefront o da qualsiasi servizio upstream venga tracciata nel bilanciatore del carico interno.
Per configurare la policy, segui questi passaggi:
Crea un file YAML denominato
checkout-tracing-policy.yaml:cat <<EOF > checkout-tracing-policy.yaml name: "projects/PROJECT_ID/locations/REGION/telemetryPolicies/checkout-tracing-policy" displayName: "Tracing policy for the internal checkout load balancer" telemetryTarget: resources: - "//compute.googleapis.com/projects/PROJECT_ID/regions/REGION/forwardingRules/FORWARDING_RULE_NAME" tracingConfiguration: samplingRate: 0.01 parentBasedSampling: enabled: true samplingRate: 1.0 EOFSostituisci quanto segue:
PROJECT_ID: l'ID del tuo progettoGoogle CloudREGION: la regione della regola di forwarding, ad esempious-central1FORWARDING_RULE_NAME: il nome della regola di forwarding regionale del bilanciatore del carico
Per un bilanciatore del carico delle applicazioni interno tra regioni, utilizza
globalcome località nel nome della policy e utilizza il formato della regola di forwarding globale.Importa la policy di telemetria:
gcloud beta network-services telemetry-policies import checkout-tracing-policy \ --source=checkout-tracing-policy.yaml \ --location=REGION
Verifica la policy di telemetria
Per verificare che la policy di telemetria esista e abbia come target le regole di forwarding corrette, utilizza il comando gcloud beta network-services telemetry-policies describe:
gcloud beta network-services telemetry-policies describe POLICY_NAME \
--location=LOCATION
Sostituisci quanto segue:
POLICY_NAME: il nome della policy di telemetriaLOCATION:globalo la regione della policy di telemetria
Per elencare tutte le policy di telemetria in una località, utilizza il comando gcloud beta network-services telemetry-policies list:
gcloud beta network-services telemetry-policies list \
--location=LOCATION
Aggiorna una policy di telemetria
Per modificare le impostazioni di campionamento o per applicare la stessa policy ad altre regole di forwarding, segui questi passaggi:
Modifica il file YAML della policy. Ad esempio, per applicare la policy della vetrina a più regole di forwarding globale, aggiungi ogni regola di forwarding all'elenco
telemetryTarget.resources:telemetryTarget: resources: - "//compute.googleapis.com/projects/PROJECT_ID/global/forwardingRules/storefront-https-fr" - "//compute.googleapis.com/projects/PROJECT_ID/global/forwardingRules/cart-https-fr"Importa la policy aggiornata:
gcloud beta network-services telemetry-policies import POLICY_NAME \ --source=POLICY_FILE \ --location=LOCATIONSostituisci
POLICY_FILEcon il percorso del file YAML della policy.
Visualizza tracce
Dopo aver configurato il tracciamento e inviato il traffico tramite il bilanciatore del carico, visualizza le tracce nella console Google Cloud :
Nella console Google Cloud , vai alla pagina Trace Explorer.
Selezionare il tuo progetto Google Cloud .
Nel campo Filtro, inserisci un filtro per trovare le tracce che vuoi esaminare. Ad esempio, l'ID attributo o la soglia di latenza.
Facoltativamente, per esplorare una traccia specifica, vai alla barra degli strumenti, fai clic su ID traccia e inserisci l'ID traccia.
Fai clic su una traccia per visualizzarne gli intervalli nelle visualizzazioni della sequenza temporale e del grafico.
Esamina l'intervallo del bilanciatore del carico per visualizzare dettagli come la durata totale e il backend che ha gestito la richiesta.
Per saperne di più sull'utilizzo di Trace Explorer, consulta Trova ed esplora le tracce.
Correlare le tracce con log e metriche
Puoi correlare gli intervalli di traccia del bilanciatore del carico con i log e le metriche delle richieste per isolare l'origine della latenza o degli errori.
Correlare le tracce con i log
Se abiliti il logging nel servizio di backend, il bilanciatore del carico aggiunge un campo trace a ogni voce di log delle richieste per una richiesta campionata. Il campo utilizza il seguente formato:
projects/PROJECT_ID/traces/TRACE_ID
Visualizza una traccia da una voce di log del bilanciatore del carico
Nella console Google Cloud , vai alla pagina Esplora log.
Espandi una voce di log del bilanciatore del carico.
Nel riepilogo della voce di log, fai clic sull'icona della traccia.
Seleziona Visualizza i dettagli della traccia.
La traccia si apre nella pagina Esplora tracce.
Visualizza i log del bilanciatore del carico da una traccia
Nella console Google Cloud , vai alla pagina Trace Explorer.
Fai clic su una traccia per aprire il riquadro Dettagli.
Fai clic su Visualizza log.
Vengono visualizzate le voci di log del bilanciatore del carico per la richiesta.
Correlare le tracce con le metriche
Confronta i picchi di latenza nelle metriche del bilanciatore del carico con le suddivisioni degli intervalli di traccia per determinare se la latenza ha origine nel bilanciatore del carico o nel backend. Puoi visualizzare ed eseguire query su queste metriche in Esplora metriche in Cloud Monitoring. Utilizza le seguenti metriche:
- Bilanciatore del carico delle applicazioni esterno globale:
loadbalancing.googleapis.com/https/total_latencieseloadbalancing.googleapis.com/https/backend_latencies - Bilanciatore del carico delle applicazioni esterno regionale:
loadbalancing.googleapis.com/https/external/regional/total_latencies - Bilanciatore del carico delle applicazioni interno:
loadbalancing.googleapis.com/https/internal/total_latencies
Disattiva il tracciamento
Per interrompere il tracciamento delle richieste per un bilanciatore del carico, esegui una delle seguenti operazioni:
- Rimuovi la regola di forwarding dall'elenco
telemetryTarget.resourcesdella policy, quindi importa la policy aggiornata. Elimina la policy di telemetria utilizzando il comando
gcloud beta network-services telemetry-policies delete:gcloud beta network-services telemetry-policies delete POLICY_NAME \ --location=LOCATION
Best practice
Quando configuri il tracciamento distribuito, tieni presente le seguenti best practice:
- Dimensiona le frequenze di campionamento in base al volume di traffico: per i workload di produzione con traffico elevato, utilizza un
samplingRatedi0.01(1%) o0.001(0,1%) per bilanciare l'osservabilità con i costi di importazione di Cloud Trace. - Utilizza il campionamento basato sull'elemento principale per le architetture multilivello: sui bilanciatori del carico delle applicazioni interni, attiva il campionamento basato sull'elemento principale in modo che le richieste campionate upstream vengano tracciate in ogni hop interno.
- Strumenta i backend: utilizza un SDK OpenTelemetry con il propagatore del contesto di Trace W3C nei servizi di backend in modo che gli intervalli di backend si uniscano alla traccia avviata dal bilanciatore del carico.
Risoluzione dei problemi
Questa sezione descrive i problemi comuni e le relative soluzioni.
Le tracce non vengono visualizzate in Cloud Trace
Se le tracce non vengono visualizzate in Cloud Trace, segui questi passaggi:
Assicurati che l'API Cloud Trace sia abilitata nel tuo progetto:
gcloud services enable cloudtrace.googleapis.com \ --project=PROJECT_IDVerifica che il ruolo Agente Cloud Trace (
roles/cloudtrace.agent) sia concesso ai service account elencati in Ruoli richiesti.Verifica che la policy di telemetria esista nella posizione corretta e che abbia come target la regola di forwarding corretta. Per saperne di più, consulta Verifica la policy di telemetria.
Controlla l'oggetto
samplingRateconfigurato. Se il volume di traffico o la frequenza di campionamento sono bassi, il bilanciatore del carico potrebbe non acquisire immediatamente le tracce. Per verificare che il tracciamento funzioni, imposta temporaneamentesamplingRatesu1.0, quindi ripristina la frequenza di produzione al termine del test.
Gli intervalli di Trace sono scollegati o incompleti
Se gli span del bilanciatore del carico vengono visualizzati come tracce root separate anziché come parte delle tracce della tua applicazione, segui questi passaggi:
Per i bilanciatori del carico delle applicazioni interni, verifica che il campionamento basato sull'elemento principale sia abilitato (
parentBasedSampling.enabled: true) nella policy di telemetria.Verifica che i service account dei workload client e di backend abbiano il ruolo Cloud Trace Agent (
roles/cloudtrace.agent), in modo che i relativi intervalli possano essere esportati in Cloud Trace.Verifica che le tue applicazioni utilizzino un SDK OpenTelemetry con la propagazione del contesto di Trace W3C abilitata, in modo che l'intestazione
traceparentvenga propagata oltre i confini del servizio. Per saperne di più, consulta la documentazione sulla propagazione del contesto di OpenTelemetry.
Passaggi successivi
- Panoramica del tracciamento distribuito
- Trova ed esplora le tracce
- Logging e monitoraggio del bilanciatore del carico delle applicazioni esterno globale
- Logging e monitoraggio del bilanciatore del carico delle applicazioni esterno regionale
- Logging e monitoraggio del bilanciatore del carico delle applicazioni interno