Observabilidad en .NET: la diferencia entre saber que falló y saber por qué

Monitorear te dice que el servicio está caído. Observar te dice que fue una consulta sin índice que se disparó tras el despliegue del martes. Aquí empieza el cambio.

Observabilidad · .NET

Son las 10:15 de la mañana. Tu monitoreo dispara una alerta: «API de pedidos: tiempo de respuesta mayor a 3 segundos». El equipo se conecta, mira el CPU (normal), mira la memoria (normal), reinicia el servicio y todo vuelve a la normalidad. Se cierra el ticket.

Tres días después vuelve a pasar. Y otra vez. Nadie sabe por qué.

Esa es exactamente la frontera entre monitorear y observar. El monitoreo responde a preguntas que ya sabías formular: ¿está arriba?, ¿cuánto CPU usa?, ¿responde el endpoint de salud? La observabilidad responde a la pregunta que no anticipaste: ¿por qué esta petición específica, de este cliente, a esta hora, tardó 3.4 segundos?

La idea en una línea

La diferencia entre monitorear y observar no es filosófica. Es la diferencia entre resolver en cuatro minutos o en cuatro horas.

Los tres pilares, contados con un pedido real

Imagina una petición POST /api/pedidos que atraviesa tu API, valida inventario, cobra con un proveedor externo y encola un correo. Cada pilar de la observabilidad te cuenta una parte distinta de esa historia.

1

Métricas · ¿qué tan bien va, en general?

Números agregados en el tiempo. Baratos de almacenar, perfectos para tableros y alertas, incapaces de explicar un caso individual.

Te dice

«El 4.2% de los pedidos falló en la última hora, contra un 0.3% habitual.»

2

Trazas · ¿por dónde pasó y dónde se fue el tiempo?

El recorrido completo de una petición, con el tiempo consumido en cada tramo. Es el pilar que más rápido convierte una investigación de horas en una de minutos.

Te dice

«De los 3.4 segundos, 3.1 se fueron esperando al proveedor de pagos, no en tu código.»

3

Logs · ¿qué pasó exactamente en ese punto?

El detalle fino. Con logging estructurado y correlación dejan de ser un archivo de texto que nadie lee y se convierten en una base de datos consultable.

Te dice

«El proveedor devolvió el código 429 —demasiadas peticiones— a las 10:14:52 para el comercio 8841.»

Ninguno de los tres sustituye a los otros. Las métricas te dicen que algo pasa, las trazas te dicen dónde, y los logs te dicen qué.

Por qué .NET está hoy en un momento ideal

Durante años, instrumentar una aplicación .NET significaba atarse a una herramienta comercial concreta. Eso cambió. OpenTelemetry es hoy un estándar abierto, soportado nativamente en .NET a través de System.Diagnostics.Activity y System.Diagnostics.Metrics, y respaldado prácticamente por toda la industria.

Instrumentas una vez

Si mañana cambias de plataforma de observabilidad, cambias el exportador, no el código.

Gran parte es automática

ASP.NET Core, HttpClient, Entity Framework y los clientes SQL ya emiten información: solo hay que recogerla.

No exige reescribir

Se agrega a una aplicación existente, en producción, sin tocar la lógica de negocio.

Arranque de minutos

Un puñado de paquetes NuGet y unas veinte líneas en Program.cs bastan para ver trazas de extremo a extremo.

Program.cs · instrumentación mínima
builder.Services.AddOpenTelemetry()
    .ConfigureResource(r => r.AddService("api-pedidos"))
    .WithTracing(t => t
        .AddAspNetCoreInstrumentation()      // peticiones entrantes
        .AddHttpClientInstrumentation()      // llamadas salientes
        .AddSqlClientInstrumentation()       // consultas a base de datos
        .AddOtlpExporter())
    .WithMetrics(m => m
        .AddAspNetCoreInstrumentation()
        .AddRuntimeInstrumentation()         // GC, hilos, memoria
        .AddOtlpExporter());

Ese bloque es, honestamente, el mejor retorno de inversión disponible hoy en un proyecto .NET.

Las cuatro señales que deberías ver desde el primer día

No empieces instrumentando todo. Empieza por lo que responde a la pregunta que hace tu director general: «¿está funcionando bien para el cliente?».

