[Fix/#56] 스캐너·봇으로 인한 401 로그 노이즈 정리 - #57
Conversation
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: billilge/stream-server/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (2)
Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthrough
Changes로그 노이즈 필터링
Priority: ➖ Normal Estimated code review effort: 2 (Simple) | ~10 minutes Change: Bug fix · Severity of issue fixed: Medium Merge Risk: ⚪ Minimal · up to 인증 실패와 지정된 노이즈 경로의 로그만 줄이고 응답 동작은 유지하므로, 현재 병합을 막을 위험은 없습니다. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Comment |
#️⃣연관된 이슈
🎯 해결하려는 문제가 무엇인가요?
인터넷에 노출된 서버에 봇·스캐너가
GET /,/robots.txt,/favicon.ico등을 상시 요청한다. 이 요청들은 인증 토큰이 없어 전부 401로 차단되지만, 요청 1건당GlobalExceptionHandler의 WARN 1줄 +AccessLogFilter의 INFO 1줄이 쌓여 로그 노이즈가 심하다.❓ 왜 해결해야 하나요?
실제 위협은 없는데(이미 401로 차단) WARN 레벨 로그가 대량으로 남아 정작 봐야 할 경고가 묻힌다. 인터넷 노출 서버에서 인증 실패는 상시 발생하는 정상 트래픽에 가깝다.
⭐ 어떻게 해결했나요?
GlobalExceptionHandler.handleBusiness: status가 401(ErrorStatus.UNAUTHORIZED)이면 WARN → DEBUG. 403 등 나머지 도메인 예외는 WARN 유지.LoggingExclusions:/,/robots.txt,/favicon.ico를 노이즈 경로로 추가해 액세스 로그·MDC 대상에서 제외(헬스체크와 동일한 취급).prod 로그 레벨이
kr.ac.kookmin: INFO라 401 DEBUG는 출력되지 않고, dev는DEBUG라 로컬 디버깅 시에는 그대로 보인다.🧩 이 PR의 한계 & 트레이드오프
/.env,/wp-login.php같은 리스트 밖 스캐너 경로는 여전히 401 + 액세스 로그 1줄이 남는다. 필요 시NOISE_PATHS에 추가한다.⛓️ 기존 기능에 미치는 영향
LoggingExclusions는MdcFilter·AccessLogFilter가 공유하므로 추가된 경로는 MDC도 붙지 않는다.🔀 Edge Case & 실패 시나리오
📋 검토한 대안과 선택 이유
/favicon.ico등을permitAll로 푸는 방안: 서빙할 정적 리소스가 없어 통과 후 404 또는 catch-all 예외 핸들러를 타 500 + ERROR 스택트레이스로 악화될 수 있어 배제.💬 리뷰 포인트
[c]401 → DEBUG 하향 범위가 적절한지(403 등은 WARN 유지)[a]NOISE_PATHS초기 경로 구성이 적절한지