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
- ¹ ✅: OpenTelemetry está disponible para todos los clientes con soporte técnico oficial.
- ² ⚠️: OpenTelemetry está disponible en versión preliminar pública. Términos de uso complementarios para versiones preliminares de Microsoft Azure
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
- Una suscripción a Azure: cree una de forma gratuita
- Recurso de Application Insights: cree un recurso de Application Insights
- Aplicación de ASP.NET Core con una versión oficialmente compatible de .NET Core
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:
- Vaya al panel de Información general del recurso de Application Insights.
- Busque su Cadena de conexión.
- 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:
- Código
- Variable de entorno
- 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.
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:
- Reduce el esfuerzo de habilitación
- Compatible con Microsoft
- Incorpora características específicas de Azure como:
- Conserva los seguimientos con componentes de servicio mediante SDK de Application Insights
- Autenticación de Microsoft Entra
- Almacenamiento sin conexión y reintentos automáticos
- Statsbeat
- Métricas estándar de Application Insights
- Detección de metadatos de recursos para rellenar automáticamente el nombre del rol en la nube en Azure
- Live Metrics (futuro)
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
- ✅ Esta característica está disponible para todos los clientes con soporte técnico formal.
- ⚠ Esta característica está disponible como versión preliminar pública. Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure.
- ❌ Esta característica no está disponible o no es aplicable.
¿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.
- En caso de problemas de Soporte técnico de Azure, abra una incidencia de Soporte técnico de Azure.
- En caso de problemas de OpenTelemetry, póngase en contacto con la comunidad de .NET de OpenTelemetry directamente.
- Para obtener una lista de problemas abiertos relacionados con el exportador de Azure Monitor, consulte la página de problemas de GitHub.
Comentarios de OpenTelemetry
Para proporcionar comentarios:
- Rellene la encuesta de comentarios de los clientes de la comunidad de OpenTelemetry.
- Únase a la comunidad de usuarios pioneros de OpenTelemetry y cuente su experiencia a Microsoft.
- Interactúe con otros usuarios de Azure Monitor en Microsoft Tech Community.
- Realice una solicitud de característica en el foro de comentarios de Azure.
Pasos siguientes
- Para más información sobre cómo agregar y modificar OpenTelemetry de Azure Monitor, consulte Incorporación y modificación de OpenTelemetry de Azure Monitor.
- Para configurar aún más la distribución de OpenTelemetry, consulte Configuración de OpenTelemetry de Azure Monitor
- Para revisar el código fuente, consulte el repositorio de GitHub de Azure Monitor AspNetCore.
- Para instalar el paquete NuGet, buscar actualizaciones o consultar las notas de la versión, visite la página Paquete NuGet de Azure Monitor AspNetCore.
- Para familiarizarse con Azure Monitor y OpenTelemetry, consulte la aplicación de ejemplo de Azure Monitor.
- Para obtener más información sobre OpenTelemetry y su comunidad, visite el repositorio de GitHub de .NET para OpenTelemetry.
- Habilite la supervisión de usuarios web o de explorador para habilitar las experiencias de uso.