main content
< Volver a blog sobre aplicaciones móviles

Monitorización y observabilidad para aplicaciones web

Cómo diseñar un sistema de monitorización y observabilidad para tu aplicación web a medida

Monitorización y observabilidad: dos conceptos que no son lo mismo

Hay equipos que llevan años hablando indistintamente de monitorización y observabilidad, y en el fondo describen prácticas bastante diferentes. La monitorización recopila datos predefinidos sobre el comportamiento de un sistema: uso de CPU, memoria disponible, tiempo de respuesta de un endpoint, número de errores HTTP 500 por minuto. Es un enfoque esencialmente reactivo que responde a la pregunta "¿está funcionando lo que ya conozco?".

La observabilidad describe otra cosa: la capacidad de entender el estado interno de un sistema a partir de las señales que emite, incluso ante preguntas que nadie había formulado antes del incidente. Cuando un usuario te avisa de que "la aplicación va lenta los martes a las 11:00", la observabilidad permite correlacionar trazas, logs y métricas hasta descubrir que un proceso batch de sincronización con el ERP satura la conexión a base de datos justo a esa hora. Sin ese cruce de señales, te quedas adivinando.

Para una aplicación web a medida, ambos enfoques se complementan. La monitorización establece las líneas base y dispara alertas cuando algo se desvía; la observabilidad da las herramientas para investigar por qué se ha producido esa desviación. Diseñar un sistema que integre ambos desde el inicio del proyecto reduce de forma muy notable el tiempo medio de resolución de incidencias (MTTR), que según datos de DORA oscila entre menos de una hora en equipos de élite y más de una semana en equipos con baja madurez operativa.

Los tres pilares: métricas, logs y trazas distribuidas

Todo sistema de observabilidad se sustenta en tres tipos de señales que, combinadas, ofrecen una visión razonablemente completa de lo que ocurre en producción. Cada una resuelve un problema distinto.

Las métricas son valores numéricos agregados a lo largo del tiempo: latencia del percentil 95 (p95) de un endpoint, peticiones por segundo, tasa de errores, consumo de memoria del contenedor. Su principal virtud es la eficiencia: ocupan poco almacenamiento y permiten construir dashboards que muestran tendencias a lo largo de semanas o meses. Como mínimo, una aplicación web a medida debería exportar las cuatro señales doradas que definió Google SRE: latencia, tráfico, errores y saturación.

Los logs son registros textuales de eventos discretos. Cada petición HTTP, cada consulta a base de datos, cada error capturado genera una línea con contexto: timestamp, nivel de severidad, mensaje descriptivo y metadatos relevantes. La clave para que sean útiles está en estructurarlos en formato JSON con campos consistentes. Un log estructurado como {"timestamp": "2026-05-31T10:15:32Z", "level": "ERROR", "service": "payment-api", "trace_id": "abc123", "user_id": "usr_789", "message": "Timeout connecting to payment gateway", "duration_ms": 30021} permite filtrar, agregar y correlacionar con una eficacia que el texto plano jamás ofrece.

Las trazas distribuidas representan el recorrido completo de una petición a través de todos los servicios que intervienen. Cuando un usuario pulsa "Finalizar compra", esa acción puede atravesar el API gateway, el servicio de carrito, el de inventario, el de pagos y el de notificaciones. Cada tramo (span) registra cuánto tiempo tardó cada servicio, qué llamadas realizó y dónde apareció el cuello de botella. Diagnosticar un problema de rendimiento sin trazas distribuidas en una aplicación con más de tres servicios es, sencillamente, un ejercicio de adivinación.

Herramientas del ecosistema: elegir la combinación adecuada

El catálogo de herramientas es extenso y la elección depende del presupuesto, la complejidad de la aplicación y, sobre todo, de las competencias del equipo que va a operarlas. Para métricas, Prometheus se ha consolidado como el estándar de facto en entornos cloud-native: utiliza un modelo pull (es él quien consulta los endpoints de métricas de cada servicio) y un lenguaje de consultas propio, PromQL, que permite construir alertas bastante sofisticadas. Grafana actúa como capa de visualización, conectándose a Prometheus y a otras fuentes para crear dashboards unificados.

