OpenTelemetry con Azure Application Insights

Resumen

La observabilidad es uno de esos temas que cambia la forma en que entiendes tus aplicaciones en producción. Aquí aprenderás a integrar OpenTelemetry en una API de .NET y enviar toda la telemetría a Azure Application Insights, ideal para desarrolladores que están construyendo prácticas DevOps reales.

¿Qué es OpenTelemetry y por qué usarlo en tu API?

OpenTelemetry es el estándar actual de la industria para registrar logs, métricas y trazabilidad de una aplicación. Antes, cada servicio de monitoreo exigía su propio SDK; hoy, con un solo estándar puedes exportar la información a la herramienta que prefieras.

En este flujo, OpenTelemetry recolecta los datos dentro de tu API y, mediante un exportador, los envía a Application Insights, que ya está desplegado con Terraform en tu nube de Azure.

¿Qué hace OpenTelemetry exactamente? Captura métricas, logs y trazas de tu aplicación de forma estandarizada, sin atarte a un proveedor específico de monitoreo.

¿Qué paquetes NuGet necesitas instalar?

Ubícate dentro de la carpeta src/contactosAPI en tu terminal y agrega los paquetes uno por uno con dotnet add package [0:55]:

  • OpenTelemetry.Extensions.Hosting.
  • OpenTelemetry.Instrumentation.AspNetCore.
  • OpenTelemetry.Instrumentation.Http.
  • El paquete del exportador de Azure Monitor.

Cada comando descarga e integra el paquete a tu proyecto. Una vez listos los cuatro, tu API ya tiene las dependencias para emitir telemetría.

¿Cómo configurar la Connection String de Application Insights?

El siguiente paso vive en appsettings.json, archivo que debe estar listado en tu .gitignore para no exponer credenciales en el control de versiones [2:30]. Esta es una buena práctica que muchos olvidan al inicio.

Dentro de appsettings.json agregas una sección con AzureMonitor y su ConnectionString. Para obtener ese valor, entra al portal de Azure, abre el recurso de Application Insights y copia la Connection String que aparece en la vista principal.

¿Dónde encuentro la instrumentation key en Azure? En el portal de Azure, dentro del recurso Application Insights, en la sección Connection String. Cópiala completa y pégala en tu appsettings.json.

¿Qué cambios van en Program.cs?

En Program.cs se concentra la lógica de inicialización. Allí agregas las sentencias using correspondientes a los paquetes recién instalados y registras los servicios dentro de builder.Services [3:45].

El método clave es AddOpenTelemetry(), que se configura en dos bloques:

  • Métricas: capturan el funcionamiento general de la aplicación, como peticiones por segundo y latencia.
  • Trazabilidad: registra el recorrido de cada acción, desde que arranca un proceso hasta que aterriza en su punto final.

Un detalle importante es cómo se accede a la Connection String. En entorno local usas builder.Configuration["AzureMonitor:ConnectionString"], mientras que en la nube ese valor llega por medio de una variable de ambiente. Mantener ambos casos visibles te ayuda a entender la diferencia entre desarrollo y producción.

¿Cómo validar que la telemetría funciona?

Con todo configurado, vuelve a la terminal y ejecuta dotnet build. Si compila, sigue con dotnet run para levantar la API.

Si aparece un error de JSON inválido, revisa las llaves y comillas en appsettings.json. Suele pasar cuando se anidan objetos de más; basta con eliminar las llaves sobrantes y reorganizar la estructura al nivel correcto [5:55].

Una vez que el servicio corre sin errores, abre en el navegador localhost/swagger/index.html, prueba el endpoint weatherforecast y ejecuta una petición. Si responde correctamente, la telemetría ya está viajando hacia Application Insights.

¿Qué sigue después de probar en local?

El reto continúa fuera del entorno local. Estos son los pasos para cerrar el ciclo:

  1. Ejecuta docker build para empaquetar la API con los nuevos cambios.
  2. Corre docker run y verifica que el comportamiento sea idéntico al local.
  3. Sube los cambios a tu pull request y fusiona la rama de telemetría con tu proyecto principal.

Cuando ese flujo funcione, tendrás una API con observabilidad completa, lista para que cualquier evento, error o métrica quede registrado en Azure y puedas tomar decisiones basadas en datos reales.

¿Ya integraste OpenTelemetry en alguno de tus proyectos? Cuéntame en los comentarios cómo te fue y qué herramientas usas para visualizar tus métricas.