@@ -246,45 +246,48 @@ jobs:
246246 }
247247
248248 # ----------------------------
249- # Canary 모니터링 함수
249+ # Canary 모니터링 함수 ( /login/page 기준, 추후 기준 api 변경)
250250 # ----------------------------
251- monitor_canary() {
251+ monitor_canary() {
252252 local duration=$1
253+ local endpoint="/login/page"
253254
254- echo "모니터링 중 (${duration}초)..."
255-
256- local error_count=0
257- local total_checks=$((duration / 3))
258-
259- for i in $(seq 1 $total_checks); do
260- sleep 3
261-
262- # Health check
263- if ! curl -fsS "http://localhost:${NEW_PORT}/actuator/health" > /dev/null 2>&1; then
264- error_count=$((error_count + 1))
265- echo "Health check 실패 (에러: $error_count)"
266- fi
255+
256+ local host_header
257+ host_header=$(grep -m1 -E "^[[:space:]]*server_name[[:space:]]+" "$UPSTREAM_FILE" \
258+ | awk '{print $2}' | tr -d ';')
267259
268- # 5xx 에러 체크
269- local errors_5xx=$(sudo docker-compose exec nginx sh -c \
270- "tail -n 50 /var/log/nginx/access.log 2>/dev/null | grep -c ' 5[0-9][0-9] ' || echo 0")
260+ # 혹시 못 찾으면 fallback (그래도 dev/prod 둘 다 이걸로는 보통 안전)
261+ if [ -z "$host_header" ]; then
262+ host_header="localhost"
263+ fi
271264
272- if [ "$errors_5xx" -gt 5 ]; then
273- echo "5xx 에러 다수 감지: $errors_5xx"
274- error_count=$((error_count + 2))
275- fi
265+ echo "모니터링 중 (${duration}초)... endpoint=${endpoint}, host=${host_header}"
276266
277- # 에러 누적 시 중단
278- if [ $error_count -gt 3 ]; then
279- echo "에러 과다 발생"
280- return 1
281- fi
267+ local fail_count=0
268+ local total_checks=$((duration / 3))
282269
283- echo -n "."
270+ for i in $(seq 1 $total_checks); do
271+ sleep 3
272+
273+ # 80은 301로 https로 보내므로 200~399면 OK로 처리
274+ local code
275+ code=$(curl -sS -o /dev/null -w "%{http_code}" -H "Host: ${host_header}" "http://localhost${endpoint}" || echo "000")
276+
277+ if [ "$code" -ge 200 ] && [ "$code" -lt 400 ]; then
278+ echo "✓ /login/page OK (code=$code) [$i/$total_checks]"
279+ else
280+ fail_count=$((fail_count + 1))
281+ echo "❌ /login/page FAIL (code=$code) (fail=$fail_count) [$i/$total_checks]"
282+ fi
283+
284+ if [ "$fail_count" -gt 3 ]; then
285+ echo "에러 과다 발생 (/login/page 기준)"
286+ return 1
287+ fi
284288 done
285- echo ""
286289
287- echo "모니터링 완료"
290+ echo "모니터링 완료 (/login/page 기준) "
288291 return 0
289292 }
290293
0 commit comments