diff --git a/scripts/healthcheck.sh b/scripts/healthcheck.sh index e69de29..a9346d7 100644 --- a/scripts/healthcheck.sh +++ b/scripts/healthcheck.sh @@ -0,0 +1,53 @@ +#!/bin/bash +set -euo pipefail + +# NAS 내부 헬스체크용 (localhost 사용) +# 포트: backend(18000), travel-proxy(19000), frontend(8080) + +# Colors +GREEN='\033[0;32m' +RED='\033[0;31m' +NC='\033[0m' + +echo "======================================" +echo " Starting Health Check..." +echo "======================================" + +check_url() { + local name="$1" + local url="$2" + + # HTTP 상태 코드만 가져옴 (타임아웃 5초) + status=$(curl -o /dev/null -s -w "%{http_code}" --max-time 5 "$url" || echo "FAIL") + + if [[ "$status" == "200" ]]; then + echo -e "[${GREEN}OK${NC}] $name ($url) -> $status" + else + echo -e "[${RED}XX${NC}] $name ($url) -> $status" + # 하나라도 실패하면 exit 1 (CI/CD용) + # exit 1 + fi +} + +echo "" +echo "--- 1. Backend Service ---" +check_url "Backend Health" "http://localhost:18000/health" +check_url "Lotto Latest" "http://localhost:18000/api/lotto/latest" +check_url "Stats API" "http://localhost:18000/api/lotto/stats" + +echo "" +echo "--- 2. Travel Proxy Service ---" +# Travel Proxy는 Main.py에서 루트(/) 엔드포인트가 없을 수 있어서 regions 체크 +check_url "Travel Regions" "http://localhost:19000/api/travel/regions" + +echo "" +echo "--- 3. Frontend (Nginx) ---" +# 외부 포트 8080으로 접속 테스트 +check_url "Frontend Home" "http://localhost:8080" +# Nginx가 Backend로 잘 프록시하는지 체크 +check_url "Nginx->Backend Proxy" "http://localhost:8080/api/health" + +echo "" +echo "======================================" +echo " Health Check Completed." +echo "======================================"