Skip to content

Commit 2743e23

Browse files
committed
[OFFNAL-27/refactor][jjaeroong]: cicd 모니터링 수정
1 parent 247bfd0 commit 2743e23

File tree

1 file changed

+33
-30
lines changed

1 file changed

+33
-30
lines changed

.github/workflows/deploy-prod.yml

Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)