4NK_env/scripts/lecoffre_node/collect-blindbit-logs.sh
2025-10-02 15:32:58 +00:00

120 lines
4.8 KiB
Bash
Executable File

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