Files
math2-platform/docker-compose.monitoring.yml
Renato bc43c9e772
Some checks failed
Test Suite / test-backend (push) Has been cancelled
Test Suite / test-frontend (push) Has been cancelled
Test Suite / e2e-tests (push) Has been cancelled
Test Suite / coverage-check (push) Has been cancelled
🎓 Initial commit: Math2 Platform - Plataforma de Álgebra Lineal PRO
 Características:
- 45 ejercicios universitarios (Basic → Advanced)
- Renderizado LaTeX profesional
- IA generativa (Z.ai/DashScope)
- Docker 9 servicios
- Tests 123/123 pasando
- Seguridad enterprise (JWT, XSS, Rate limiting)

🐳 Infraestructura:
- Next.js 14 + Node.js 20
- PostgreSQL 15 + Redis 7
- Docker Compose completo
- Nginx + SSL ready

📚 Documentación:
- 5 informes técnicos completos
- README profesional
- Scripts de deployment automatizados

Estado: Producción lista 
2026-03-31 11:27:11 -03:00

186 lines
5.1 KiB
YAML

# ========================================
# DOCKER COMPOSE - MONITORING STACK
# Prometheus + Grafana + Exporters
# ========================================
version: '3.9'
services:
# ========================================
# Prometheus
# ========================================
prometheus:
image: prom/prometheus:latest
container_name: math-prometheus
volumes:
- ./monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- ./monitoring/prometheus/rules:/etc/prometheus/rules:ro
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--storage.tsdb.retention.time=15d'
- '--web.console.libraries=/usr/share/prometheus/console_libraries'
- '--web.console.templates=/usr/share/prometheus/consoles'
- '--web.enable-lifecycle'
ports:
- "127.0.0.1:9090:9090"
networks:
- monitoring
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "3"
# ========================================
# Grafana
# ========================================
grafana:
image: grafana/grafana:latest
container_name: math-grafana
volumes:
- grafana_data:/var/lib/grafana
- ./monitoring/grafana/datasources:/etc/grafana/provisioning/datasources:ro
- ./monitoring/grafana/dashboards:/etc/grafana/provisioning/dashboards:ro
environment:
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD:-admin}
- GF_USERS_ALLOW_SIGN_UP=false
- GF_SERVER_ROOT_URL=${GRAFANA_URL:-http://localhost:3001}
- GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource
ports:
- "127.0.0.1:3001:3000"
depends_on:
- prometheus
networks:
- monitoring
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "3"
# ========================================
# PostgreSQL Exporter
# ========================================
postgres-exporter:
image: prometheuscommunity/postgres-exporter:latest
container_name: math-postgres-exporter
environment:
DATA_SOURCE_NAME: "postgresql://${DB_USER:-mathuser}:${DB_PASSWORD}@postgres:5432/${DB_NAME:-mathdb}?sslmode=disable"
ports:
- "127.0.0.1:9187:9187"
networks:
- monitoring
- backend
restart: unless-stopped
# ========================================
# Redis Exporter
# ========================================
redis-exporter:
image: oliver006/redis_exporter:latest
container_name: math-redis-exporter
environment:
REDIS_ADDR: "redis://redis:6379"
REDIS_PASSWORD: ${REDIS_PASSWORD}
ports:
- "127.0.0.1:9121:9121"
networks:
- monitoring
- backend
restart: unless-stopped
# ========================================
# Node Exporter
# ========================================
node-exporter:
image: prom/node-exporter:latest
container_name: math-node-exporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
ports:
- "127.0.0.1:9100:9100"
networks:
- monitoring
restart: unless-stopped
# ========================================
# Nginx Exporter
# ========================================
nginx-exporter:
image: nginx/nginx-prometheus-exporter:latest
container_name: math-nginx-exporter
command:
- '-nginx.scrape-uri=http://nginx:80/stub_status'
ports:
- "127.0.0.1:9113:9113"
networks:
- monitoring
- frontend
restart: unless-stopped
# ========================================
# Alertmanager
# ========================================
alertmanager:
image: prom/alertmanager:latest
container_name: math-alertmanager
volumes:
- ./monitoring/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml:ro
- alertmanager_data:/alertmanager
command:
- '--config.file=/etc/alertmanager/alertmanager.yml'
- '--storage.path=/alertmanager'
ports:
- "127.0.0.1:9093:9093"
networks:
- monitoring
restart: unless-stopped
# ========================================
# cAdvisor (Container Advisor)
# ========================================
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
container_name: math-cadvisor
privileged: true
devices:
- /dev/kmsg:/dev/kmsg
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker:/var/lib/docker:ro
- /cgroup:/cgroup:ro
ports:
- "127.0.0.1:8080:8080"
networks:
- monitoring
restart: unless-stopped
volumes:
prometheus_data:
driver: local
grafana_data:
driver: local
alertmanager_data:
driver: local
networks:
monitoring:
driver: bridge
backend:
external: true
frontend:
external: true