← Todos los proyectos
En construcción

Monitor de Infraestructura

Aplicación web que monitoriza servidores y servicios de red en tiempo real: comprueba URLs, puertos TCP y conexiones SSH, guarda el histórico y lanza alertas cuando algo cae.

PythonFastAPIPostgreSQLDockerGitHub ActionsDevOps

¿Qué hace?

Registras los servicios que quieres vigilar (una URL, un puerto TCP, un servidor SSH) y la aplicación los comprueba automáticamente cada pocos segundos. Si algo cae, avisa por Telegram. Toda la actividad queda en base de datos y se ve en un dashboard con gráficas de tiempo de respuesta e historial de incidencias.

Lo construyo porque cubre justo el stack que piden las ofertas de backend con Python: API REST, base de datos relacional, tareas en segundo plano, contenedores y CI/CD. A diferencia de un CRUD típico, tiene varios componentes que se comunican entre sí, que es lo que pasa en un sistema real.

localhost:8000/dashboard
Infrastructure MonitorActualizado hace 5 s
3 / 4Servicios activos
142 msRespuesta media
99,2 %Disponibilidad 30 días
api.example.com45 msUP
web.example.com120 msUP
db.internal:5432— msDOWN
redis.internal:63793 msUP
Tiempo de respuesta, últimas 24 h (ms)

Maqueta ilustrativa con datos ficticios.

Arquitectura

Todo se levanta con docker compose up: un solo comando para los cinco servicios.

Usuario  ──HTTPS──▶  Caddy (reverse proxy + SSL)
                        │
                        ▼
                  FastAPI  (API REST + dashboard Jinja2)
                  │              │
                  ▼              ▼
            PostgreSQL        Redis  (caché + broker)
                  ▲
                  │
              Worker  (APScheduler)
                  │
      ┌───────────┼───────────┐
      ▼           ▼           ▼
   HTTP check   TCP check   SSH check  ──▶  Telegram (alertas)

Fases del proyecto

En curso

Fase 1 — MVP local

API con FastAPI, autenticación JWT, CRUD de objetivos y un worker básico que ejecuta checks HTTP y guarda los resultados en PostgreSQL.

Pendiente

Fase 2 — Funcionalidades reales

Checks TCP, SSH y ping. Alertas a Telegram. Dashboard con gráficas de Chart.js y refresco parcial con HTMX.

Pendiente

Fase 3 — Contenedores

Dockerfiles multi-stage y docker-compose completo con healthchecks. Arranque con un solo comando en cualquier máquina.

Pendiente

Fase 4 — CI con GitHub Actions

En cada push: linting (ruff y black), tests con Postgres como service container y publicación de imágenes en ghcr.io.

Pendiente

Fase 5 — Despliegue en cloud

VM ARM en Oracle Cloud Free Tier, Caddy como reverse proxy con SSL automático y la app accesible en una URL pública.

Pendiente

Fase 6 — CD completo

Despliegue automático con cada merge a main: push, tests, build y deploy, con aviso del resultado por Telegram.

Stack técnico

Backend

Python 3.12FastAPISQLAlchemy 2.0Pydantic v2APScheduler

Base de datos

PostgreSQL 16Redis 7Alembic

Frontend

Jinja2HTMXChart.js

Infraestructura

DockerCaddyOracle CloudGitHub Actions

Lo que estoy aprendiendo

⚙️

APIs asíncronas con FastAPI

Estructurar una API REST con routers, dependencias, autenticación JWT y documentación automática con Swagger.

🗄️

ORM y migraciones

SQLAlchemy 2.0 con su API async, modelado relacional y migraciones con Alembic sin romper producción.

🐳

Docker y orquestación

Imágenes eficientes con multi-stage builds, redes entre contenedores y secretos con variables de entorno.

🔁

CI/CD con GitHub Actions

Pipelines que validan, construyen y despliegan, con service containers para levantar Postgres en los tests.

¿Hablamos del proyecto?

El repositorio será público cuando el MVP esté estable.