Il tracciamento OpenTelemetry consente di identificare e tracciare la latenza di vari Operazioni con la libreria client di Pub/Sub, come batch e lease la gestione e il controllo dei flussi. La raccolta di queste informazioni può aiutarti a eseguire il debug della libreria client.
Ecco alcuni potenziali casi d'uso per il monitoraggio di OpenTelemetry:
- Il tuo servizio sta riscontrando una latenza di pubblicazione più elevata del normale.
- Stai riscontrando un numero elevato di riesecuzioni di messaggi.
- Una modifica alla funzione di callback del client dell'abbonato fa sì che l'elaborazione impieghi più tempo del solito.
Prima di iniziare
Prima di configurare OpenTelemetry, completa le seguenti attività:
- Configura Pub/Sub utilizzando una delle librerie client.
- Installa l'SDK OpenTelemetry e configurare un esportatore di tracce e un fornitore di strumenti di traccia.
- Abilita l'API Cloud Trace.
- Scopri come leggere le tracce di Cloud Observability.
Ruoli obbligatori
Per assicurarti che l'account di servizio disponga delle autorizzazioni necessarie per esportare le tracce in Cloud Trace, chiedi all'amministratore di concedere all'account di servizio i seguenti ruoli IAM nel progetto:
-
Tutti:
Agente Cloud Trace (
roles/cloudtrace.agent
)
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per esportare le tracce in Cloud Trace. Per vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per esportare le tracce in Cloud Trace sono necessarie le seguenti autorizzazioni:
-
Tutti:
cloudtrace.traces.patch
L'amministratore potrebbe anche essere in grado di fornire l'account di servizio queste autorizzazioni con ruoli personalizzati altri ruoli predefiniti.
Flusso di lavoro di monitoraggio di OpenTelemetry
Per configurare il tracciamento OpenTelemetry, utilizza Pub/Sub librerie client e l'SDK OpenTelemetry. Con l'SDK, devi configurare un un esportatore di tracce e un fornitore di strumenti di tracciabilità, prima di connetterti librerie Pub/Sub. In alcune librerie, la configurazione di un provider di traccia è facoltativo.
Esportatore di trace. L'SDK OpenTelemetry utilizza l'esportatore di tracce per determinare dove inviare le tracce.
Fornitore di tracker. Le librerie client Pub/Sub utilizzano il fornitore di tracer per creare tracce.
I passaggi riportati di seguito descrivono come configurare il monitoraggio:
- Creare un'istanza per un esportatore OpenTelemetry di Cloud Trace.
- Se necessario, crea un'istanza e registra un provider di tracker utilizzando l'SDK OpenTelemetery.
- Configura il client con l'opzione di tracciamento OpenTelemetry.
- Utilizzare le librerie client di Pub/Sub per pubblicare un messaggio.
Come funziona il monitoraggio
Per ogni messaggio pubblicato, la libreria client crea una nuova traccia. Questa traccia rappresenta l'intero ciclo di vita del messaggio, dal momento in cui quando il messaggio viene confermato. Una traccia incapsula informazioni come durata delle operazioni, intervalli padre e intervalli secondari e intervalli.
Una traccia è composta da un intervallo principale e da un intervallo figlio corrispondente. Questi rappresenta il lavoro svolto dalla libreria client durante l'elaborazione di un messaggio. Ogni traccia del messaggio contiene quanto segue:
- Per la pubblicazione. Controllo flusso, pianificazione delle chiavi di ordinamento, raggruppamento e la durata dell'RPC di pubblicazione.
- Per gli abbonamenti. Controllo della contemporaneità, pianificazione delle chiavi di ordinamento e la gestione dei leasing.
Per propagare le informazioni dal lato di pubblicazione a quello di sottoscrizione, le librerie client iniettano un attributo specifico di monitoraggio sul lato di pubblicazione. Il meccanismo di propagazione del contesto è abilitato solo quando viene attivato il tracciamento
ed è anteposto al prefisso googclient_
.
Pubblicare messaggi con il monitoraggio
Il seguente esempio di codice mostra come abilitare il tracciamento utilizzando il metodo la libreria client Pub/Sub e l'SDK OpenTelemetry. In questo esempio, i risultati del monitoraggio vengono esportati in Cloud Trace.
Considerazioni
Quando esegui l'inizializzazione del provider di tracer, configuri un rapporto di campionamento con l'SDK OpenTelemetry. Questo rapporto determina quante tracce deve campionare l'SDK. Una frequenza di campionamento più bassa può contribuire a ridurre i costi di fatturazione e impedire al tuo servizio di superare la quota degli intervalli di Cloud Trace.
Vai
C++
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python in Guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub per Python.
TypeScript
Node.js
Java
Ricevi messaggi con tracciamento
Vai
C++
Python
TypeScript
Node.js
Java
Analizzare una traccia
Le seguenti sezioni contengono informazioni dettagliate su come monitorare e analizzare una traccia nella console Google Cloud.
Considerazioni
- Quando pubblichi un batch di messaggi, l'intervallo RPC di pubblicazione viene acquisito in una traccia separata.
- Una RPC di pubblicazione ha più intervalli di origine, poiché più chiamate di creazione possono generano una RPC di pubblicazione quando vengono raggruppati insieme.
Gli intervalli in OpenTelemetry possono avere zero o uno span padre.
Gli elementi che rappresentano operazioni raggruppate, come un batch di pubblicazione, (che logicamente dovrebbe avere più elementi principali) non possono essere rappresentati utilizzando zero o un elemento principale.
Monitorare gli intervalli creati durante il ciclo di vita del messaggio
L'immagine seguente mostra un esempio di span creati in una singola traccia per un singolo messaggio.
Ogni intervallo può avere attributi aggiuntivi che forniscono informazioni aggiuntive, ad esempio la dimensione in byte del messaggio e le informazioni chiave per l'ordinamento.
Gli attributi di intervallo trasmettono metadati aggiuntivi, come la chiave di ordinamento del messaggio, l'ID messaggio e le dimensioni del messaggio.
Gli intervalli principali di pubblicazione e iscrizione sono aumentati con eventi di intervallo che corrisponde a quando viene emessa una chiamata di rete e quando viene completata.
Risolvere i problemi comuni
I seguenti problemi possono causare problemi con il tracciamento:
- L'account di servizio che utilizzi per esportare le tracce non dispone del ruolo
roles/cloudtrace.agent
richiesto. - La quota del numero massimo di intervalli importati in Cloud Trace è stata raggiunto.
- L'applicazione viene terminata senza chiamare lo svuotamento appropriato personalizzata.