Utilizzo di Cloud Trace con Zipkin

In questa pagina viene descritto come utilizzare un server Zipkin per ricevere tracce dai client Zipkin e inoltrarle a Cloud Trace per l'analisi.

È consigliabile utilizzare un server Zipkin se la tua applicazione è integrata con Zipkin e non vuoi eseguire il backend di traccia oppure vuoi accedere agli strumenti di analisi avanzata di Cloud Trace.

In questa pagina vengono descritti diversi modi per configurare il server Zipkin:

Utilizzo di un'immagine container per configurare il server

Un'immagine container del raccoglitore Zipkin di Cloud Trace è disponibile su GitHub. Questo repository contiene la definizione della build Docker e posiziona il supporto di Google Cloud sull'immagine Docker di Zipkin di base, oltre a passaggi di configurazione dettagliati.

Puoi eseguire questa immagine sull'host del container che preferisci, incluso Google Kubernetes Engine.

Per eseguire l'immagine:

$ docker run -d -p 9411:9411 \
-e STORAGE_TYPE=stackdriver \
-e GOOGLE_APPLICATION_CREDENTIALS=/root/.gcp/credentials.json \
-e STACKDRIVER_PROJECT_ID=your_project \
-v $HOME/.gcp:/root/.gcp:ro \
openzipkin/zipkin-gcp

Se esegui questo container in Google Cloud, ad esempio su un'istanza Compute Engine o un cluster Google Kubernetes Engine, le credenziali predefinite dell'ambiente vengono acquisite automaticamente e le tracce vengono inviate automaticamente a Cloud Trace.

Per l'intero processo di configurazione, consulta il repository GitHub per l'immagine Docker di Zipkin.

Come descritto in questa pagina, devi anche configurare l'utilità di traccia Zipkin.

Esecuzione del server al di fuori di Google Cloud

Se vuoi creare ed eseguire il raccoglitore al di fuori di Google Cloud, ad esempio su un server fisico in esecuzione on-premise, completa questi passaggi:

Crea o seleziona un progetto

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

Non è necessario un account di fatturazione perché il raccoglitore non è in esecuzione su Google Cloud.

Crea un account di servizio

Per consentire l'autenticazione del servizio nell'Cloud Trace API:

  1. Crea un account di servizio.
    1. Assicurati che al nuovo account di servizio sia stato concesso il ruolo di editor di progetto in modo che possa scrivere dati nell'API Trace.
    2. Seleziona Fornisci nuova chiave privata e scegli JSON.
    3. Salva il file JSON delle credenziali in una directory sulla macchina che eseguirà il servizio di raccolta.

Configura il firewall

Configura la tua configurazione di rete in modo da consentire al traffico TCP sulla porta 9411 di passare alla macchina che esegue il raccoglitore Zipkin.

Se le tue applicazioni sono ospitate all'esterno del firewall, tieni presente che il traffico da tracer a collector di Zipkin non è criptato né autenticato. Le connessioni tra il raccoglitore Cloud Trace Zipkin e l'Cloud Trace API sono criptate e autenticate, così come le connessioni provenienti dalle librerie di strumentazione di Cloud Trace.

Configura il server con l'immagine container

Per ulteriori informazioni, consulta la sezione Utilizzo di un'immagine container.

Configura l'utilità di traccia Zipkin

Segui le istruzioni nella sezione Configurare l'utilità di traccia Zipkin più comune in questa pagina.

Modifica di un server Zipkin esistente

Il progetto Zipkin gestisce le istruzioni su come utilizzare Cloud Trace come destinazione di archiviazione per un server Zipkin esistente. Queste istruzioni sono disponibili nel repository GitHub per l'immagine Docker di Zipkin.

Come configurare l'utilità di traccia Zipkin

Indipendentemente da come ospiti il raccoglitore Cloud Trace Zipkin, devi configurare l'utilità di traccia Zipkin per l'invio dei dati.

Per fare riferimento al raccoglitore, utilizzane l'indirizzo IP interno, l'indirizzo IP esterno (se riceve tracce da applicazioni ospitate al di fuori di Google Cloud) o il nome host. Ogni utilità di traccia Zipkin è configurata in modo diverso: ad esempio, per indirizzare un'utilità di traccia Brave a un raccoglitore con l'indirizzo IP 1.2.3.4, è necessario aggiungere le seguenti righe al codebase Java:

    Reporter reporter = AsyncReporter.builder(OkHttpSender.create("1.2.3.4:9411/api/v1/spans")).build();
    Brave brave = Brave.Builder("example").reporter(reporter).build()

Domande frequenti

D: Quali sono le limitazioni?

Questa release presenta due limitazioni note:

  1. L'utilità di traccia Zipkin deve supportare la semantica dell'ora e della durata Zipkin corretta. Per saperne di più, vai a Strumentazione di una libreria e scorri verso il basso fino alla sezione Timestamp e durata.

  2. L'utilità di traccia Zipkin e le librerie di strumentazione di Cloud Trace non possono aggiungere intervalli alle stesse tracce perché utilizzano formati diversi per propagare il contesto della traccia tra i servizi. Il risultato è che le tracce acquisite da una libreria non contengono intervalli per i servizi instrumentati dall'altra libreria.

    Per questo motivo, consigliamo che i progetti che vogliano utilizzare Cloud Trace utilizzino esclusivamente strumenti di traccia compatibili con Zipkin insieme a Zipkin Collector oppure librerie di strumentazione compatibili con Cloud Trace. Per ulteriori informazioni sulle librerie di Cloud Trace, consulta Node.js, Java e Go.

    Ad esempio:

    Illustrazione dei limiti di intervallo.

    Le richieste effettuate all'applicazione web Node.js vengono tracciate con la libreria Zipkin e inviate a Cloud Trace. Tuttavia, queste tracce non contengono intervalli generati dall'applicazione API ASP.NET. Inoltre, le tracce acquisite dalla libreria Zipkin non contengono intervalli per le chiamate RPC effettuate dall'applicazione API APS.NET al suo database MySQL.

D: Funzionerà come server Zipkin completo?

No, questa funzionalità scrive solo i dati in Cloud Trace.