¿Qué es el seguimiento distribuido?

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. 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.

En las arquitecturas monolíticas, nos hemos acostumbrado a depurar con pilas de llamadas. 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. 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?

Aquí entra en juego el seguimiento distribuido.

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. En Azure Monitor, se proporcionan dos experiencias para consumir datos de seguimiento distribuido. 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. 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.

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.

Cómo habilitar el seguimiento distribuido

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.

Habilitación mediante Application Insights a través de la instrumentación automática o SDK

Los SDK o agentes de Application Insights para .NET, .NET Core, Java, Node.js y JavaScript admiten el seguimiento distribuido de forma nativa. Las instrucciones para instalar y configurar cada SDK de Application Insights están disponibles a continuación:

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. La lista completa de las tecnologías compatibles está disponible en la documentación de la recopilación automática de dependencias.

Además, se puede realizar el seguimiento manual de cualquier tecnología con una llamada a TrackDependency en TelemetryClient.

Habilitación mediante OpenTelemetry

Application Insights admite ahora el seguimiento distribuido mediante OpenTelemetry. OpenTelemetry proporciona una instrumentación neutral del proveedor para enviar seguimientos, métricas y registros a Application Insights. Inicialmente, la comunidad de OpenTelemetry se hizo cargo del seguimiento distribuido. Las métricas y los registros siguen en curso. Una historia de observabilidad completa incluye los tres pilares, pero actualmente nuestras ofertas de versión preliminar del exportador basadas en OpenTelemetry de Azure Monitor para .NET, Python y JavaScript solo incluyen el seguimiento distribuido. Sin embargo, nuestra oferta de Azure Monitor basada en Java OpenTelemetry tiene disponibilidad general y es totalmente compatible.

Las páginas siguientes constan de una guía de cada lenguaje para habilitar y configurar las ofertas basadas en OpenTelemetry de Microsoft. Lo importante es que compartimos la funcionalidad y las limitaciones disponibles de cada oferta para que pueda determinar si OpenTelemetry es adecuado para su proyecto.

Habilitación mediante OpenCensus

Además de los SDK de Application Insights, Application Insights también admite el seguimiento distribuido mediante 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. También permite a la comunidad de código abierto habilitar el seguimiento distribuido con tecnologías conocidas como Redis, Memcached o MongoDB. Microsoft colabora en OpenCensus junto con varios otros asociados de supervisión y en la nube.

Python

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.

Pasos siguientes