Sistema de Monitoreo y Observabilidad

DevOps | Bash | Docker | Ansible | Flask

Dashboard de Monitoreo DevOps

Introducción

En este proyecto desarrollé una solución integral de monitoreo para servidores y máquinas virtuales. El sistema extrae métricas de salud en tiempo real de múltiples nodos y las centraliza en un dashboard interactivo, eliminando la necesidad de supervisión manual individual.

El Problema

Monitorear el estado de salud (CPU, RAM, Disco) de múltiples servidores de forma manual es ineficiente y propenso a errores. El objetivo fue crear una arquitectura que permitiera observar toda la infraestructura desde un solo punto, garantizando escalabilidad y portabilidad.

Arquitectura del Proyecto

La solución se divide en cuatro capas principales:

  • Agente de Extracción: Script en Bash que recolecta métricas y las envía vía JSON.
  • Backend API: Desarrollado en Python con Flask para procesar y validar los datos.
  • Persistencia: Base de datos PostgreSQL para el almacenamiento histórico.
  • Frontend: Dashboard dinámico con Cards que muestran el estado de cada nodo.
  • Tecnologías utilizadas: Python, Flask, PostgreSQL, Docker, Docker Compose, Ansible, Bash Scripting, Oracle Cloud.

Infraestructura en la Nube (Oracle Cloud)

instancia_oracle

A diferencia de un entorno local, este sistema fue desplegado sobre una instancia de Oracle Cloud Infrastructure (OCI). Esto implicó la gestión de:

  • Virtual Cloud Network (VCN): Configuración de reglas de entrada (Ingress Rules) para permitir el tráfico de las métricas de forma segura.
  • Seguridad (Hardening): Implementación de acceso vía llaves SSH de 4096 bits y cambio de puertos estándar para mitigar intentos de intrusión.
  • Disponibilidad: El servidor central opera 24/7 en la nube, permitiendo que nodos de cualquier parte del mundo reporten su estado.

Automatización con Ansible (IaC)

Para el despliegue de los agentes en los nodos (VMs), utilicé Ansible. Esto permite configurar el entorno, transferir el script y establecerlo como un servicio persistente en Systemd con un solo comando.

ansible_running

Contenerización con Docker Compose

Para facilitar el despliegue del servidor central en Oracle Cloud, utilicé Docker para encapsular la API y la base de datos, garantizando que el entorno sea idéntico en desarrollo y producción.

docker_yml

El Agente de Monitoreo (Bash)

El script principal utiliza herramientas de sistema para calcular el uso de recursos y enviar un POST request a la API centralizada cada 10 segundos.

systemctl

Conclusión y Próximos Pasos

Este proyecto demuestra la potencia de combinar herramientas de automatización como Ansible con la portabilidad de Docker. Se logró reducir el tiempo de configuración de nuevos nodos de minutos a segundos.

Siguiente paso: Implementar un pipeline de CI/CD para automatizar las actualizaciones del dashboard .