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 recopilará automáticamente seguimientos, métricas, registros y excepciones en la aplicación y sus dependencias. 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.

Lenguaje Estado de la versión
.NET (exportador) ✅ ¹
Java ✅ ¹
Node.js ✅ ¹
Python ✅ ¹
ASP.NET Core ⚠️ ²

Notas al pie

Nota

Para obtener un estado de versión de característica por característica, consulte las preguntas más frecuentes. La distribución de ASP.NET Core se somete a pruebas de estabilidad adicionales antes de la disponibilidad general. Puede usar .NET Exporter si necesita una solución OpenTelemetry totalmente compatible para la aplicación de ASP.NET Core.

Introducción

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

Requisitos previos

Sugerencia

No se recomienda usar el SDK o la API OTel Community con la distribución OTel de Azure Monitor, ya que las carga automáticamente como dependencias.

Instalación de la biblioteca cliente

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

dotnet add package --prerelease 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 su aplicación. Dependiendo de su versión de .NET, estará en su clase startup.cs o 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 the OpenTelemetry NuGet package to the application's services and configure OpenTelemetry 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:

Screenshot that shows Application Insights overview and connection string.

  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.4.18.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 establece la cadena de conexión en más de un lugar, se adhiere 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.

Screenshot of the Application Insights Overview tab with server requests and server response time highlighted.

Ahora ha habilitado Application Insights para la 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.

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?

Consulte la matriz de cumplimiento de especificaciones 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.

¿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, hemos diseñado la distribución para que sea abierta y ampliable. Por ejemplo, puede agregar:

  • Un exportador OTLP y enviar a un segundo destino simultáneamente
  • Bibliotecas de instrumentación de la comunidad más allá de lo que se incluye con el paquete

¿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?

Depende. Tenga en cuenta que la Distribución de OpenTelemetry de Azure Monitor es todavía una " Versión preliminar ", y no tiene las mismas características que los SDK de Application Insights.

¿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 Svc
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?

Todavía no se ha determinado la escala de tiempo de disponibilidad del SDK de la web OpenTelemetry. 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 tiene actualmente eventos de cliente generales definidos.

¿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 compilaciones en versión preliminar en entornos de producción?

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

¿Puedo usar el Exportador de Azure Monitor como componente independiente?

Sí, entendemos que algunos clientes quieran usar instrumentos con un "enfoque fragmentario". Sin embargo, la distribución proporciona una manera más sencilla de empezar a trabajar con la mejor experiencia en 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 han empezado a usar 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 ha contribuido con un exportador de Azure Monitor de OpenTelemetry-Collector que algunos clientes usan para enviar datos a Application Insights de Azure Monitor.

Tenemos previsto admitir un enfoque basado en agente en el futuro, pero los detalles y la escala de tiempo aún no están disponibles. Nuestro objetivo es proporcionar una ruta de acceso para cualquier lenguaje compatible con OpenTelemetry para enviar a Azure Monitor mediante el protocolo OpenTelemetry (OTLP). Este enfoque les permite a los clientes observar las aplicaciones escritas en lenguajes más allá de los lenguajes admitidos.

¿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. Finalmente, todos los SDK de Azure Monitor se basarán en OpenTelemetry.

Solucionar 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:

Pasos siguientes