O que é o Rastreamento distribuído?What is Distributed Tracing?

O advento das arquiteturas modernas de nuvem e de microserviço deu origem aos serviços simples e implantáveis de forma independente que podem ajudar a reduzir os custos enquanto aumentam a disponibilidade e a taxa de transferência.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. Mas embora esses movimentos tenham tornado serviços individuais mais fáceis de entender como um todo, eles tornaram os sistemas em geral mais difíceis de descobrir e depurar.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.

Em arquiteturas monolíticos, estamos acostumados a depurar com pilhas de chamadas.In monolithic architectures, we've gotten used to debugging with call stacks. Pilhas de chamadas são ferramentas incríveis que mostram o fluxo de execução (Método A que chama o Método B que chama o Método C), junto com detalhes e parâmetros sobre cada uma dessas chamadas.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. Isso é ótimo para monolitos ou serviços em execução em um único processo, mas como depuramos quando a chamada estiver em um limite de processo, não uma simples referência na pilha local?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?

É aí que entra o rastreamento distribuído.That's where distributed tracing comes in.

O rastreamento distribuído é o equivalente às pilhas de chamadas nas arquiteturas modernas de nuvem e microsserviços, com a adição de um criador de perfil de desempenho simplista.Distributed tracing is the equivalent of call stacks for modern cloud and microservices architectures, with the addition of a simplistic performance profiler thrown in. No Azure Monitor, fornecemos duas experiências para consumo dos dados de rastreamento distribuído.In Azure Monitor, we provide two experiences for consuming distributed trace data. A primeira é nossa exibição de diagnóstico de transação, que é como uma pilha de chamadas com uma dimensão de tempo adicionada.The first is our transaction diagnostics view, which is like a call stack with a time dimension added in. A exibição de diagnóstico de transação fornece visibilidade de uma única transação/solicitação, e é útil para encontrar a causa raiz de problemas de confiabilidade e gargalos de desempenho de cada solicitação.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.

O Azure Monitor também oferece uma exibição de mapa de aplicativo que agrega muitas transações para mostrar uma exibição topológica de como os sistemas interagem e quais são as taxas média de desempenho e erro.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.

Como habilitar o rastreamento distribuídoHow to Enable Distributed Tracing

Habilitar o rastreamento distribuído entre os serviços em um aplicativo é tão simples quanto adicionar o agente, o SDK ou a biblioteca apropriada a cada serviço, com base no idioma em que o serviço foi implementado.Enabling distributed tracing across the services in an application is as simple as adding the proper agent, SDK, or library to each service, based on the language the service was implemented in.

Habilitando via Application Insights por meio de instrumentação ou SDKs automáticosEnabling via Application Insights through auto-instrumentation or SDKs

Os agentes de Application Insights e/ou SDKs para .NET, .NET Core, Java, Node.js e JavaScript oferecem suporte ao rastreamento distribuído nativamente.The Application Insights agents and/or SDKs for .NET, .NET Core, Java, Node.js, and JavaScript all support distributed tracing natively. Veja abaixo as instruções para instalar e configurar cada SDK do Application Insights:Instructions for installing and configuring each Application Insights SDK are available below:

Com SDK adequado do Application Insights instalado e configurado, as informações de rastreamento são coletadas automaticamente para estruturas, bibliotecas e tecnologias populares pelos coletores automáticos de dependência do SDK.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. A lista completa de tecnologias com suporte está disponível na documentação de coleta automática de dependência.The full list of supported technologies is available in the Dependency auto-collection documentation.

Além disso, qualquer tecnologia pode ser rastreada manualmente com uma chamada para TrackDependency sobre o TelemetryClient.Additionally, any technology can be tracked manually with a call to TrackDependency on the TelemetryClient.

Habilitar por meio do OpenCensusEnable via OpenCensus

Além dos SDKs do Application Insights, o Application Insights também dá suporte ao rastreamento distribuído por meio do OpenCensus.In addition to the Application Insights SDKs, Application Insights also supports distributed tracing through OpenCensus. O OpenCensus é uma distribuição única de bibliotecas de software livre e independente de fornecedor, que tem como objetivo fornecer coleta de métricas e rastreamento distribuído para os serviços.OpenCensus is an open source, vendor-agnostic, single distribution of libraries to provide metrics collection and distributed tracing for services. Ele também permite que a comunidade de software livre habilite o rastreamento distribuído com tecnologias populares, como Redis, Memcached ou MongoDB.It also enables the open source community to enable distributed tracing with popular technologies like Redis, Memcached, or MongoDB. A Microsoft colabora no OpenCensus com vários outros parceiros de monitoramento e de nuvem.Microsoft collaborates on OpenCensus with several other monitoring and cloud partners.

PythonPython

O site do OpenCensus mantém a documentação de referência da API para Python e Go, assim como vários guias diferentes para usar o OpenCensus.The OpenCensus website maintains API reference documentation for Python and Go, as well as various different guides for using OpenCensus.

Próximas etapasNext steps