#!/bin/bash # Script de monitoreo para el despliegue de Francia Ocupada # Uso: ./monitor-deploy.sh echo "🔍 Monitor de Despliegue - Francia Ocupada" echo "==========================================" echo "" # Colores para output GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Función para verificar estado de contenedores check_containers() { echo -e "${YELLOW}📦 Estado de Contenedores:${NC}" docker compose -f docker-compose_prod.yml ps echo "" } # Función para verificar logs check_logs() { echo -e "${YELLOW}📋 Logs Recientes (últimas 20 líneas):${NC}" echo "" echo "--- CLIENT ---" docker compose -f docker-compose_prod.yml logs --tail=20 client 2>/dev/null || echo "Cliente no disponible" echo "" echo "--- SERVER ---" docker compose -f docker-compose_prod.yml logs --tail=20 server 2>/dev/null || echo "Servidor no disponible" echo "" } # Función para verificar conectividad check_connectivity() { echo -e "${YELLOW}🌐 Verificación de Conectividad:${NC}" # Verificar puerto 3000 (cliente) if nc -z localhost 3000 2>/dev/null; then echo -e "${GREEN}✅ Puerto 3000 (Cliente): ABIERTO${NC}" else echo -e "${RED}❌ Puerto 3000 (Cliente): CERRADO${NC}" fi # Verificar puerto 4000 (servidor) if nc -z localhost 4000 2>/dev/null; then echo -e "${GREEN}✅ Puerto 4000 (Servidor): ABIERTO${NC}" else echo -e "${RED}❌ Puerto 4000 (Servidor): CERRADO${NC}" fi # Verificar puerto 5432 (base de datos) if nc -z localhost 5432 2>/dev/null; then echo -e "${GREEN}✅ Puerto 5432 (Base de Datos): ABIERTO${NC}" else echo -e "${RED}❌ Puerto 5432 (Base de Datos): CERRADO${NC}" fi echo "" } # Función para verificar uso de recursos check_resources() { echo -e "${YELLOW}💻 Uso de Recursos:${NC}" docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}" \ $(docker compose -f docker-compose_prod.yml ps -q 2>/dev/null) 2>/dev/null || echo "No hay contenedores corriendo" echo "" } # Menú principal while true; do echo "" echo "Selecciona una opción:" echo "1) Ver estado de contenedores" echo "2) Ver logs recientes" echo "3) Verificar conectividad" echo "4) Ver uso de recursos" echo "5) Monitoreo completo" echo "6) Logs en tiempo real (Ctrl+C para salir)" echo "7) Reiniciar servicios" echo "8) Detener servicios" echo "9) Salir" echo "" read -p "Opción: " option case $option in 1) check_containers ;; 2) check_logs ;; 3) check_connectivity ;; 4) check_resources ;; 5) check_containers check_connectivity check_resources check_logs ;; 6) echo "📡 Logs en tiempo real (Ctrl+C para detener)..." docker compose -f docker-compose_prod.yml logs -f ;; 7) echo "🔄 Reiniciando servicios..." docker compose -f docker-compose_prod.yml restart echo -e "${GREEN}✅ Servicios reiniciados${NC}" ;; 8) read -p "¿Estás seguro de que quieres detener los servicios? (s/n): " confirm if [ "$confirm" = "s" ]; then echo "🛑 Deteniendo servicios..." docker compose -f docker-compose_prod.yml down echo -e "${GREEN}✅ Servicios detenidos${NC}" fi ;; 9) echo "👋 ¡Hasta luego!" exit 0 ;; *) echo -e "${RED}❌ Opción inválida${NC}" ;; esac done