Volver a 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.

Python FastAPI PostgreSQL Docker GitHub Actions DevOps

¿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 X segundos. Si algo cae, te avisa por Telegram. Toda la actividad queda guardada en base de datos y visible en un dashboard con gráficas de tiempo de respuesta e historial de incidencias.

El motivo de construirlo es que cubre exactamente el stack que piden las ofertas de Python backend junior: API REST, base de datos relacional, tareas en background, contenedores y CI/CD. A diferencia de un CRUD típico, este proyecto tiene múltiples componentes que se tienen que comunicar — lo que demuestra que sabes orquestar un sistema real.

localhost:8000 / dashboard
Infrastructure Monitor Actualizado hace 5s
3 / 4 Servicios activos
142 ms Respuesta media
99.2% Uptime 30 días
api.example.com 45 ms UP
web.example.com 120 ms UP
db.internal:5432 — ms DOWN
redis.internal:6379 3 ms UP
Response time — últimas 24h (ms)

Arquitectura

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)

Todo orquestado con docker compose up — un solo comando levanta los cinco servicios.

Stack técnico

Backend

Python 3.12 FastAPI SQLAlchemy 2.0 Pydantic v2 APScheduler

Base de datos

PostgreSQL 16 Redis 7 Alembic

Frontend

Jinja2 HTMX Chart.js

Infraestructura

Docker Caddy Oracle Cloud GitHub Actions

Fases del proyecto

En curso

Fase 1 — MVP local

API con FastAPI, autenticación JWT, CRUD de targets, worker básico que ejecuta checks HTTP y guarda 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 — Containerización

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

Pendiente

Fase 4 — CI con GitHub Actions

Pipeline que en cada push ejecuta linting (ruff + black), tests con Postgres como service container y publica imágenes a ghcr.io.

Pendiente

Fase 5 — Despliegue en cloud

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

Pendiente

Fase 6 — CD completo

Deploy automático en producción con cada merge a main. Push → tests → build → deploy, con notificación del resultado a Telegram.

Lo que estoy aprendiendo

⚙️

APIs asíncronas con FastAPI

Cómo 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 nueva API async, modelado relacional y gestión de migraciones con Alembic sin romper producción.

🐳

Docker y orquestación

Construir imágenes eficientes con multi-stage builds, networking entre contenedores y gestión de secretos con variables de entorno.

🔁

CI/CD con GitHub Actions

Pipelines que validan, construyen y despliegan automáticamente — incluyendo service containers para levantar Postgres en los tests.

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

Hablemos del proyecto