Habilitación de Azure Monitor OpenTelemetry para aplicaciones de .NET, Node.js, Python y Java

En este artículo se describe cómo habilitar y configurar la recopilación de datos basada en OpenTelemetry para potenciar las experiencias en Application Insights de Azure Monitor. Le mostramos cómo instalar la distribución de OpenTelemetry de Azure Monitor. La distribución de OpenTelemetry de Azure Monitor proporciona una distribución de OpenTelemetry que incluye compatibilidad con características específicas de Azure Monitor. La distribución habilita la telemetría automática mediante la inclusión de bibliotecas de instrumentación de OpenTelemetry para recopilar seguimientos, métricas, registros y excepciones, y permite recopilar telemetría personalizada. También puede usar la característica Live Metrics incluida en la distribución para supervisar y recopilar más telemetría de aplicaciones web activas en producción. Para más información sobre las ventajas de usar la distribución de OpenTelemetry de Azure Monitor, consulte ¿Por qué debo usar la "distribución de OpenTelemetry de Azure Monitor"? en preguntas más frecuentes sobre OpenTelemetry.

Para más información sobre la recopilación de datos mediante OpenTelemetry, consulte Conceptos básicos de recopilación de datos o Preguntas más frecuentes sobre OpenTelemetry.

Estado de la versión de OpenTelemetry

Las ofertas de OpenTelemetry están disponibles para aplicaciones .NET, Node.js, Python y Java.

Nota:

Para obtener un estado de versión de característica por característica, consulte las preguntas más frecuentes.

Introducción

Siga los pasos de esta sección para instrumentar la aplicación con OpenTelemetry.

Requisitos previos

Instalación de la biblioteca cliente

Instale el paquete NuGet Azure.Monitor.OpenTelemetry.Exporter más reciente:

dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore 

Habilitación de Azure Monitor Application Insights

Para habilitar Application Insights de Azure Monitor, realizará una modificación menor en la aplicación y establecerá el valor de "Cadena de conexión". La Cadena de conexión indica a la aplicación dónde enviar la telemetría que recopila la distribución y es única para usted.

Modifique su aplicación

Agregue UseAzureMonitor() al inicio de la aplicación, ubicado en la clase program.cs.

// Import the Azure.Monitor.OpenTelemetry.AspNetCore namespace.
using Azure.Monitor.OpenTelemetry.AspNetCore;

// Create a new WebApplicationBuilder instance.
var builder = WebApplication.CreateBuilder(args);

// Add OpenTelemetry and configure it to use Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the application.
var app = builder.Build();

// Run the application.
app.Run();

Copie la cadena de conexión de su recurso de Application Insights

Sugerencia

Si aún no dispone de uno, ahora es un buen momento para Crear un recurso de Application Insights. En momento le recomendamos crear un nuevo recurso de Application Insights en lugar de usar uno existente.

Para copiar su cadena de conexión única:

Captura de pantalla que muestra una cadena de conexión e información general de Application Insights.

  1. Vaya al panel de Información general del recurso de Application Insights.
  2. Busque su Cadena de conexión.
  3. Mantenga el puntero sobre la cadena de conexión y seleccione el icono Copiar al Portapapeles.

Pegue la cadena de conexión en su entorno

Para pegar la cadena de conexión, seleccione entre las opciones siguientes:

A. Establecer a través de la variable de entorno (recomendado)

Sustituya <Your Connection String> en el siguiente comando por su cadena de conexión única.

APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>

B. Establecer a través del archivo de configuración: solo Java (recomendado)

Cree un archivo de configuración denominado applicationinsights.json y colóquelo en el mismo directorio que applicationinsights-agent-3.5.1.jar, con el siguiente contenido:

{
  "connectionString": "<Your Connection String>"
}

Sustituya <Your Connection String> en el JSON anterior por su cadena de conexión única.

C. Establecer a través de código: solo ASP.NET Core, Node.js y Python (no recomendado)

Consulte Configuración de cadena de conexión para ver un ejemplo de configuración de la cadena de conexión mediante código.

Nota:

Si estableciera la cadena de conexión en más de un lugar, se adherirá a la siguiente precendencia:

  1. Código
  2. Variable de entorno
  3. Archivo de configuración

Confirmación de que los datos fluyen

Ejecute la aplicación y abra la pestaña Recurso de Application Insights en Azure Portal. Los datos pueden tardar unos minutos en aparecer en el portal.

