Che cos'è la traccia distribuita?What is Distributed Tracing?

L'avvento di architetture di microservizi e cloud moderne ha contribuito alla nascita di semplici servizi distribuibili in modo indipendente che consentono di ridurre i costi aumentando la disponibilità e la velocità effettiva.The advent of modern cloud and microservices architectures has given rise to simple, independently deployable services that can help reduce costs while increasing availability and throughput. Ma sebbene questi cambiamenti abbiano semplificato la comprensione dei singoli servizi, hanno reso più complessi la comprensione e il debug dei sistemi globali.But while these movements have made individual services easier to understand as a whole, they’ve made overall systems more difficult to reason about and debug.

Nelle architetture monolitiche si esegue in genere il debug con gli stack di chiamate.In monolithic architectures, we’ve gotten used to debugging with call stacks. Gli stack di chiamate sono strumenti molto utili per la visualizzazione del flusso di esecuzione (il metodo A ha chiamato il metodo B che ha chiamato il metodo C), insieme a informazioni dettagliate e parametri per ognuna delle chiamate.Call stacks are brilliant tools for showing the flow of execution (Method A called Method B, which called Method C), along with details and parameters about each of those calls. Si tratta di uno strumento ideale per le architetture monolitiche o i servizi in esecuzione in un singolo processo, ma come eseguire il debug quando la chiamata passa attraverso un limite di processo e non è semplicemente un riferimento nello stack locale?This is great for monoliths or services running on a single process, but how do we debug when the call is across a process boundary, not simply a reference on the local stack?

In questo caso entra in gioco la traccia distribuita.That’s where distributed tracing comes in.

La traccia distribuita è l'equivalente degli stack di chiamate per le architetture di microservizi e cloud moderne, con l'aggiunta di un profiler di prestazioni semplicistico.Distributed tracing is the equivalent of call stacks for modern cloud and microservices architectures, with the addition of a simplistic performance profiler thrown in. Monitoraggio di Azure offre due esperienze per l'utilizzo dei dati di traccia distribuita.In Azure Monitor, we provide two experiences for consuming distributed trace data. La prima è costituita dalla vista della diagnostica delle transazioni, che è analoga a uno stack di chiamate con l'aggiunta di una dimensione temporale.The first is our transaction diagnostics view, which is like a call stack with a time dimension added in. La vista della diagnostica delle transazioni offre visibilità su una singola transazione o richiesta ed è utile per individuare la causa principale dei problemi di affidabilità e i colli di bottiglia delle prestazioni per ogni singola richiesta.The transaction diagnostics view provides visibility into one single transaction/request, and is helpful for finding the root cause of reliability issues and performance bottlenecks on a per request basis.

Monitoraggio di Azure offre inoltre una vista della mappa delle applicazioni, che aggrega numerose transazioni per mostrare una visualizzazione topologica dell'interazione tra i sistemi, con informazioni sulle prestazioni medie e sulla frequenza degli errori.Azure Monitor also offers an application map view which aggregates many transactions to show a topological view of how the systems interact, and what the average performance and error rates are.

Come abilitare la traccia distribuitaHow to Enable Distributed Tracing

Per abilitare la traccia distribuita tra i servizi in un'applicazione è sufficiente aggiungere la libreria o l'SDK appropriato a ogni servizio, in base al linguaggio con cui è stato implementato il servizio.Enabling distributed tracing across the services in an application is as simple as adding the proper SDK or library to each service, based on the language the service was implemented in.

Abilitazione tramite Application Insights SDKEnabling via Application Insights SDKs

Le versioni di Application Insights SDK per .NET, .NET Core, Java, Node.js e JavaScript supportano tutte la traccia distribuita in modo nativo.The Application Insights SDKs for .NET, .NET Core, Java, Node.js, and JavaScript all support distributed tracing natively. Le istruzioni per l'installazione e la configurazione di ogni versione di Application Insights SDK sono disponibili di seguito:Instructions for installing and configuring each Application Insights SDK are available below:

Dopo avere installato e configurato la versione corretta di Application Insights SDK, le informazioni di traccia vengono raccolte automaticamente per le librerie, le tecnologie e i framework più diffusi da agenti di raccolta delle dipendenze dell'SDK automatici.With the proper Application Insights SDK installed and configured, tracing information is automatically collected for popular frameworks, libraries, and technologies by SDK dependency auto-collectors. L'elenco completo delle tecnologie supportate è disponibile nella documentazione sulla raccolta automatica delle dipendenze.The full list of supported technologies is available in the Dependency auto-collection documentation.

È anche possibile tenere traccia manualmente di qualsiasi tecnologia con una chiamata a TrackDependency in TelemetryClient.Additionally, any technology can be tracked manually with a call to TrackDependency on the TelemetryClient.

Eseguire l'abilitazione tramite OpenCensusEnable via OpenCensus

Oltre che tramite Application Insights SDK, Application Insights supporta la traccia distribuita anche tramite OpenCensus.In addition to the Application Insights SDKs, Application Insights also supports distributed tracing through OpenCensus. OpenCensus è una singola distribuzione di librerie open source indipendente dal fornitore che fornisce raccolta di metriche e traccia distribuita per i servizi.OpenCensus is an open source, vendor-agnostic, single distribution of libraries to provide metrics collection and distributed tracing for services. Permette inoltre alla community open source di abilitare la traccia distribuita con tecnologie diffuse, come Redis, Memcached o MongoDB.It also enables the open source community to enable distributed tracing with popular technologies like Redis, Memcached, or MongoDB. Microsoft collabora al progetto OpenCensus con diversi altri partner cloud e che si occupano di monitoraggio.Microsoft collaborates on OpenCensus with several other monitoring and cloud partners.

Python (anteprima)Python (preview)

Il sito Web OpenCensus include la documentazione di riferimento delle API per Python e Go, oltre che molte guide diverse per l'uso di OpenCensus.The OpenCensus website maintains API reference documentation for Python and Go, as well as various different guides for using OpenCensus.

Passaggi successiviNext steps