107 lines
3.2 KiB
Bash
107 lines
3.2 KiB
Bash
#!/bin/bash
|
|
|
|
# Production Monitoring Script
|
|
# Usage: ./scripts/monitor.sh [--continuous]
|
|
|
|
set -e
|
|
|
|
CONTINUOUS=false
|
|
if [ "$1" = "--continuous" ]; then
|
|
CONTINUOUS=true
|
|
fi
|
|
|
|
check_status() {
|
|
echo "🔍 PRODUCTION HEALTH CHECK $(date)"
|
|
echo "==============================================="
|
|
|
|
# Check running containers
|
|
echo "📦 Container Status:"
|
|
if docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep vitron; then
|
|
echo "✅ Containers running:"
|
|
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep vitron
|
|
else
|
|
echo "❌ No containers running!"
|
|
fi
|
|
echo
|
|
|
|
# Check memory usage
|
|
echo "💾 Memory Usage:"
|
|
docker stats --no-stream --format "table {{.Name}}\t{{.MemUsage}}\t{{.MemPerc}}" | head -1
|
|
docker stats --no-stream --format "table {{.Name}}\t{{.MemUsage}}\t{{.MemPerc}}" | grep vitron || echo "No container stats available"
|
|
echo
|
|
|
|
# Check disk usage
|
|
echo "💽 Disk Usage:"
|
|
df -h / | tail -1 | awk '{print "Root: " $3 "/" $2 " (" $5 " used)"}'
|
|
docker system df | grep -E "(REPOSITORY|Images|Containers)" || true
|
|
echo
|
|
|
|
# Health check
|
|
echo "🏥 Application Health:"
|
|
for container in $(docker ps --format "{{.Names}}" | grep vitron); do
|
|
if docker exec "$container" wget --no-verbose --tries=1 --spider --timeout=5 http://localhost:3000/ 2>/dev/null; then
|
|
echo "✅ $container: Healthy"
|
|
else
|
|
echo "❌ $container: Unhealthy"
|
|
fi
|
|
done
|
|
echo
|
|
|
|
# External connectivity
|
|
echo "🌐 External Connectivity:"
|
|
if curl -f -s --max-time 10 https://vitrown.com/ > /dev/null; then
|
|
echo "✅ https://vitrown.com/ - Accessible"
|
|
else
|
|
echo "❌ https://vitrown.com/ - Not accessible"
|
|
fi
|
|
|
|
if curl -f -s --max-time 10 https://api.prod.vitrown.com/api/health/ > /dev/null 2>&1; then
|
|
echo "✅ https://api.prod.vitrown.com/api/health/ - Accessible"
|
|
else
|
|
echo "⚠️ https://api.prod.vitrown.com/api/health/ - Check API server"
|
|
fi
|
|
echo
|
|
|
|
# Check Traefik status
|
|
echo "🔀 Traefik Status:"
|
|
if docker ps | grep -q traefik; then
|
|
echo "✅ Traefik proxy running"
|
|
else
|
|
echo "❌ Traefik proxy not running!"
|
|
fi
|
|
echo
|
|
|
|
# Recent logs (last 10 lines)
|
|
echo "📋 Recent Activity (last 10 lines):"
|
|
docker-compose -f docker-compose.yml logs --tail=10 2>/dev/null || echo "No logs available"
|
|
echo
|
|
|
|
# Backup status
|
|
echo "💾 Backup Status:"
|
|
BACKUP_COUNT=$(docker images | grep -c "vitron-frontend-backup" || echo "0")
|
|
echo "Available backups: $BACKUP_COUNT"
|
|
if [ "$BACKUP_COUNT" -gt 0 ]; then
|
|
echo "Latest backup:"
|
|
docker images | grep "vitron-frontend-backup" | head -1
|
|
fi
|
|
echo
|
|
|
|
echo "==============================================="
|
|
echo "✅ Health check completed at $(date)"
|
|
echo
|
|
}
|
|
|
|
# Run check
|
|
check_status
|
|
|
|
# Continuous monitoring if requested
|
|
if [ "$CONTINUOUS" = true ]; then
|
|
echo "🔄 Continuous monitoring enabled (every 60 seconds)"
|
|
echo "Press Ctrl+C to stop"
|
|
echo
|
|
|
|
while true; do
|
|
sleep 60
|
|
check_status
|
|
done
|
|
fi |