#!/bin/bash # Script de collecte des logs BlindBit Oracle # Collecte les logs Docker et les sauvegarde dans le répertoire centralisé set -e # Configuration LOG_DIR="/home/debian/4NK_env/logs/blindbit" CONTAINER_NAME="blindbit-oracle" TIMESTAMP=$(date +"%Y%m%d_%H%M%S") # Couleurs RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' echo -e "${BLUE}=== Collecte des logs BlindBit Oracle ===${NC}" # Vérifier que le répertoire de logs existe if [ ! -d "$LOG_DIR" ]; then echo -e "${YELLOW}Création du répertoire de logs: $LOG_DIR${NC}" mkdir -p "$LOG_DIR" fi # Vérifier que le conteneur existe if ! docker ps -a --format '{{.Names}}' | grep -q "$CONTAINER_NAME"; then echo -e "${RED}Erreur: Le conteneur $CONTAINER_NAME n'existe pas${NC}" exit 1 fi # Collecter les logs Docker echo -e "${BLUE}Collecte des logs Docker...${NC}" docker logs "$CONTAINER_NAME" > "$LOG_DIR/blindbit_${TIMESTAMP}.log" 2>&1 # Collecter les logs de configuration echo -e "${BLUE}Collecte des logs de configuration...${NC}" docker exec "$CONTAINER_NAME" cat /root/.blindbit-oracle/blindbit.toml > "$LOG_DIR/config_${TIMESTAMP}.toml" 2>/dev/null || echo "Configuration non accessible" # Collecter les informations système echo -e "${BLUE}Collecte des informations système...${NC}" { echo "=== Informations système BlindBit Oracle ===" echo "Date: $(date)" echo "Conteneur: $CONTAINER_NAME" echo "Image: $(docker inspect --format='{{.Config.Image}}' "$CONTAINER_NAME")" echo "Statut: $(docker inspect --format='{{.State.Status}}' "$CONTAINER_NAME")" echo "Ports: $(docker inspect --format='{{range .NetworkSettings.Ports}}{{.}} {{end}}' "$CONTAINER_NAME")" echo "Réseau: $(docker inspect --format='{{range .NetworkSettings.Networks}}{{.NetworkID}} {{end}}' "$CONTAINER_NAME")" echo "" echo "=== Ports d'écoute ===" docker exec "$CONTAINER_NAME" netstat -tlnp 2>/dev/null || echo "netstat non disponible" echo "" echo "=== Processus en cours ===" docker exec "$CONTAINER_NAME" ps aux 2>/dev/null || echo "ps non disponible" echo "" echo "=== Utilisation disque ===" docker exec "$CONTAINER_NAME" df -h 2>/dev/null || echo "df non disponible" } > "$LOG_DIR/system_info_${TIMESTAMP}.txt" # Collecter les logs de synchronisation echo -e "${BLUE}Collecte des logs de synchronisation...${NC}" docker logs "$CONTAINER_NAME" 2>&1 | grep -E "(sync|Sync|block|Block|tweak|Tweak)" > "$LOG_DIR/sync_${TIMESTAMP}.log" || echo "Aucun log de synchronisation trouvé" # Collecter les logs d'erreurs echo -e "${BLUE}Collecte des logs d'erreurs...${NC}" docker logs "$CONTAINER_NAME" 2>&1 | grep -iE "(error|Error|ERROR|warning|Warning|WARNING)" > "$LOG_DIR/errors_${TIMESTAMP}.log" || echo "Aucune erreur trouvée" # Collecter les logs d'API echo -e "${BLUE}Collecte des logs d'API...${NC}" docker logs "$CONTAINER_NAME" 2>&1 | grep -E "(GET|POST|PUT|DELETE|HTTP)" > "$LOG_DIR/api_${TIMESTAMP}.log" || echo "Aucun log d'API trouvé" # Test de l'API echo -e "${BLUE}Test de l'API...${NC}" { echo "=== Test API BlindBit Oracle ===" echo "Date: $(date)" echo "" echo "Test endpoint /tweaks/1:" curl -s -w "HTTP Code: %{http_code}\nTime: %{time_total}s\n" http://localhost:8000/tweaks/1 || echo "API non accessible" echo "" echo "Test endpoint /info:" curl -s -w "HTTP Code: %{http_code}\nTime: %{time_total}s\n" http://localhost:8000/info || echo "API info non accessible" } > "$LOG_DIR/api_test_${TIMESTAMP}.txt" # Nettoyer les anciens logs (garder seulement les 10 derniers) echo -e "${BLUE}Nettoyage des anciens logs...${NC}" find "$LOG_DIR" -name "blindbit_*.log" -type f | sort | head -n -10 | xargs rm -f 2>/dev/null || true find "$LOG_DIR" -name "config_*.toml" -type f | sort | head -n -10 | xargs rm -f 2>/dev/null || true find "$LOG_DIR" -name "system_info_*.txt" -type f | sort | head -n -10 | xargs rm -f 2>/dev/null || true find "$LOG_DIR" -name "sync_*.log" -type f | sort | head -n -10 | xargs rm -f 2>/dev/null || true find "$LOG_DIR" -name "errors_*.log" -type f | sort | head -n -10 | xargs rm -f 2>/dev/null || true find "$LOG_DIR" -name "api_*.log" -type f | sort | head -n -10 | xargs rm -f 2>/dev/null || true find "$LOG_DIR" -name "api_test_*.txt" -type f | sort | head -n -10 | xargs rm -f 2>/dev/null || true echo -e "${GREEN}=== Collecte terminée ===${NC}" echo -e "${GREEN}Logs sauvegardés dans: $LOG_DIR${NC}" echo -e "${GREEN}Fichiers créés:${NC}" ls -la "$LOG_DIR"/*_${TIMESTAMP}.* echo -e "${BLUE}=== Résumé ===${NC}" echo "Logs Docker: blindbit_${TIMESTAMP}.log" echo "Configuration: config_${TIMESTAMP}.toml" echo "Infos système: system_info_${TIMESTAMP}.txt" echo "Synchronisation: sync_${TIMESTAMP}.log" echo "Erreurs: errors_${TIMESTAMP}.log" echo "API: api_${TIMESTAMP}.log" echo "Test API: api_test_${TIMESTAMP}.txt"