65 lines
2.5 KiB
Bash
Executable File
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
|