chitfund/scripts/diagnose.sh

124 lines
4.4 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# LuckyChit Diagnostic Script
# Checks everything and reports issues
echo "🔍 LuckyChit Diagnostic Report"
echo "==============================="
echo ""
# PM2 Status
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "1⃣ PM2 Process Status"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
pm2 status
echo ""
# Port Check
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "2⃣ Port Listening Check"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
PORTS=$(netstat -tulpn 2>/dev/null | grep -E '(3000|8080)')
if [ -z "$PORTS" ]; then
echo "❌ No processes listening on ports 3000 or 8080"
else
echo "✅ Ports are listening:"
echo "$PORTS"
fi
echo ""
# Backend Health
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "3⃣ Backend Health Check"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
BACKEND=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/health 2>/dev/null)
if [ "$BACKEND" = "200" ]; then
echo "✅ Backend responding: HTTP $BACKEND"
curl -s http://localhost:3000/health | head -n 3
else
echo "❌ Backend not responding: HTTP $BACKEND"
fi
echo ""
# Frontend Health
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "4⃣ Frontend Health Check"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
FRONTEND=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8080 2>/dev/null)
if [ "$FRONTEND" = "200" ]; then
echo "✅ Frontend responding: HTTP $FRONTEND"
else
echo "❌ Frontend not responding: HTTP $FRONTEND"
fi
echo ""
# Disk Space
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "5⃣ Disk Space"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
df -h | grep -E '(Filesystem|/$|/home)'
echo ""
# Memory
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "6⃣ Memory Usage"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
free -h
echo ""
# PostgreSQL
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "7⃣ PostgreSQL Status"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
POSTGRES=$(sudo systemctl is-active postgresql 2>/dev/null)
if [ "$POSTGRES" = "active" ]; then
echo "✅ PostgreSQL is running"
else
echo "❌ PostgreSQL is not running"
fi
echo ""
# Recent Errors
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "8⃣ Recent PM2 Errors"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
pm2 logs --err --lines 10 --nostream 2>/dev/null || echo "No recent errors"
echo ""
# Summary
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "📋 SUMMARY & RECOMMENDATIONS"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
PM2_COUNT=$(pm2 jlist 2>/dev/null | grep -c '"pm2_env"')
if [ "$PM2_COUNT" -lt 2 ]; then
echo "⚠️ PM2 processes missing or down"
echo " FIX: pm2 restart all OR ./scripts/fix-502.sh"
fi
if [ -z "$PORTS" ]; then
echo "⚠️ No processes listening on required ports"
echo " FIX: ./scripts/fix-502.sh"
fi
if [ "$BACKEND" != "200" ]; then
echo "⚠️ Backend not responding"
echo " FIX: pm2 restart luckychit-api"
echo " CHECK: pm2 logs luckychit-api"
fi
if [ "$FRONTEND" != "200" ]; then
echo "⚠️ Frontend not responding"
echo " FIX: pm2 restart luckychit-frontend"
fi
if [ "$POSTGRES" != "active" ]; then
echo "⚠️ PostgreSQL not running"
echo " FIX: sudo systemctl start postgresql"
fi
echo ""
echo "📚 See TROUBLESHOOTING.md for detailed fixes"