Questa pagina è rivolta agli sviluppatori di applicazioni che vogliono raccogliere dati di Cloud Trace per le applicazioni Python utilizzando OpenTelemetry. OpenTelemetry è un framework di strumentazione indipendente dal fornitore che puoi usare per raccogliere dati di tracce e metriche. Per informazioni sulla strumentazione del tuo codice, consulta Strumentazione e osservabilità.
- Installare i pacchetti OpenTelemetry.
- Configura la tua applicazione per esportare gli intervalli in Cloud Trace.
- Configura la tua piattaforma.
Per informazioni sulla release, consulta le pagine seguenti:
Per i contenuti di riferimento di OpenTelemetry, vedi quanto segue:
Per i dettagli più recenti su OpenTelemetry per Python, insieme alla documentazione e agli esempi aggiuntivi, consulta OpenTelemetry.
Prima di iniziare
- Devi utilizzare Python 3.6 o versioni successive.
-
Nel pannello di navigazione della console Google Cloud, seleziona API e servizi, fai clic su Abilita API e servizi e poi abilita l'Cloud Trace API:
Se viene visualizzato API abilitata, significa che l'API è già abilitata. In caso contrario, fai clic sul pulsante Attiva.
Installare i pacchetti OpenTelemetry
Per installare i pacchetti OpenTelemetry richiesti, segui questi passaggi:
(Facoltativo) Esegui l'upgrade alla versione più recente di
pip
:pip install --upgrade pip
Installa i seguenti pacchetti OpenTelemetry utilizzando
pip
:pip install opentelemetry-api \ opentelemetry-sdk \ opentelemetry-exporter-gcp-trace
Importa pacchetti di tracce
Aggiorna l'applicazione per importare i pacchetti e le classi seguenti:
trace
CloudTraceSpanExporter
TracerProvider
BatchSpanProcessor
, un processore di intervalli di esportazione che invia intervalli utilizzando un processo in background.(Facoltativo) Se vuoi collegare più intervalli, importa il corso
Link
.
L'esempio seguente illustra queste istruzioni di importazione:
Configura l'esportazione di intervalli in Cloud Trace
Per inviare intervalli a Cloud Trace, modifica l'applicazione in modo da utilizzare l'utilità di esportazione CloudTraceSpanExporter
. L'esempio seguente illustra i passaggi richiesti:
Aggiungere attributi a un intervallo
Per aggiungere un attributo a un intervallo, chiama il metodo set_attribute
dell'intervallo.
Ad esempio, il seguente codice aggiunge più attributi all'intervallo denominato foo_with_attribute
:
Aggiungere eventi a un intervallo
Per aggiungere un evento a un intervallo, chiama il metodo add_event
dell'intervallo.
Ad esempio, il seguente codice aggiunge un evento
all'intervallo denominato foo_with_event
:
Intervalli di link
Per collegare due intervalli, importa la classe Link
e utilizza il campo links
nel metodo start_as_current_span
. Quando colleghi due sezioni, puoi includere attributi nel campo links
.
Il seguente codice illustra due diversi modi per collegare un intervallo all'intervallo denominato link_target
:
Applicazione Flask di esempio
La strumentazione Flask di OpenTelemetry è progettata per semplificare l'acquisizione dei contenuti delle tracce relativi alle richieste HTTP. Ciò significa che non devi aggiungere una strumentazione specifica alle tue route per queste richieste:
- Flask utilizza il propagatore configurato per estrarre il contesto di intervallo dalle richieste HTTP in entrata.
- Flask crea automaticamente intervalli con attributi che descrivono la richiesta e la risposta.
Per un esempio end-to-end utilizzando Flask e OpenTelemetry, vedi flask_e2e. Il file README di Git include informazioni su come installare, configurare ed eseguire l'esempio.
Questa sezione evidenzia i passaggi di configurazione specifici di Flask inclusi
nel file server.py
di esempio. Il file client, client.py
, utilizza la strumentazione Requests
per attivare il tracciamento delle richieste HTTP effettuate dalla libreria delle richieste.
Importazione e configurazione
Per utilizzare la strumentazione Flask di OpenTelemetry, devi importare
FlaskInstrumentor
.
Se vuoi assicurarti che gli intervalli creati da diversi prodotti Google Cloud siano associati alla stessa traccia, devi configurare il propagatore con il propagatore di Cloud Trace. Questo propagatore specifica l'utilizzo dell'intestazione X-Cloud-Trace-Context
. Se non configuri un propagatore, OpenTelemetry utilizza quello predefinito. In questo caso, gli intervalli creati da
diversi prodotti Google Cloud, come
Cloud Run e App Engine, sono in tracce separate.
L'esempio seguente illustra le istruzioni di importazione e configurazione necessarie e la configurazione del propagatore Cloud Trace:
Non è necessario aggiungere istruzioni specifiche per Flask quando configuri l'utilità di esportazione CloudTraceSpanExporter
; la configurazione mostrata in Configurare l'esportazione di intervalli in Cloud Trace è sufficiente.
Inizializza Flask
Configura FlaskInstrumentor
per la strumentazione dell'applicazione.
Il seguente esempio illustra come eseguire questo passaggio:
Configura la tua piattaforma
Puoi utilizzare Cloud Trace su Google Cloud e altre piattaforme.
In esecuzione su Google Cloud
Quando la tua applicazione è in esecuzione su Google Cloud, non è necessario fornire alla libreria client le credenziali di autenticazione sotto forma di account di servizio. Tuttavia, devi assicurarti che per la tua piattaforma Google Cloud sia abilitato l'ambito di accesso all'API Cloud Trace.
Per un elenco degli ambienti Google Cloud supportati, consulta la pagina relativa all'assistenza per gli ambienti.
Per le seguenti configurazioni, le impostazioni predefinite dell'ambito di accesso abilitano l'Cloud Trace API:
- Ambiente flessibile di App Engine
Ambiente standard di App Engine
Google Kubernetes Engine (GKE)
Compute Engine
Cloud Run
Se utilizzi ambiti di accesso personalizzati, devi assicurarti che l'ambito di accesso all'API Cloud Trace sia abilitato:
Per informazioni su come configurare gli ambiti di accesso per il tuo ambiente utilizzando la console Google Cloud, consulta Configurazione del progetto Google Cloud.
Per gli utenti
gcloud
, specifica gli ambiti di accesso utilizzando il flag--scopes
e includi l'ambito di accesso all'Cloud Trace APItrace.append
. Ad esempio, per creare un cluster GKE in cui è abilitata solo l'Cloud Trace API:gcloud container clusters create example-cluster-name --scopes=https://www.googleapis.com/auth/trace.append
Esecuzione in locale e altrove
Se la tua applicazione viene eseguita al di fuori di Google Cloud, devi fornire alla libreria client le credenziali di autenticazione sotto forma di account di servizio. L'account di servizio deve contenere il ruolo agente Cloud Trace. Per le istruzioni, vedi Creazione di un account di servizio.
Le librerie client di Google Cloud utilizzano le Credenziali predefinite dell'applicazione (ADC) per trovare le credenziali della tua applicazione.
Puoi fornire queste credenziali in uno dei tre modi seguenti:
Esegui
gcloud auth application-default login
Inserisci l'account di servizio in un percorso predefinito per il tuo sistema operativo. Di seguito sono elencati i percorsi predefiniti per Windows e Linux:
Windows:
%APPDATA%/gcloud/application_default_credentials.json
Linux:
$HOME/.config/gcloud/application_default_credentials.json
Imposta la variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
sul percorso al tuo account di servizio:
Linux/macOS
export GOOGLE_APPLICATION_CREDENTIALS=path-to-your-service-accounts-private-key
Windows
set GOOGLE_APPLICATION_CREDENTIALS=path-to-your-service-accounts-private-key
PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="path-to-your-service-accounts-private-key"
Visualizza tracce
Nel pannello di navigazione della console Google Cloud, seleziona Trace e poi Trace Explorer:
Risoluzione dei problemi
Per informazioni sulla risoluzione dei problemi relativi a Cloud Trace, vai alla pagina Risoluzione dei problemi.
Risorse
- https://opentelemetry.io/
- OpenTelemetry/opentelemetry-python Repository GitHub
- Repository GitHub di Google Cloud opentelemetry-operations-python.