#!/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"