Captura de pantalla de la pestaña

Application Insights ahora está habilitado para su aplicación. Todos los pasos siguientes son opcionales y permiten una mayor personalización.

Importante

Si tiene dos o más servicios que emiten datos de telemetría al mismo recurso de Application Insights, es obligatorio establecer nombres de rol en la nube para representarlos correctamente en el mapa de aplicación.

Como parte del uso de la instrumentación de Application Insights, se recopilan y envían datos de diagnóstico a Microsoft. Estos datos ayudan a ejecutar y mejorar Application Insights. Para obtener más información, consulte Statsbeat en Azure Application Insights.

Ejemplos

Las aplicaciones de ejemplo de OpenTelemetry de Azure Monitor están disponibles para todos los lenguajes admitidos.

Pasos siguientes

Preguntas más frecuentes

Esta sección proporciona respuestas a preguntas comunes.

¿Qué es OpenTelemetry?

Es un nuevo estándar de código abierto dirigido a la observabilidad. Obtenga más información en OpenTelemetry.

¿Por qué Microsoft Azure Monitor invierte en OpenTelemetry?

Microsoft se encuentra entre los mayores colaboradores de OpenTelemetry.

Las principales propuestas de valor de OpenTelemetry son que es independiente del proveedor y que proporciona API y SDK coherentes entre lenguajes.

Con el tiempo, creemos que OpenTelemetry permitirá a los clientes de Azure Monitor observar las aplicaciones escritas en lenguajes más allá de los lenguajes admitidos. También expande los tipos de datos que puede recopilar a través de un amplio conjunto de bibliotecas de instrumentación. Además, los SDK de OpenTelemetry tienden a ser más eficaces a escala que sus predecesores, los SDK de Application Insights.

Por último, OpenTelemetry se alinea con la estrategia de Microsoft para adoptar el código abierto.

¿Cuál es el estado de OpenTelemetry?

Ver el Estado de OpenTelemetry.

¿Qué es la "Distribución de OpenTelemetry de Azure Monitor"?

Puede considerarlo como un contenedor fino que agrupa todos los componentes de OpenTelemetry para una experiencia de primera clase en Azure. Este contenedor también se denomina una distribución en OpenTelemetry.

¿Por qué debería usar la "Distribución de OpenTelemetry de Azure Monitor"?

El uso de la Distribución de OpenTelemetry de Azure Monitor tiene varias ventajas sobre la OpenTelemetry nativa de la comunidad:

Siguiendo el espíritu de OpenTelemetry, diseñamos la distribución para que sea abierta y ampliable. Por ejemplo, puede agregar:

  • Un exportador de OpenTelemetry Protocol (OTLP) y enviar a un segundo destino simultáneamente
  • Otras bibliotecas de instrumentación no incluidas en la distribución

Dado que la distribución proporciona una distribución de OpenTelemetry, la distribución admite cualquier cosa compatible con OpenTelemetry. Por ejemplo, puede agregar más procesadores de telemetría, exportadores o bibliotecas de instrumentación, si OpenTelemetry los admite.

Nota:

La distribución establece el tomador de muestras en una toma personalizada de frecuencia fija para Application Insights. Puede cambiar esto a otro tomador de muestras, pero si lo hace, puede deshabilitar algunas de las funcionalidades incluidas de la distribución. Para más información sobre el tomador de muestras admitido, consulte la sección Habilitar muestreo de Configuración de OpenTelemetry de Azure Monitor.

En el caso de los lenguajes sin un exportador de OpenTelemetry independiente compatible, la distribución de OpenTelemetry de Azure Monitor es la única manera admitida actualmente para usar OpenTelemetry con Azure Monitor. En el caso de los idiomas con un exportador de OpenTelemetry independiente compatible, tiene la opción de usar la distribución de OpenTelemetry de Azure Monitor o el exportador de OpenTelemetry independiente adecuado en función del escenario de telemetría. Para más información, consulte ¿Cuándo debo usar el exportador de OpenTelemetry de Azure Monitor?.

¿Cómo puedo probar la Distribución de OpenTelemetry de Azure Monitor?

Consulte nuestros documentos de habilitación para .NET, Java, JavaScript (Node.js) y Python.

¿Debería usar OpenTelemetry o el SDK de Application Insights?

Se recomienda usar la distribución de OpenTelemetry, a menos que necesite una característica que solo esté disponible con soporte técnico formal en el SDK de Application Insights.