SeñalQué midePor qué importa
LatenciaTiempo de respuesta en percentiles p50, p95 y p99El promedio miente: si 95 peticiones tardan 100 ms y 5 tardan 8 s, el promedio dice 495 ms y nadie ve el problema
TráficoPeticiones por segundo o por minutoDa contexto: una caída de errores puede ser que se arregló… o que ya nadie está entrando
ErroresPorcentaje de respuestas fallidas, separadas por tipoEs la métrica que se traduce directamente a clientes afectados
SaturaciónQué tan cerca está el recurso más limitado de su topePredice la caída antes de que ocurra: pool de conexiones, cola de hilos, memoria

Con estas cuatro, bien graficadas y con alertas sensatas, ya cubres la enorme mayoría de los incidentes que hoy te toman horas.

Una ruta de adopción en cuatro etapas

  1. 1Ver Semanas 1 y 2

    Instrumentación automática con OpenTelemetry en tus servicios principales, exportando a un destino único. El objetivo es que exista un solo lugar donde mirar cuando algo pase. Nada más.

  2. 2Correlacionar Semanas 3 y 4

    Logging estructurado y propagación del TraceId entre servicios y hacia los logs. El objetivo es que desde un error puedas saltar a la traza completa de esa petición exacta, sin buscar a mano por hora aproximada.

  3. 3Alertar con criterio Mes 2

    Definir SLIs y SLOs con el negocio y construir alertas sobre síntomas visibles para el usuario, no sobre causas internas. Menos alertas, y que cada una tenga una acción clara. Un equipo que recibe doscientas alertas al día ya no lee ninguna.

  4. 4Medir el negocio Mes 3

    Métricas propias: pedidos procesados, tiempo de cobro, fallas por proveedor de pago. Que el mismo tablero sirva al líder técnico y a la dirección. Aquí la observabilidad deja de ser un gasto de TI y empieza a defenderse sola.

Los tres errores que vemos una y otra vez

Error 1 · Instrumentarlo todo desde el inicio

Genera un volumen de datos enorme, una factura desagradable y un ruido en el que nadie encuentra nada. Empieza por los dos o tres servicios que sostienen el dinero.

Error 2 · Meter identificadores únicos como etiquetas de métricas

Poner el ID de usuario o de pedido como dimensión multiplica la cardinalidad y con ella el costo. Esos datos viven en las trazas y en los logs, nunca en las métricas.

Error 3 · Tableros preciosos que nadie abre en una crisis

Si tu tablero de guardia no cabe en una pantalla y no responde en diez segundos «¿está bien o está mal?», no es un tablero de operación: es una obra decorativa.

Lo que realmente cambia cuando lo tienes

El cambio más visible no es técnico, es de conversación. Se acaban las juntas donde el área de sistemas dice «de nuestro lado todo está bien» y el área comercial insiste en que los clientes se quejan. Con trazas, ambos miran el mismo dato y la discusión se vuelve un diagnóstico.

Y aparece algo que casi nadie anticipa: empiezas a encontrar problemas que llevaban meses ahí y que nadie había reportado.

  • Un 3% de checkouts que fallaba en silencio y se contabilizaba como «el cliente se arrepintió».
  • Un trabajo nocturno que dejó de correr en marzo y nadie notó hasta el cierre anual.
  • Una integración que reintenta cuatro veces cada llamada y triplica el costo del proveedor.

Ese suele ser el momento en que la inversión se paga sola.

Por dónde seguir

Este artículo es la puerta de entrada. Cada etapa de la ruta tiene su propia guía con el código y la configuración concreta:

No puedes mejorar lo que no puedes ver. Y no puedes ver lo que nunca instrumentaste.

Si tu equipo hoy diagnostica a base de reiniciar servicios y revisar archivos de log por SSH, no es falta de talento: es falta de instrumentos. Y eso, a diferencia de casi todo lo demás, se resuelve en semanas.

CS
Consultoría SysAdmin

¿Tu equipo tarda horas en explicar por qué falló algo?

Implementamos observabilidad en aplicaciones .NET sin reescribir tu sistema. Instrumentamos con OpenTelemetry, correlacionamos logs y trazas, definimos las alertas que sí importan y dejamos a tu equipo capacitado para operarlo. En semanas, no en trimestres.

  • Observabilidad y OpenTelemetry para .NET
  • Diagnóstico de rendimiento, memoria y concurrencia
  • Instrumentación de aplicaciones .NET Framework legacy
  • Mantenimiento y monitoreo de servidores
Diagnóstico de observabilidad sin costo. Revisamos tu stack y te decimos qué instrumentar primero para obtener el mayor impacto.