¿Qué es el seguimiento distribuido?What is Distributed Tracing?

La llegada de las modernas arquitecturas de microservicios y en la nube ha dado lugar a servicios simples que se pueden implementar de forma independiente y que pueden ayudar a reducir los costos al tiempo que aumentan la disponibilidad y el rendimiento.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. Pero aunque estos movimientos han hecho más fáciles de entender los servicios individuales como un todo, se han creado sistemas que en general son más difíciles de analizar y 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.

En las arquitecturas monolíticas, nos hemos acostumbrado a depurar con pilas de llamadas.In monolithic architectures, we've gotten used to debugging with call stacks. Las pilas de llamadas son excelentes herramientas para mostrar el flujo de ejecución (el método A llama al método B y este al método C), junto con detalles y parámetros sobre cada una de esas llamadas.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. Esto es fantástico para estructuras monolíticas o servicios que se ejecutan en un único proceso, pero ¿cómo se depura cuando la llamada se produce fuera de los límites de un proceso y no es simplemente una referencia en la pila 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?

Aquí entra en juego el seguimiento distribuido.That's where distributed tracing comes in.

El seguimiento distribuido es el equivalente de las pilas de llamadas para arquitecturas de microservicios y en la nube modernas, junto con un generador de perfiles de rendimiento simple.Distributed tracing is the equivalent of call stacks for modern cloud and microservices architectures, with the addition of a simplistic performance profiler thrown in. En Azure Monitor, se proporcionan dos experiencias para consumir datos de seguimiento distribuido.In Azure Monitor, we provide two experiences for consuming distributed trace data. La primera es la vista de diagnósticos de transacción, que es como una pila de llamadas con una dimensión de tiempo adicional.The first is our transaction diagnostics view, which is like a call stack with a time dimension added in. La vista de diagnósticos de transacción proporciona visibilidad sobre una sola transacción o solicitud y resulta útil para encontrar la causa raíz de problemas de confiabilidad y cuellos de botella de rendimiento por cada solicitud.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.

Azure Monitor ofrece también una vista de mapa de aplicación que agrega muchas transacciones para mostrar una vista topológica de cómo interactúan los sistemas y cuáles son las tasas promedio de rendimiento y de errores.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.

Cómo habilitar el seguimiento distribuidoHow to Enable Distributed Tracing

Habilitar el seguimiento distribuido de los servicios de una aplicación es tan simple como agregar el agente, el SDK o la biblioteca adecuados a cada servicio, en función del lenguaje en el que se implementó el servicio.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.

Habilitación mediante Application Insights a través de la instrumentación automática o SDKEnabling via Application Insights through auto-instrumentation or SDKs

Los SDK o agentes de Application Insights para .NET, .NET Core, Java, Node.js y JavaScript admiten el seguimiento distribuido de forma nativa.The Application Insights agents and/or SDKs for .NET, .NET Core, Java, Node.js, and JavaScript all support distributed tracing natively. Las instrucciones para instalar y configurar cada SDK de Application Insights están disponibles a continuación:Instructions for installing and configuring each Application Insights SDK are available below:

Con el SDK de Application Insights adecuado instalado y configurado, la información de seguimiento se recopila automáticamente para los marcos de trabajo, bibliotecas y tecnologías más populares mediante los auto-recopiladores de dependencias del 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. La lista completa de las tecnologías compatibles está disponible en la documentación de la recopilación automática de dependencias.The full list of supported technologies is available in the Dependency auto-collection documentation.

Además, se puede realizar el seguimiento manual de cualquier tecnología con una llamada a TrackDependency en TelemetryClient.Additionally, any technology can be tracked manually with a call to TrackDependency on the TelemetryClient.

Habilitación mediante OpenCensusEnable via OpenCensus

Además de los SDK de Application Insights, Application Insights también admite el seguimiento distribuido mediante OpenCensus.In addition to the Application Insights SDKs, Application Insights also supports distributed tracing through OpenCensus. OpenCensus es una distribución de bibliotecas de código abierto e independiente del proveedor que proporciona recopilación de métricas y seguimiento distribuido para los servicios.OpenCensus is an open source, vendor-agnostic, single distribution of libraries to provide metrics collection and distributed tracing for services. También permite a la comunidad de código abierto habilitar el seguimiento distribuido con tecnologías conocidas como Redis, Memcached o MongoDB.It also enables the open source community to enable distributed tracing with popular technologies like Redis, Memcached, or MongoDB. Microsoft colabora en OpenCensus junto con varios otros asociados de supervisión y en la nube.Microsoft collaborates on OpenCensus with several other monitoring and cloud partners.

PythonPython

El sitio web de OpenCensus mantiene la documentación de referencia de la API para Python y Go, así como diversas guías para el uso de OpenCensus.The OpenCensus website maintains API reference documentation for Python and Go, as well as various different guides for using OpenCensus.

Pasos siguientesNext steps