add diagnose

This commit is contained in:
user 2025-07-05 13:26:14 +03:00
parent 19805ff308
commit 3613ed4962
1 changed files with 190 additions and 0 deletions

190
diagnose.sh Executable file
View File

@ -0,0 +1,190 @@
#!/bin/bash
# MY Uploader Bot - Диагностика 502 ошибки
# Автоматическая диагностика проблем с доступностью
DOMAIN="$1"
if [ -z "$DOMAIN" ]; then
echo "Использование: $0 <domain>"
echo "Пример: $0 my-public-node-3.projscale.dev"
exit 1
fi
MAIN_PROJECT_DIR="/home/myuploader/uploader-bot"
COMPOSE_FILE="docker-compose.production.yml"
# Цвета
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
echo -e "${BLUE}========================================${NC}"
echo -e "${BLUE}🔍 MY UPLOADER BOT - ДИАГНОСТИКА 502${NC}"
echo -e "${BLUE}========================================${NC}"
echo ""
cd "$MAIN_PROJECT_DIR" 2>/dev/null || {
echo -e "${RED}Не найдена директория проекта: $MAIN_PROJECT_DIR${NC}"
exit 1
}
echo -e "${YELLOW}1. 🐳 Проверка статуса Docker контейнеров${NC}"
echo "----------------------------------------"
docker-compose -f "$COMPOSE_FILE" ps
echo ""
echo -e "${YELLOW}2. 🔍 Проверка работающих контейнеров${NC}"
echo "----------------------------------------"
RUNNING_CONTAINERS=$(docker-compose -f "$COMPOSE_FILE" ps --services --filter "status=running")
if [ -z "$RUNNING_CONTAINERS" ]; then
echo -e "${RED}НЕТ РАБОТАЮЩИХ КОНТЕЙНЕРОВ!${NC}"
echo -e "${YELLOW}Попробуйте запустить: sudo ./start.sh${NC}"
exit 1
else
echo -e "${GREEN}✅ Работающие контейнеры:${NC}"
echo "$RUNNING_CONTAINERS"
fi
echo ""
echo -e "${YELLOW}3. 🌐 Проверка доступности локальных портов${NC}"
echo "----------------------------------------"
echo -n "Порт 15100 (API): "
if curl -f -s http://localhost:15100/health > /dev/null 2>&1; then
echo -e "${GREEN}✅ Доступен${NC}"
API_STATUS="OK"
else
echo -e "${RED}❌ Недоступен${NC}"
API_STATUS="FAIL"
fi
echo -n "Порт 3000 (Web2-client): "
if curl -f -s http://localhost:3000/health > /dev/null 2>&1; then
echo -e "${GREEN}✅ Доступен${NC}"
WEB2_STATUS="OK"
else
echo -e "${YELLOW}⚠️ Недоступен (возможно, обычная нода)${NC}"
WEB2_STATUS="SKIP"
fi
echo -n "Порт 80 (Nginx): "
if curl -f -s http://localhost > /dev/null 2>&1; then
echo -e "${GREEN}✅ Доступен${NC}"
NGINX_STATUS="OK"
else
echo -e "${RED}❌ Недоступен${NC}"
NGINX_STATUS="FAIL"
fi
echo ""
echo -e "${YELLOW}4. 🗄️ Проверка базы данных${NC}"
echo "----------------------------------------"
echo -n "PostgreSQL: "
if docker-compose -f "$COMPOSE_FILE" exec -T postgres pg_isready -U my_user -d my_uploader_db 2>/dev/null; then
echo -e "${GREEN}✅ Доступна${NC}"
DB_STATUS="OK"
else
echo -e "${RED}❌ Недоступна${NC}"
DB_STATUS="FAIL"
fi
echo -n "Redis: "
if docker-compose -f "$COMPOSE_FILE" exec -T redis redis-cli ping 2>/dev/null | grep -q PONG; then
echo -e "${GREEN}✅ Доступен${NC}"
REDIS_STATUS="OK"
else
echo -e "${RED}❌ Недоступен${NC}"
REDIS_STATUS="FAIL"
fi
echo ""
echo -e "${YELLOW}5. 🔍 Последние логи основного приложения${NC}"
echo "----------------------------------------"
echo "Последние 10 строк логов app контейнера:"
docker-compose -f "$COMPOSE_FILE" logs --tail=10 app
echo ""
echo -e "${YELLOW}6. 🔍 Проверка nginx конфигурации${NC}"
echo "----------------------------------------"
echo -n "Nginx config test: "
if docker-compose -f "$COMPOSE_FILE" exec -T nginx nginx -t 2>/dev/null; then
echo -e "${GREEN}✅ Конфигурация корректна${NC}"
NGINX_CONFIG="OK"
else
echo -e "${RED}❌ Ошибка в конфигурации${NC}"
NGINX_CONFIG="FAIL"
echo "Детали ошибки:"
docker-compose -f "$COMPOSE_FILE" exec -T nginx nginx -t
fi
echo ""
echo -e "${YELLOW}7. 🌐 Проверка внешней доступности${NC}"
echo "----------------------------------------"
echo -n "HTTPS доступность ($DOMAIN): "
if curl -f -s -k "https://$DOMAIN/health" > /dev/null 2>&1; then
echo -e "${GREEN}✅ Доступен${NC}"
HTTPS_STATUS="OK"
else
echo -e "${RED}❌ Недоступен (502 ошибка)${NC}"
HTTPS_STATUS="FAIL"
fi
echo ""
echo -e "${BLUE}========================================${NC}"
echo -e "${BLUE}📊 СВОДКА ДИАГНОСТИКИ${NC}"
echo -e "${BLUE}========================================${NC}"
echo -e "API (localhost:15100): $([ "$API_STATUS" = "OK" ] && echo -e "${GREEN}" || echo -e "${RED}") $API_STATUS${NC}"
echo -e "Web2-client (localhost:3000): $([ "$WEB2_STATUS" = "OK" ] && echo -e "${GREEN}" || [ "$WEB2_STATUS" = "SKIP" ] && echo -e "${YELLOW}⚠️" || echo -e "${RED}") $WEB2_STATUS${NC}"
echo -e "Nginx (localhost:80): $([ "$NGINX_STATUS" = "OK" ] && echo -e "${GREEN}" || echo -e "${RED}") $NGINX_STATUS${NC}"
echo -e "PostgreSQL: $([ "$DB_STATUS" = "OK" ] && echo -e "${GREEN}" || echo -e "${RED}") $DB_STATUS${NC}"
echo -e "Redis: $([ "$REDIS_STATUS" = "OK" ] && echo -e "${GREEN}" || echo -e "${RED}") $REDIS_STATUS${NC}"
echo -e "Nginx Config: $([ "$NGINX_CONFIG" = "OK" ] && echo -e "${GREEN}" || echo -e "${RED}") $NGINX_CONFIG${NC}"
echo -e "HTTPS ($DOMAIN): $([ "$HTTPS_STATUS" = "OK" ] && echo -e "${GREEN}" || echo -e "${RED}") $HTTPS_STATUS${NC}"
echo ""
echo -e "${BLUE}🛠️ РЕКОМЕНДАЦИИ:${NC}"
if [ "$API_STATUS" != "OK" ]; then
echo -e "${RED}❌ Основная проблема: API приложение не работает${NC}"
echo -e "${YELLOW}Решение:${NC}"
echo "1. Проверьте логи приложения: sudo docker-compose -f $COMPOSE_FILE logs app"
echo "2. Перезапустите приложение: sudo docker-compose -f $COMPOSE_FILE restart app"
echo "3. Проверьте переменные окружения в .env файле"
echo ""
elif [ "$NGINX_CONFIG" != "OK" ]; then
echo -e "${RED}❌ Проблема в конфигурации Nginx${NC}"
echo -e "${YELLOW}Решение:${NC}"
echo "1. Проверьте конфигурацию nginx"
echo "2. Перезапустите nginx: sudo docker-compose -f $COMPOSE_FILE restart nginx"
echo ""
elif [ "$DB_STATUS" != "OK" ] || [ "$REDIS_STATUS" != "OK" ]; then
echo -e "${RED}❌ Проблема с базой данных или Redis${NC}"
echo -e "${YELLOW}Решение:${NC}"
echo "1. Перезапустите сервисы: sudo docker-compose -f $COMPOSE_FILE restart postgres redis"
echo "2. Проверьте логи: sudo docker-compose -f $COMPOSE_FILE logs postgres redis"
echo ""
else
echo -e "${GREEN}🔍 Все локальные сервисы работают корректно${NC}"
echo -e "${YELLOW}Возможные причины 502 ошибки:${NC}"
echo "1. Приложение еще запускается (подождите 2-3 минуты)"
echo "2. Проблема с SSL сертификатом"
echo "3. Неправильная конфигурация домена"
echo ""
echo -e "${BLUE}Дополнительная диагностика:${NC}"
echo "sudo docker-compose -f $COMPOSE_FILE logs -f app"
fi
echo -e "${BLUE}🔧 Быстрые команды для исправления:${NC}"
echo "# Полная перезагрузка всех сервисов:"
echo "sudo docker-compose -f $COMPOSE_FILE down && sudo docker-compose -f $COMPOSE_FILE up -d"
echo ""
echo "# Просмотр логов в реальном времени:"
echo "sudo docker-compose -f $COMPOSE_FILE logs -f"
echo ""
echo "# Перезапуск только основного приложения:"
echo "sudo docker-compose -f $COMPOSE_FILE restart app"
echo ""
echo "# Проверка статуса через 2 минуты:"
echo "sleep 120 && curl -v https://$DOMAIN/health"