Vitron-Front/scripts/monitor.sh
2026-04-29 01:44:16 +03:30

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