Files
proxmox/scripts/analyze-firefly-issues.sh
defiQUG cb47cce074 Complete markdown files cleanup and organization
- Organized 252 files across project
- Root directory: 187 → 2 files (98.9% reduction)
- Moved configuration guides to docs/04-configuration/
- Moved troubleshooting guides to docs/09-troubleshooting/
- Moved quick start guides to docs/01-getting-started/
- Moved reports to reports/ directory
- Archived temporary files
- Generated comprehensive reports and documentation
- Created maintenance scripts and guides

All files organized according to established standards.
2026-01-06 01:46:25 -08:00

218 lines
8.9 KiB
Bash
Executable File

#!/usr/bin/env bash
# Analyze all Firefly issues for VMIDs 6200 and 6201
# Usage: ./scripts/analyze-firefly-issues.sh
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
# Configuration
R630_02_IP="192.168.11.12"
ML110_IP="192.168.11.10"
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m'
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
log_success() { echo -e "${GREEN}[✓]${NC} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
log_section() { echo -e "\n${CYAN}=== $1 ===${NC}\n"; }
echo ""
log_info "═══════════════════════════════════════════════════════════"
log_info " ANALYZING FIREFLY ISSUES FOR VMIDs 6200 AND 6201"
log_info "═══════════════════════════════════════════════════════════"
echo ""
# Function to analyze a Firefly container
analyze_firefly() {
local vmid=$1
local node_ip=$2
local node_name=$3
log_section "VMID $vmid Analysis ($node_name)"
# Check container status
log_info "1. Container Status:"
STATUS=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${node_ip} \
"pct status $vmid 2>/dev/null | awk '{print \$2}'" || echo "unknown")
if [[ "$STATUS" == "running" ]]; then
log_success " Container is running"
else
log_warn " Container status: $STATUS"
fi
# Get container info
log_info "2. Container Configuration:"
HOSTNAME=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${node_ip} \
"pct config $vmid 2>/dev/null | grep -oP 'hostname=\\K[^,]+' | head -1" || echo "unknown")
IP=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${node_ip} \
"pct config $vmid 2>/dev/null | grep -oP 'ip=\\K[^,]+' | head -1" || echo "unknown")
ROOTFS=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${node_ip} \
"pct config $vmid 2>/dev/null | grep '^rootfs:'" || echo "")
log_info " Hostname: $HOSTNAME"
log_info " IP: $IP"
if [[ -n "$ROOTFS" ]]; then
log_info " Storage: $(echo $ROOTFS | sed 's/^rootfs: //')"
fi
# Check Firefly directory
log_info "3. Firefly Installation:"
FIREFLY_DIR=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${node_ip} \
"pct exec $vmid -- test -d /opt/firefly && echo 'exists' || echo 'missing'" 2>/dev/null || echo "cannot_check")
if [[ "$FIREFLY_DIR" == "exists" ]]; then
log_success " Firefly directory exists: /opt/firefly"
# Check docker-compose.yml
COMPOSE_FILE=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${node_ip} \
"pct exec $vmid -- test -f /opt/firefly/docker-compose.yml && echo 'exists' || echo 'missing'" 2>/dev/null || echo "cannot_check")
if [[ "$COMPOSE_FILE" == "exists" ]]; then
log_success " docker-compose.yml exists"
# Check image configuration
IMAGE=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${node_ip} \
"pct exec $vmid -- grep -i 'image:' /opt/firefly/docker-compose.yml 2>/dev/null | grep -i firefly | head -1 | awk '{print \$2}'" || echo "")
if [[ -n "$IMAGE" ]]; then
log_info " Firefly image: $IMAGE"
fi
else
log_warn " docker-compose.yml missing"
fi
else
log_warn " Firefly directory missing or cannot check"
fi
# Check systemd service
log_info "4. Systemd Service:"
SERVICE_EXISTS=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${node_ip} \
"pct exec $vmid -- systemctl list-unit-files 2>/dev/null | grep -i firefly | head -1" || echo "")
if [[ -n "$SERVICE_EXISTS" ]]; then
log_success " Firefly service unit exists"
SERVICE_STATUS=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${node_ip} \
"pct exec $vmid -- systemctl is-active firefly.service 2>/dev/null || echo 'inactive'" || echo "unknown")
if [[ "$SERVICE_STATUS" == "active" ]]; then
log_success " Service status: active"
else
log_warn " Service status: $SERVICE_STATUS"
# Get error details
ERROR_LOG=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${node_ip} \
"pct exec $vmid -- journalctl -u firefly.service -n 5 --no-pager 2>/dev/null | tail -3" || echo "")
if [[ -n "$ERROR_LOG" ]]; then
log_info " Recent errors:"
echo "$ERROR_LOG" | sed 's/^/ /'
fi
fi
else
log_warn " Firefly service unit not found"
fi
# Check Docker containers
log_info "5. Docker Containers:"
DOCKER_CONTAINERS=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${node_ip} \
"pct exec $vmid -- docker ps -a --format '{{.Names}}\t{{.Status}}' 2>/dev/null | grep -i firefly || echo 'none'" || echo "cannot_check")
if [[ "$DOCKER_CONTAINERS" != "none" ]] && [[ "$DOCKER_CONTAINERS" != "cannot_check" ]]; then
log_info " Firefly containers:"
echo "$DOCKER_CONTAINERS" | while IFS=$'\t' read -r name status; do
if echo "$status" | grep -q "Up"; then
log_success " $name: $status"
else
log_warn " $name: $status"
fi
done
else
log_warn " No Firefly Docker containers found or Docker not accessible"
fi
# Check Docker images
log_info "6. Docker Images:"
DOCKER_IMAGES=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${node_ip} \
"pct exec $vmid -- docker images --format '{{.Repository}}:{{.Tag}}' 2>/dev/null | grep -i firefly || echo 'none'" || echo "cannot_check")
if [[ "$DOCKER_IMAGES" != "none" ]] && [[ "$DOCKER_IMAGES" != "cannot_check" ]]; then
log_success " Firefly images available:"
echo "$DOCKER_IMAGES" | sed 's/^/ /'
else
log_warn " No Firefly Docker images found"
fi
# Check docker-compose status
log_info "7. Docker Compose Status:"
if [[ "$COMPOSE_FILE" == "exists" ]]; then
COMPOSE_STATUS=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${node_ip} \
"pct exec $vmid -- cd /opt/firefly && docker-compose ps 2>/dev/null || echo 'error'" || echo "cannot_check")
if [[ "$COMPOSE_STATUS" != "error" ]] && [[ "$COMPOSE_STATUS" != "cannot_check" ]]; then
log_info " Docker Compose services:"
echo "$COMPOSE_STATUS" | sed 's/^/ /'
else
log_warn " Cannot check docker-compose status"
fi
fi
# Check for common issues
log_info "8. Common Issues Check:"
# Check disk space
DISK_USAGE=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${node_ip} \
"pct exec $vmid -- df -h / 2>/dev/null | tail -1 | awk '{print \$5}' | sed 's/%//'" || echo "unknown")
if [[ "$DISK_USAGE" != "unknown" ]]; then
if [[ $DISK_USAGE -gt 90 ]]; then
log_error " Disk usage: ${DISK_USAGE}% (CRITICAL)"
elif [[ $DISK_USAGE -gt 80 ]]; then
log_warn " Disk usage: ${DISK_USAGE}% (High)"
else
log_success " Disk usage: ${DISK_USAGE}% (OK)"
fi
fi
# Check network connectivity
NETWORK_TEST=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${node_ip} \
"pct exec $vmid -- ping -c 1 -W 2 8.8.8.8 2>/dev/null && echo 'working' || echo 'not_working'" || echo "unknown")
if [[ "$NETWORK_TEST" == "working" ]]; then
log_success " Network connectivity: OK"
else
log_warn " Network connectivity: Issues detected"
fi
echo ""
}
# Analyze VMID 6200 (r630-02)
if ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${R630_02_IP} "pct list 2>/dev/null | grep -q '^6200'"; then
analyze_firefly 6200 "$R630_02_IP" "r630-02"
else
log_warn "VMID 6200 not found on r630-02"
fi
# Analyze VMID 6201 (ml110)
if ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${ML110_IP} "pct list 2>/dev/null | grep -q '^6201'"; then
analyze_firefly 6201 "$ML110_IP" "ml110"
else
log_warn "VMID 6201 not found on ml110"
fi
log_success "═══════════════════════════════════════════════════════════"
log_success " ANALYSIS COMPLETE"
log_success "═══════════════════════════════════════════════════════════"
echo ""