La observabilidad se ha convertido en un aspecto fundamental en las aplicaciones modernas, ayudándonos a comprender y mejorar continuamente nuestro rendimiento. OpenTelemetry representa hoy en día un estándar en la industria que permite facilitar y centralizar la telemetría mediante herramientas como Azure Application Insights.
¿Qué es OpenTelemetry y por qué usarlo?
OpenTelemetry es un estándar actual en la industria para gestionar logs y trazabilidad en aplicaciones. Su ventaja principal radica en evitar el uso de múltiples SDKs específicos de cada herramienta de monitoreo, simplificando considerablemente el proceso de observabilidad.
Utilizando OpenTelemetry, las métricas y la trazabilidad de la aplicación pueden enviarse fácilmente al servicio de monitoreo en la nube Azure Application Insights.
¿Cómo agregar OpenTelemetry en tu aplicación .NET?
Implementar OpenTelemetry en una aplicación .NET es simple y requiere seguir estos pasos prácticos:
1. Instalación de paquetes necesarios
Primero, es necesario instalar ciertos paquetes NuGet que permiten habilitar OpenTelemetry en tu proyecto. Mediante la terminal en la ubicación adecuada, debes instalar los siguientes paquetes:
OpenTelemetry.Extensions.Hosting
OpenTelemetry.Instrumentation.AspNetCore
OpenTelemetry.Instrumentation.Http
Estos paquetes brindan la capacidad de recolectar datos críticos relacionados con peticiones y rendimiento.
2. Configuración en appsettings.json
En este archivo, debes incluir la cadena de conexión (Connection String) que proporciona Azure Monitor. Esta cadena permite la comunicación directa con Azure Application Insights, obteniendo registros precisos y en tiempo real.
Además, es recomendable mantener appsettings.json fuera del control de versiones mediante el archivo .gitignore a fin de proteger información sensible.
3. Integración en program.cs
Luego, desde el archivo program.cs, introduces la lógica para estructurar y enviar las métricas y datos de trazabilidad hacia Azure Application Insights:
La configuración actualiza tus using, añadiendo las métricas y separa claramente cómo obtener la cadena de conexión para entornos locales (desde appsettings.json) y para entornos de nube (variables de entorno).
¿Cómo verificar la implementación?
Finalmente, para asegurarte de que todo está configurado correctamente:
Ejecuta .net build y verifica que no haya errores.
Corre la aplicación localmente con .net run.
Revisa su funcionamiento a través del panel local usando Swagger (localhost/swagger/index.html).
Si todo funciona correctamente, entonces procedes con la construcción y ejecución en Docker, y posteriormente realizas tu respectivo pull request.
Implementar OpenTelemetry optimiza significativamente la forma de monitorear aplicaciones, mostrando métricas claras para su análisis y mejora eficiente. ¿Has comenzado ya a utilizar OpenTelemetry en tus aplicaciones? ¡Comparte tu experiencia o dudas en los comentarios!
Incluir "/swagger/index.html" en el link de localhost es necesario porque Swagger es una herramienta que permite documentar y probar APIs de manera interactiva. Al acceder a esa URL, se carga la interfaz de usuario de Swagger, donde puedes ver todos los endpoints de tu API, realizar pruebas directamente desde el navegador y consultar la documentación generada automáticamente.
Swagger, ahora parte de OpenAPI, facilita la comprensión y el uso de tus APIs, ya que proporciona una representación visual de las operaciones disponibles, parámetros, y respuestas esperadas. Esto es especialmente útil para desarrolladores y equipos de trabajo que necesitan interactuar con el API sin necesidad de herramientas externas.
Un archivo YML (YAML) es un formato de serialización de datos que se utiliza comúnmente para archivos de configuración. YAML es legible para humanos y permite representar estructuras de datos complejas de una manera simple y clara. Se utiliza en diversas aplicaciones, incluyendo la configuración de herramientas DevOps, como Kubernetes y Ansible, y se puede usar para definir configuraciones en aplicaciones desarrolladas en .NET Core. En el contexto de DevOps, los archivos YML son esenciales para la automatización y orquestación.
Que es un archivo xml?
Siento que el maestro trata de hacernos la vida más dificil haciendo el proyecto con .NET
Entiendo que la idea es superar retos y agregar observabilidad en el proyecto que nosotros tengamos, pero vaya, creo que hubiera sido más facil hacer un proyecto en alguna tecnologia moderna y ahorrarnos un buen rato de investigación y prueba y error
🧠 ¿Qué es OpenTelemetry?
Es un estándar (y conjunto de herramientas) para recolectar información de lo que pasa dentro de una aplicación.
En otras palabras, sirve para obtener:
Logs → qué está pasando
Métricas → rendimiento (tiempo de respuesta, uso, etc.)
Trazas (traces) → recorrido de una petición dentro del sistema
👉 Lo importante:
No es una herramienta visual.
No es un dashboard.
Es la forma de recolectar y enviar datos.
💡 Ejemplo simple:
OpenTelemetry es como los sensores de un carro que miden velocidad, temperatura, etc.
📊 ¿Qué es Azure Application Insights?
Es una herramienta de monitoreo en la nube (de Microsoft Azure).
Sirve para:
Visualizar métricas
Analizar logs
Ver trazas
Detectar errores
Monitorear rendimiento
👉 Lo importante:
Aquí es donde ves y analizas los datos.
Tiene dashboards, gráficos, alertas, etc.
💡 Siguiendo el ejemplo:
Application Insights es como el tablero del carro, donde ves la información de los sensores.