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.

Potresti voler utilizzare un server Zipkin se la tua applicazione instrumentato con Zipkin e non desideri eseguire il tuo backend di traccia o vuoi accedere agli strumenti di analisi avanzati di Cloud Trace.

In questa pagina vengono descritti i vari metodi di configurazione del 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 di build Docker e livelli il supporto di Google Cloud l'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 contenitore 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'intera procedura di configurazione, visita Repository GitHub per l'immagine Docker Zipkin.

Come descritto in questa pagina, devi inoltre configurare i rilevatori Zipkin.

Esecuzione del server all'esterno 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 i seguenti passaggi 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. 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 è necessario un account di fatturazione perché il raccoglitore non è in esecuzione su in 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 il nuovo account di servizio sia stato è stato concesso il ruolo di Editor di progetto in modo da poter scrivere dati nell'API Trace.
    2. Seleziona Fornisci nuova chiave privata e scegli JSON.
    3. Salva il file JSON delle credenziali in una directory della macchina che di eseguire il servizio di raccoglitore.

Configura il firewall

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

Se le tue applicazioni sono ospitate all'esterno del firewall, tieni presente che il traffico tracer-to-collector di Zipkin non è criptato né 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 saperne di più, consulta Utilizzare un'immagine container.

Configura utilità di traccia Zipkin

Segui le istruzioni nella sezione comune Configura i tracer Zipkin di questa pagina.

Modifica di 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 sul Repository GitHub per l'immagine Docker Zipkin.

Come configurare i rilevatori 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 utilità di traccia Zipkin è configurata in modo diverso: per Ad esempio, per puntare un rilevatore Brave verso un collettore con indirizzo IP 1.2.3.4, aggiungi 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. 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 utilizzare esclusivamente tracciatori compatibili con Zipkin insieme Raccogliere o utilizzare librerie di strumentazione compatibili con in Cloud Trace. Per ulteriori informazioni sulle librerie di Cloud Trace, consulta Node.js Java e Vai.

    Ad esempio:

    Illustrazione dei limiti degli intervalli.

    Le richieste effettuate all'applicazione web Node.js vengono tracciate con Zipkin libreria e inviato 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 dati solo in Cloud Trace.