Para logs, la pila ELK (Elasticsearch, Logstash, Kibana) sigue siendo una opción robusta. Alternativas como Loki, del mismo equipo de Grafana, han ganado terreno por su menor consumo de recursos al indexar solo las etiquetas y no el contenido completo del log. En aplicaciones con volúmenes moderados (menos de 50 GB/día de logs), Loki combinado con Grafana simplifica la operación y reduce costes de infraestructura entre un 40% y un 60% respecto a Elasticsearch.

Para trazas distribuidas, OpenTelemetry ha emergido como el estándar de instrumentación tras absorber proyectos anteriores como OpenTracing y OpenCensus. Su mayor ventaja es la neutralidad: instrumentas tu código una sola vez con el SDK de OpenTelemetry y puedes enviar las trazas a cualquier backend compatible, ya sea Jaeger (open source), Tempo (de Grafana Labs) o servicios gestionados como Datadog o New Relic. Esta flexibilidad evita el vendor lock-in y permite migrar de backend sin tocar el código de la aplicación.

Una combinación frecuente y equilibrada en coste para aplicaciones web a medida es Prometheus + Loki + Tempo + Grafana, conocida como pila PLG. Todas las herramientas son open source, se despliegan en Kubernetes con Helm charts oficiales y comparten el mismo frontend de Grafana, lo que reduce la curva de aprendizaje del equipo.

SLIs, SLOs y SLAs: definir qué significa "funcionar bien"

Antes de configurar una sola alerta conviene definir qué constituye un servicio aceptable. Los SLIs (Service Level Indicators) son las métricas concretas que miden la experiencia del usuario. Para una aplicación web los más habituales son la disponibilidad (porcentaje de peticiones que devuelven un código HTTP exitoso), la latencia (tiempo de respuesta del percentil 99) y la corrección (porcentaje de respuestas que contienen datos válidos).

Los SLOs (Service Level Objectives) establecen umbrales sobre esos indicadores. Por ejemplo: "el 99,5% de las peticiones al endpoint de búsqueda deben completarse en menos de 300 ms durante cualquier ventana de 30 días". Ese objetivo implica un presupuesto de error del 0,5%, equivalente a unas 3 horas y 39 minutos de indisponibilidad mensual. Y ese presupuesto de error funciona como una herramienta de gestión extraordinaria: mientras quede margen, el equipo puede priorizar desarrollo de funcionalidades; cuando se agota, toda la capacidad se dedica a fiabilidad.

Los SLAs (Service Level Agreements) son compromisos contractuales con el cliente, con consecuencias económicas (penalizaciones, créditos) cuando se incumplen. Deben ser siempre menos exigentes que los SLOs internos. Si tu SLO interno es 99,5%, el SLA contractual debería situarse en 99,0% para mantener un margen de seguridad. Definir SLOs sin SLIs medibles es un ejercicio teórico; definir SLAs sin SLOs internos es una apuesta financiera.

Estrategias de alertas que reducen la fatiga del equipo

Uno de los errores más recurrentes consiste en configurar alertas para cada métrica disponible. El resultado es un equipo que recibe cientos de notificaciones diarias, ignora la mayoría y acaba perdiendo la alerta verdaderamente crítica entre el ruido. Un sistema eficaz se estructura en niveles.

Las alertas de severidad crítica (P1) requieren intervención humana inmediata y activan una llamada telefónica o SMS al ingeniero de guardia. Se reservan para situaciones donde el usuario final ya está afectado: SLO de disponibilidad en riesgo, tasa de errores superior al 5%, pérdida total de conectividad con la base de datos. No deberían activarse más de dos o tres veces al mes.

Las alertas de severidad alta (P2) se envían a un canal de Slack o Teams y esperan respuesta en menos de 30 minutos en horario laboral. Cubren degradaciones que aún no afectan al SLO pero muestran una tendencia preocupante: la latencia p95 ha aumentado un 40% en la última hora, el uso de disco ha superado el 80%, la cola de tareas asíncronas crece sin procesarse.

Las alertas informativas (P3) se registran en un ticket automático para revisión durante la próxima jornada. Incluyen anomalías de rendimiento no urgentes, certificados SSL que caducan en 30 días o versiones de dependencias con vulnerabilidades conocidas.

Cada alerta debería incluir tres elementos: qué está ocurriendo (descripción objetiva), por qué es relevante (impacto en el usuario o en el negocio) y un enlace directo al runbook con los pasos de diagnóstico. Una alerta que dice "CPU al 92%" sin contexto genera confusión. Otra que dice "CPU del servicio de pagos al 92% durante 10 minutos, posible impacto en latencia de checkout, ver runbook: enlace" permite actuar con rapidez.

Diseño de dashboards operativos y de negocio

Los dashboards no son únicamente herramientas técnicas. Un diseño inteligente los convierte en un puente entre operaciones y negocio, y suele estructurarse en tres capas.

El dashboard ejecutivo muestra, en una sola pantalla, el estado general del servicio con semáforos rojo/amarillo/verde, la disponibilidad acumulada del mes, el número de incidentes y su impacto estimado en facturación. Lo consultan directores de tecnología y responsables de producto, normalmente sin entrar en detalle técnico.

El dashboard de servicio ofrece una vista por componente: latencia, tasa de errores, throughput y saturación de cada servicio o módulo de la aplicación. Permite al equipo de operaciones identificar en segundos qué componente causa una degradación. Conviene incluir anotaciones que marquen despliegues, cambios de configuración y eventos externos relevantes (campañas de marketing, picos estacionales) para facilitar la correlación temporal.

El dashboard de investigación es temporal y se crea durante un incidente o una sesión de optimización. Combina métricas, logs filtrados y trazas específicas para responder a una pregunta concreta. Grafana permite enlazar directamente desde un punto de un gráfico de métricas a los logs de ese instante y a las trazas de las peticiones lentas, un flujo que reduce drásticamente el tiempo de diagnóstico.

Trazabilidad distribuida en la práctica

Implementar trazas distribuidas exige que cada petición que entra en el sistema reciba un identificador único (trace ID) que se propaga a través de todos los servicios mediante cabeceras HTTP, normalmente W3C Trace Context. Cada servicio crea spans que registran la operación realizada, su duración y los metadatos relevantes.

En una aplicación web a medida con arquitectura de tres capas (frontend, API, base de datos), la instrumentación básica con OpenTelemetry captura automáticamente las peticiones HTTP entrantes, las llamadas a base de datos y las peticiones HTTP salientes. Para obtener trazas realmente útiles hay que añadir instrumentación personalizada en los puntos críticos del negocio: el procesamiento de un pedido, la validación de un formulario complejo, la generación de un informe. Esta instrumentación adicional consume entre 2 y 4 horas de desarrollo por servicio, pero su valor en la resolución de incidentes resulta difícil de exagerar.

El muestreo (sampling) es fundamental para controlar los costes. Registrar el 100% de las trazas en una aplicación con 10.000 peticiones por minuto genera volúmenes de datos insostenibles. Una estrategia habitual combina muestreo probabilístico (registrar el 5-10% de las trazas normales) con muestreo basado en decisión (registrar el 100% de las trazas que contienen errores o superan un umbral de latencia). OpenTelemetry Collector permite configurar estas políticas de forma centralizada sin modificar el código de los servicios.

Flujo de respuesta ante incidentes

La observabilidad solo aporta valor real si alimenta un proceso de respuesta estructurado. Un flujo de gestión de incidentes maduro sigue cinco fases. La detección se produce cuando una alerta se activa o un usuario reporta un problema. La clasificación determina la severidad y asigna un responsable (incident commander) en menos de cinco minutos. El diagnóstico utiliza dashboards, logs y trazas para localizar la causa raíz. La mitigación aplica la solución más rápida para restaurar el servicio, que a menudo es un rollback del último despliegue. La retrospectiva, sin culpables, documenta qué ocurrió, por qué los controles existentes no lo previnieron y qué acciones concretas se implementarán.

Cada incidente resuelto debería traducirse en al menos una mejora del sistema de observabilidad: una nueva alerta que habría detectado el problema antes, un dashboard que habría acelerado el diagnóstico o un runbook actualizado. Ese ciclo de mejora continua distingue a los equipos que alcanzan un MTTR inferior a 30 minutos de los que tardan días en resolver incidencias similares.

Qué monitorizar en producción desde el primer día

Cuando una aplicación web a medida se despliega por primera vez aparece una tentación recurrente: monitorizar todo o, peor, no monitorizar nada con la excusa de que "ya lo haremos cuando crezca". Un punto de partida pragmático incluye estos elementos esenciales.

A nivel de infraestructura: uso de CPU, memoria y disco de cada contenedor o servidor, estado de los nodos del clúster, conectividad de red entre servicios. A nivel de aplicación: tasa de peticiones por endpoint, latencia en percentiles p50, p95 y p99, tasa de errores HTTP (4xx y 5xx por separado), tamaño de las colas de procesamiento asíncrono. A nivel de dependencias externas: latencia y disponibilidad de la base de datos, tiempo de respuesta de APIs de terceros (pasarela de pagos, servicios de envío, proveedores de autenticación), estado de las conexiones al broker de mensajería.

A nivel de negocio: registros completados por hora, pedidos procesados, errores en el flujo de pago, tiempo medio que tarda un usuario en completar una acción clave. Son las métricas que realmente importan a los stakeholders y las que justifican la inversión en observabilidad. Cuando puedes demostrar que una mejora de 200 ms en la latencia del checkout aumentó la conversión un 1,2%, la observabilidad deja de percibirse como un coste técnico y pasa a ser una inversión con retorno medible.

Consideraciones de coste y dimensionamiento

El coste de un sistema de observabilidad depende de tres factores: el volumen de datos ingestados, el periodo de retención y la complejidad de las consultas. Las soluciones SaaS como Datadog, New Relic o Dynatrace simplifican enormemente la operación, pero pueden escalar muy rápido en factura. Una aplicación con 20 servicios, 500 métricas custom y 30 GB diarios de logs puede superar fácilmente los 3.000 euros mensuales en una plataforma gestionada.

La alternativa open source (Prometheus + Loki + Tempo + Grafana) reduce el coste de licencias a cero, aunque exige capacidad interna para operar la infraestructura. Para equipos de menos de cinco personas, la recomendación práctica es comenzar con Grafana Cloud en su tier gratuito (que incluye 10.000 series de métricas, 50 GB de logs y 50 GB de trazas al mes) y migrar a infraestructura propia solo cuando los volúmenes superen esos umbrales.

Una estrategia que reduce costes sin sacrificar visibilidad es aplicar políticas de retención diferenciadas: métricas agregadas durante 13 meses (para comparativas interanuales), logs durante 30 días en caliente y 90 días en almacenamiento frío (para cumplimiento normativo), trazas durante 7 días (suficiente para la mayoría de investigaciones). Si tu organización necesita orientación para diseñar una arquitectura de observabilidad ajustada a vuestro contexto técnico y presupuestario, contacta con nuestro equipo para una evaluación inicial sin compromiso.

De la reactividad a la cultura de observabilidad

Implementar herramientas es la parte más sencilla. El cambio profundo aparece cuando la observabilidad se integra en la cultura del equipo de desarrollo. Eso implica que cada nueva funcionalidad incluya su instrumentación como parte de la definición de "terminado", que los dashboards se revisen en las reuniones de sprint, que las retrospectivas de incidentes generen acciones concretas y que el presupuesto de error sea un criterio de priorización visible para producto y negocio.

Los equipos que alcanzan ese nivel de madurez no solo detectan problemas más rápido: los previenen. Identifican patrones de degradación antes de que afecten al usuario, dimensionan la infraestructura con datos reales en lugar de suposiciones y toman decisiones de arquitectura basadas en evidencia. La observabilidad deja entonces de ser un proyecto técnico para convertirse en una ventaja competitiva que permite iterar con confianza, desplegar con seguridad y escalar sin sobresaltos.

Contacta con nosotros
Fila 1