Files
wevads-platform/scripts/proactive_monitor.sh
2026-02-26 04:53:11 +01:00

65 lines
2.5 KiB
Bash
Executable File

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