Proyecto de observabilidad · APIs

Sistema de monitoreo y observabilidad de APIs

Proyecto orientado al monitoreo y análisis del comportamiento de APIs mediante captura de eventos, métricas y visualizaciones para identificar patrones de uso, anomalías operativas y apoyar el entendimiento del estado del sistema.

Python Pandas Numpy Chart.js Django Angular SQL PostgreSQL

Problema

Las APIs generan miles de eventos y peticiones continuamente, lo que hace difícil identificar problemas operativos sin herramientas de monitoreo adecuadas.

Errores intermitentes, aumentos de latencia, comportamiento sospechoso y picos de tráfico pueden afectar la estabilidad del sistema y pasar desapercibidos si no existen métricas, alertas y visualizaciones centralizadas.

Este proyecto explora conceptos de observabilidad para analizar tráfico de APIs, detectar anomalías y construir una vista operativa orientada a comprender el comportamiento del sistema.

Solución construida

Se construyó una plataforma de monitoreo para capturar eventos de APIs, procesar métricas operativas y exponer resultados mediante una API para su visualización en un dashboard interactivo.

El flujo inicia con la captura y generación de eventos relacionados con tráfico, autenticación, errores y latencia. Posteriormente, Python y Pandas procesan la información para calcular indicadores, detectar anomalías y consolidar métricas agregadas.

Los resultados son almacenados en base de datos mediante Django y expuestos a través de una API REST, permitiendo que Angular construya visualizaciones enfocadas en observabilidad, rendimiento y comportamiento operativo.

Arquitectura

La arquitectura del proyecto separa la captura de eventos, el procesamiento analítico, la lógica de negocio y la visualización de métricas operativas, permitiendo un flujo más organizado, reutilizable y eficiente.

Los eventos son procesados mediante un pipeline construido con Python y Pandas para calcular indicadores, detectar anomalías y consolidar métricas de observabilidad. Posteriormente, los resultados son almacenados en la base de datos y expuestos a través de una API desarrollada con Django REST Framework.

Finalmente, Angular consume estos servicios para construir un dashboard interactivo enfocado en tráfico, latencia, errores, alertas y comportamiento operativo del sistema.

  1. Base de datos
  2. ETL
  3. Django
  4. API REST
  5. Angular

Dashboard

Vista general de métricas operativas, tráfico, latencia, errores y alertas generadas a partir del monitoreo de APIs.

Cargando datos del dashboard…

Hallazgos clave

A partir del dashboard, se identificaron patrones sobre uso, errores, tiempos de respuesta y comportamiento de usuarios.

Hallazgo 1

La mayor parte del tráfico corresponde a consultas

Las peticiones GET son las más frecuentes en todos los endpoints, lo que indica que el sistema recibe principalmente solicitudes de consulta. Las operaciones POST, PUT y DELETE tienen menor volumen, pero siguen siendo importantes porque suelen estar asociadas con creación, actualización o eliminación de información.

Hallazgo 2

/payments es el endpoint más sensible del sistema

El endpoint de pagos presenta la mayor tasa de error detectada, la latencia más alta y el mayor costo estimado. Esto lo convierte en un punto crítico que debería monitorearse con mayor prioridad.

Hallazgo 3

Algunos servicios responden más lento en sus peores casos

Aunque la latencia promedio global se mantiene alrededor de 205 ms, el percentil 95 evidencia degradación importante en endpoints como /payments y /subscriptions, donde las peticiones más lentas superan los 500 ms.

Hallazgo 4

Hay usuarios con muchos fallos de autenticación

El ranking de usuarios sospechosos muestra cuentas con una cantidad elevada de intentos fallidos. Esto puede indicar errores de credenciales, automatizaciones o posibles intentos de acceso no autorizado. La diferencia respecto al resto de usuarios sugiere un patrón anómalo más que errores distribuidos de forma normal.

Recomendaciones

Con base en los patrones observados, se proponen acciones para mejorar estabilidad, seguridad, costos y capacidad de respuesta del sistema.

Recomendación 1

Priorizar el monitoreo del endpoint de pagos

Debido a que /payments concentra el mayor costo operativo, la latencia más alta y la mayor tasa de errores, conviene definir alertas específicas, seguimiento continuo y revisiones periódicas sobre este endpoint.

Recomendación 2

Definir límites y alertas por tipo de error

Separar errores 4xx y 5xx permitiría distinguir problemas del cliente, autenticación o fallos internos del servidor, facilitando una respuesta más rápida y precisa.

Recomendación 3

Vigilar usuarios con fallos repetidos

Los usuarios con muchos intentos fallidos deberían revisarse con reglas de seguridad como bloqueo temporal, rate limiting o validaciones adicionales para reducir riesgos de abuso, especialmente cuando existe una diferencia marcada frente al comportamiento normal del resto de usuarios.

Recomendación 4

Optimizar endpoints con mayor latencia y costo

Los endpoints con mayor latencia y costo, especialmente /payments y /subscriptions, pueden analizarse para aplicar caché, optimizar consultas, reducir payloads o ajustar recursos de infraestructura según la demanda.

Decisiones técnicas

El proyecto fue diseñado separando la captura de eventos, el procesamiento analítico, el almacenamiento de métricas y la visualización del dashboard, evitando recalcular información compleja cada vez que un usuario accede a la plataforma.

Generación y captura de eventos

Se generaron eventos representativos del comportamiento de APIs para construir un flujo de observabilidad que incluyera tráfico, errores, métodos HTTP, tiempos de respuesta y actividad de usuarios.

Procesamiento previo de métricas

Un comando de Django procesa los eventos utilizando Python y Pandas para calcular KPIs, latencia, tasas de error, costos y alertas operativas antes de exponer los resultados.

Resultados almacenados

Las métricas agregadas son almacenadas en base de datos para evitar ejecutar análisis pesados en tiempo real, mejorando el rendimiento y reduciendo carga sobre el servidor.

API desacoplada del frontend

Django REST Framework expone los datos necesarios para que Angular construya el dashboard, manteniendo separadas la lógica del backend, el procesamiento analítico y la interfaz visual.

Cierre / aprendizaje

Este proyecto demuestra cómo un escenario de observabilidad puede construirse a partir de eventos para transformarse en un dashboard web orientado al monitoreo operativo de APIs.

El principal aprendizaje fue separar el manejo de eventos, el procesamiento analítico y la visualización final, construyendo un flujo donde Python y Pandas preparan métricas operativas, Django las expone mediante API y Angular las presenta de forma clara e interactiva.

El proyecto también permitió entender conceptos utilizados en plataformas reales de observabilidad, como tasas de error, percentiles de latencia, tráfico por endpoint, alertas operativas y comportamiento anómalo de usuarios.

Más allá de los gráficos, el valor del dashboard está en convertir métricas técnicas en información útil para identificar riesgos, priorizar incidentes y comprender el comportamiento general del sistema.