Adoptar OpenTelemetry ahora evita tener que migrar más adelante.

¿Cuándo debo usar el exportador OpenTelemetry de Azure Monitor?

Para ASP.NET Core, Java, Node.js y Python, se recomienda usar la distribución de OpenTelemetry de Azure Monitor. Es una línea de código para empezar.

Para todos los demás escenarios de .NET, como el ASP.NET clásico, las aplicaciones de consola, etc., se recomienda usar el exportador de OpenTelemetry de Azure Monitor de .NET: Azure.Monitor.OpenTelemetry.Exporter.

Para escenarios de telemetría de Python más complejos que requieren configuración avanzada, se recomienda usar el Exportador de OpenTelemetry de Azure Monitor de Python.

¿Cuál es el estado actual de las características de la Distribución de OpenTelemetry de Azure Monitor?

En el gráfico siguiente, se desglosa la compatibilidad de características de OpenTelemetry para cada lenguaje.

Característica .NET Node.js Python Java
Seguimiento distribuido
Métricas personalizadas
Métricas estándar (precisión afectada actualmente por el muestreo)
Muestreo de frecuencia fija
Almacenamiento sin conexión y reintentos automáticos
Informes de excepciones
Recopilación de registros ⚠️
Eventos personalizados ⚠️ ⚠️ ⚠️
Autenticación de Microsoft Entra
Live metrics
Detección del contexto de recursos para VM/VMSS y App Service
Detección del contexto de recursos para AKS y Functions
Filtrado de intervalos de pruebas de disponibilidad
Relleno automático del id. de usuario y el id. de usuario autenticado y la dirección IP del usuario
Invalidar o establecer manualmente el nombre de la operación, el id. de usuario o el id. de usuario autenticado
muestreo adaptable
Generador de perfiles ⚠️
Depurador de instantáneas

Clave

¿Se puede usar OpenTelemetry para exploradores web?

Sí, pero no se recomienda y Azure no lo admite. OpenTelemetry para Javascript está muy optimizado para Node.js. En su lugar, se recomienda usar el SDK de JavaScript para Application Insights.

¿Cuándo podemos esperar que el SDK de OpenTelemetry esté disponible para su uso en navegadores web?

El SDK web de OpenTelemetry no tiene una escala de tiempo de disponibilidad determinada. Es probable que falten varios años para que exista un SDK para navegadores que sea una alternativa viable al SDK de JavaScript Application Insights.

¿Puedo probar hoy OpenTelemetry en un explorador web?

El espacio aislado web de OpenTelemetry es una bifurcación diseñada para que OpenTelemetry funcione en un explorador. Todavía no es posible enviar telemetría a Application Insights. El SDK no define eventos de cliente generales.

¿Ejecuta Application Insights junto con agentes de la competencia como AppDynamics, DataDog y NewRelic compatibles?

No. Esta práctica no es algo que tengamos previsto probar o admitir, aunque nuestras distribuciones le permiten exportar a un punto de conexión OTLP junto con Azure Monitor simultáneamente.

¿Se pueden usar las características en vista previa (GB) en entornos de producción?

Esta opción no se recomienda. Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure.

¿Cuál es la diferencia entre la instrumentación manual y la automática?

Consulte la Introducción a OpenTelemetry.

¿Puedo usar OpenTelemetry-Collector?

Algunos clientes usan OpenTelemetry Collector como alternativa con agente, aunque Microsoft todavía no admite oficialmente un enfoque basado en agente para la supervisión de aplicaciones. Mientras tanto, la comunidad de código abierto contribuyó con un exportador de Azure Monitor de OpenTelemetry Collector que algunos clientes usan para enviar datos a Application Insights de Azure Monitor. Microsoft no admite esto.

¿Cuál es la diferencia entre OpenCensus y OpenTelemetry?

OpenCensus es el precursor de OpenTelemetry. Microsoft ayudó a juntar OpenTracing y OpenCensus para crear OpenTelemetry, un único estándar de observabilidad para el mundo. El SDK de Python recomendado para producción actual para Azure Monitor se basa en OpenCensus. Microsoft se ha comprometido a hacer que Azure Monitor se base en OpenTelemetry.

Solución de problemas

¿No funciona? Consulte la página de solución de problemas de ASP.NET Core.

Soporte técnico

Seleccione una pestaña para el idioma que prefiera para detectar las opciones de soporte técnico.

Comentarios de OpenTelemetry

Para proporcionar comentarios: