로그와 장애 진단

Web Server, WAS, Application, DB 로그를 따라 502, 404, 500 같은 장애를 좁히는 순서를 정리한다.


로그로 따라가는 요청

Client
  -> Web Server log
  -> WAS log
  -> Application log
  -> DB log

진단의 기준

장애 진단은 “어느 계층의 로그까지 요청이 도달했는가”를 확인하면서 원인 범위를 좁히는 과정이다.

로그 지도

계층대표 로그무엇을 보는가
Web ServerNginx/Apache access log요청 도착 여부, status, 응답 시간
Web ServerNginx/Apache error logupstream 오류, TLS 오류, permission 오류
WAScatalina.out, server logTomcat 기동, 배포, Connector, JVM 오류
Applicationlogback/log4j 등비즈니스 예외, SQL 예외, 외부 API 오류
DBDB error/slow logconnection, lock, slow query
OSjournal, syslog/messagesservice, OOM, disk, permission

기본 진단 순서

  1. 사용자가 호출한 URL, 시간, 증상을 확인한다.
  2. Web Server access log에서 해당 요청이 있는지 본다.
  3. status code와 response time을 확인한다.
  4. Web Server error log에서 upstream/TLS/permission 오류를 본다.
  5. WAS access/application log에서 같은 시간대 흔적을 찾는다.
  6. 애플리케이션 예외와 DB 연결 오류를 확인한다.
  7. 필요하면 OS 리소스와 DB 상태까지 내려간다.

상태 코드별 접근

404

요청 경로를 찾지 못한 상태다.

확인 지점예시
Web Server pathNginx location, Apache ProxyPass
rewrite경로가 바뀌고 있지 않은가
WAS Context/app, /admin, / 매핑
배포 파일ROOT.war, sample.war

500

애플리케이션 내부 예외일 가능성이 높다.

확인 지점예시
application logstack trace, business exception
DBSQL exception, connection pool
환경 설정env, secret, file path
권한파일/디렉터리 접근 권한

502

Web Server가 backend로부터 정상 응답을 받지 못한 상태다.

확인 지점예시
WAS processTomcat이 떠 있는가
WAS port8080 listen 중인가
upstreamproxy_pass 주소가 맞는가
network방화벽, 보안 그룹
timeoutWAS 응답이 너무 느린가

504

Web Server가 backend 응답을 기다리다 timeout난 상태다.

확인 지점예시
WAS threadthread 고갈
DB queryslow query, lock
external API외부 연동 지연
timeout 설정proxy/read/connect timeout

502, 503, 504를 실제 대응 순서로 좁힐 때는 502/503/504 장애 런북을 함께 본다.

명령어 예시

tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
tail -f /var/log/httpd/access_log
tail -f /var/log/httpd/error_log
tail -f $CATALINA_BASE/logs/catalina.out
journalctl -u nginx -f
journalctl -u tomcat -f

포트와 프로세스 확인:

ss -lntp
ps -ef | grep tomcat
systemctl status nginx
systemctl status tomcat

시간 동기화

로그를 비교하려면 서버 시간이 맞아야 한다. Web Server, WAS, DB 서버의 시간이 어긋나면 같은 요청을 추적하기 어렵다.

timedatectl
chronyc sources

관련 블로그 기록

닫기 전 질문

  • Web Server access log에 요청이 남았는가?
  • 같은 시간대 WAS/application log에는 어떤 흔적이 있는가?
  • 상태 코드는 원인을 말해주는가, 아니면 원인을 좁히는 단서인가?