#!/bin/bash # Monitoring Proactif - Détecte problèmes AVANT qu'ils arrivent # Basé sur l'analyse prédictive de l'historique LOG="/var/log/wevads_proactive.log" echo "======================================== $(date)" >> $LOG # DÉTECTION PROACTIVE 1: Espace disque critique check_disk_space() { USAGE=$(df -h /opt/wevads | awk 'NR==2 {print $5}' | sed 's/%//') if [ "$USAGE" -gt 80 ]; then echo "⚠️ PROACTIVE: Disk space at ${USAGE}%, cleaning logs..." >> $LOG find /var/log -name "*.log" -mtime +7 -delete sudo -u postgres psql -d adx_system -c "DELETE FROM admin.installation_logs WHERE created_at < NOW() - INTERVAL '7 days';" fi } # DÉTECTION PROACTIVE 2: Mémoire serveur check_memory() { MEM_USAGE=$(free | grep Mem | awk '{print int($3/$2 * 100)}') if [ "$MEM_USAGE" -gt 85 ]; then echo "⚠️ PROACTIVE: Memory at ${MEM_USAGE}%, restarting services..." >> $LOG systemctl restart apache2 2>/dev/null || systemctl restart nginx 2>/dev/null fi } # DÉTECTION PROACTIVE 3: Serveurs en erreur prolongée check_error_servers() { ERROR_COUNT=$(sudo -u postgres psql -d adx_system -t -c " SELECT COUNT(*) FROM admin.servers WHERE status='error' AND updated_at < NOW() - INTERVAL '1 hour'; " | tr -d ' ') if [ "$ERROR_COUNT" -gt 0 ]; then echo "⚠️ PROACTIVE: $ERROR_COUNT servers stuck in error, cleaning..." >> $LOG sudo -u postgres psql -d adx_system -c "DELETE FROM admin.servers WHERE status='error' AND updated_at < NOW() - INTERVAL '1 hour';" fi } # DÉTECTION PROACTIVE 4: Quotas approchant limite check_quota_warnings() { CRITICAL=$(sudo -u postgres psql -d adx_system -t -c " SELECT COUNT(*) FROM admin.cloud_quotas WHERE percentage_used > 75; " | tr -d ' ') if [ "$CRITICAL" -gt 0 ]; then echo "⚠️ PROACTIVE: $CRITICAL providers approaching quota limit" >> $LOG # Créer alerte sudo -u postgres psql -d adx_system -c " INSERT INTO admin.cloud_alerts (provider_name, alert_type, severity, title, message, status) SELECT provider_name, 'quota_warning', 'warning', 'Quota Warning', 'Provider approaching quota limit: ' || percentage_used || '%', 'active' FROM admin.cloud_quotas WHERE percentage_used > 75 AND percentage_used < 100; " 2>/dev/null fi } # EXÉCUTION check_disk_space check_memory check_error_servers check_quota_warnings echo "✅ Proactive monitoring completed" >> $LOG