Files
n8n-workflows/scripts/health-check.sh

103 lines
2.8 KiB
Bash
Raw Normal View History

#!/bin/bash
# N8N Workflows Documentation - Health Check Script
# Usage: ./scripts/health-check.sh [endpoint]
set -euo pipefail
ENDPOINT="${1:-http://localhost:8000}"
MAX_ATTEMPTS=5
TIMEOUT=10
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log() {
echo -e "${BLUE}[$(date '+%Y-%m-%d %H:%M:%S')]${NC} $1"
}
warn() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
error() {
echo -e "${RED}[ERROR]${NC} $1"
}
success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
# Check if curl is available
if ! command -v curl &> /dev/null; then
error "curl is required but not installed"
exit 1
fi
log "Starting health check for $ENDPOINT"
# Test basic connectivity
for attempt in $(seq 1 $MAX_ATTEMPTS); do
log "Health check attempt $attempt/$MAX_ATTEMPTS"
# Test API stats endpoint
if response=$(curl -s -w "%{http_code}" -o /tmp/health_response --connect-timeout $TIMEOUT "$ENDPOINT/api/stats" 2>/dev/null); then
http_code=$(echo "$response" | tail -c 4 | head -c 3)
if [[ "$http_code" == "200" ]]; then
success "API is responding (HTTP $http_code)"
# Parse and display stats
if command -v jq &> /dev/null; then
stats=$(cat /tmp/health_response)
total=$(echo "$stats" | jq -r '.total // "N/A"')
active=$(echo "$stats" | jq -r '.active // "N/A"')
integrations=$(echo "$stats" | jq -r '.unique_integrations // "N/A"')
log "Database status:"
log " - Total workflows: $total"
log " - Active workflows: $active"
log " - Unique integrations: $integrations"
fi
# Test main page
if curl -s -f --connect-timeout $TIMEOUT "$ENDPOINT" > /dev/null; then
success "Main page is accessible"
else
warn "Main page is not accessible"
fi
# Test API documentation
if curl -s -f --connect-timeout $TIMEOUT "$ENDPOINT/docs" > /dev/null; then
success "API documentation is accessible"
else
warn "API documentation is not accessible"
fi
# Clean up
rm -f /tmp/health_response
success "All health checks passed!"
exit 0
else
warn "API returned HTTP $http_code"
fi
else
warn "Failed to connect to $ENDPOINT"
fi
if [[ $attempt -lt $MAX_ATTEMPTS ]]; then
log "Waiting 5 seconds before retry..."
sleep 5
fi
done
# Clean up
rm -f /tmp/health_response
error "Health check failed after $MAX_ATTEMPTS attempts"
exit 1