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.

Ti consigliamo di utilizzare un server Zipkin se la tua applicazione è instrumentata con Zipkin e non vuoi eseguire il tuo backend di traccia o vuoi accedere agli strumenti di analisi avanzata di Cloud Trace.

Questa pagina descrive diversi modi per configurare il server Zipkin:

Utilizzo di un'immagine container per configurare il server

È disponibile un'immagine container del raccoglitore Zipkin di Cloud Trace su GitHub. Questo repository contiene la definizione della build Docker e applica il supporto di Google Cloud all'immagine Docker Zipkin di base, oltre ai passaggi di configurazione dettagliati.

Puoi eseguire questa immagine sull'host 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 vengono inviate automaticamente a Cloud Trace.

Per la procedura di configurazione completa, vai al repository GitHub dell'immagine Docker di Zipkin.

Come descritto in questa pagina, devi anche configurare i tracer Zipkin.

Esecuzione del server all'esterno di Google Cloud

Se vuoi creare ed eseguire il raccoglitore all'esterno di Google Cloud, ad esempio su un server fisico on-premise, completa i seguenti passaggi:

Crea o seleziona un progetto

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

Crea un account di servizio

Per consentire al tuo servizio di eseguire l'autenticazione nell'Cloud Trace API:

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

Configura il firewall

Configura la configurazione di rete in modo da consentire il passaggio del traffico TCP sulla porta 9411 alla macchina su cui è in esecuzione il collector Zipkin.

Se le tue applicazioni sono ospitate al di fuori del firewall, tieni presente che il traffico dal tracer a Zipkin al collector non è criptato o autenticato. Connessioni tra il raccoglitore Cloud Trace Zipkin e il Cloud Trace API sono criptate e autenticate, così come le connessioni da cui provengono dalle librerie di strumentazione di Cloud Trace.

Configura il server con l'immagine del contenitore

Per ulteriori informazioni, consulta Utilizzare un'immagine contenitore.

Configurare i tracer di Zipkin

Segui le istruzioni nella Sezione Configura l'utilità di traccia Zipkin in questa pagina.

Modificare un server Zipkin esistente

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

Come configurare i tracer di Zipkin

Indipendentemente dal modo in cui ospiti Cloud Trace Zipkin Collector, devi configurare le tracce Zipkin per l'invio di dati.

Per fare riferimento al raccoglitore, utilizza il suo indirizzo IP interno, l'indirizzo IP esterno (se riceve tracce da applicazioni ospitate al di fuori di Google Cloud) o nome host. Ogni tracer Zipkin è configurato in modo diverso. Ad esempio, per indirizzare un tracer Brave a un collector con indirizzo IP 1.2.3.4, le seguenti righe devono essere aggiunte al codice di base 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. I sistemi di traccia Zipkin devono supportare la semantica corretta dell'ora e della durata di Zipkin. Per ulteriori informazioni, vai a Strumentazione di una biblioteca e scorri verso il basso fino alla sezione Timestamp e durata.

  2. I tracer Zipkin e le librerie di strumenti Cloud Trace non possono aggiungere span alle stesse tracce perché utilizzano formati diversi per la propagazione del contesto della traccia tra i servizi. Il risultato è che le tracce acquisite da una libreria non contengono intervalli servizi strumentati dall'altra libreria.

    Per questo motivo, consigliamo ai progetti che vogliono utilizzare Cloud Trace di utilizzare esclusivamente tracer compatibili con Zipkin insieme a Zipkin Collector o di utilizzare librerie di strumenti compatibili con Cloud Trace. Per ulteriori informazioni sulle librerie Cloud Trace, consulta Node.js, Java e Go.

    Ad esempio:

    Illustrazione delle limitazioni dell'intervallo.

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

D. Funzionerà come un server Zipkin completo?

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