#!/bin/bash
# Script de verificación de salud del sistema
# Ejecuta cada hora

set -e

echo "[$(date '+%Y-%m-%d %H:%M:%S')] Verificando salud del sistema..."

# URLs a verificar
APP_URL=${APP_URL:-http://app/health.php}
REDIS_HOST=${REDIS_HOST:-redis}

# 1. Verificar aplicación web
echo -n "[$(date '+%Y-%m-%d %H:%M:%S')] Verificando aplicación web... "
if curl -s -f "$APP_URL" > /dev/null 2>&1; then
    echo "✅ OK"
else
    echo "❌ FALLO"
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] ⚠️  La aplicación web no responde"
fi

# 2. Verificar base de datos
echo -n "[$(date '+%Y-%m-%d %H:%M:%S')] Verificando base de datos... "
if mariadb-admin ping -h "${DB_HOST:-mysql}" -u "${DB_USER}" --password="${DB_PASS}" --silent > /dev/null 2>&1; then
    echo "✅ OK"
else
    echo "❌ FALLO"
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] ⚠️  La base de datos no responde"
fi

# 3. Verificar Redis
echo -n "[$(date '+%Y-%m-%d %H:%M:%S')] Verificando Redis... "
if echo "PING" | nc -w 2 "$REDIS_HOST" 6379 | grep -q PONG 2>/dev/null; then
    echo "✅ OK"
else
    echo "❌ FALLO"
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] ⚠️  Redis no responde"
fi

# 4. Verificar espacio en disco
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Verificando espacio en disco..."
df -h / | tail -1 | awk '{print "[" strftime("%Y-%m-%d %H:%M:%S") "] Espacio usado: " $5 " (" $3 " de " $2 ")"}'

# Advertencia si el espacio usado es mayor al 85%
DISK_USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$DISK_USAGE" -gt 85 ]; then
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] ⚠️  ADVERTENCIA: Espacio en disco mayor al 85%"
fi

# 5. Verificar memoria
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Uso de memoria:"
free -h | grep -E "Mem|Swap" || echo "No disponible en este contenedor"

echo "[$(date '+%Y-%m-%d %H:%M:%S')] Verificación completada"
