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 OpenTelemetry de Azure Monitor, consulte ¿Por qué debo usar la distribución OpenTelemetry de Azure Monitor?.
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.
- En la segunda pestaña de este artículo se tratan todos los escenarios de .NET, incluidos los ASP.NET clásicos, las aplicaciones de consola, Windows Forms (WinForms), etc.
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
Instalación de la biblioteca cliente
Instale el Azure.Monitor.OpenTelemetry.AspNetCore
paquete NuGet 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:
- 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.5.3.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:
- 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.
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
- Para más información sobre cómo agregar y modificar OpenTelemetry de Azure Monitor, consulte Agregar y modificar 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.
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 kits de desarrollo de software (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:
- Reduce el esfuerzo de habilitación
- Compatible con Microsoft
- Incorpora características específicas de Azure como:
- Muestreo compatible con SDK clásicos 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 y la Instancia de rol en la nube en varios entornos de Azure
- Live Metrics
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, incluidos los ASP.NET clásicos, las aplicaciones de consola, Windows Forms (WinForms), 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 | ✅ | ✅ | ✅ | ✅ |
Filtrado de métricas dinámicas | ❌ | ❌ | ❌ | ❌ |
Detección del contexto de recursos para VM/VMSS y App Service | ✅ | ❌ | ✅ | ✅ |
Detección del contexto de recursos para Azure Kubernetes Service (AKS) y Functions | ❌ | ❌ | ❌ | ✅ |
Eventos de pruebas de disponibilidad generados mediante la API de seguimiento de disponibilidad | ❌ | ❌ | ❌ | ✅ |
Filtrar solicitudes, dependencias, registros y excepciones por identificador de usuario anónimo y origen sintético | ❌ | ❌ | ❌ | ✅ |
Filtrar las dependencias, los registros y las excepciones por nombre de la operación | ❌ | ❌ | ❌ | ✅ |
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?
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?
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.
- 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.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de