운영 체크리스트

미들웨어 구축, 점검, 장애 대응 시 확인할 항목을 계층별 체크리스트로 정리한다.


목적

이 문서는 공부한 내용을 운영 상황에서 빠르게 확인하기 위한 체크리스트다.

Client -> Web Server -> WAS -> Application -> DBMS

구축 전 확인

항목확인
도메인DNS가 대상 IP를 가리키는가
포트80/443/8080/DB 포트 사용 계획이 정리되었는가
방화벽외부 공개 포트와 내부 통신 포트가 구분되었는가
인증서도메인, 만료일, chain, 개인키 위치가 확인되었는가
WAS배포할 Context Path와 포트가 정해졌는가
DBJDBC URL, 계정, 권한, 접속 허용 범위가 정해졌는가
로그Web/WAS/Application 로그 위치가 정해졌는가

Web Server 점검

nginx -t
httpd -t
apachectl configtest
systemctl status nginx
systemctl status httpd
ss -lntp
항목확인
listen80/443 포트가 열려 있는가
server_name요청 도메인과 매칭되는가
proxyupstream 주소와 포트가 맞는가
TLS인증서와 개인키 경로가 맞는가
logaccess/error log에 기록되는가

WAS 점검

systemctl status tomcat
ps -ef | grep tomcat
ss -lntp | grep 8080
curl -I http://127.0.0.1:8080
tail -f $CATALINA_BASE/logs/catalina.out
항목확인
processTomcat이 실행 중인가
Connector8080/AJP 등 필요한 포트가 열려 있는가
deployWAR가 정상 배포되었는가
ContextURL과 Context Path가 맞는가
JVMheap, GC, OOM 설정이 적절한가
logcatalina/application log가 남는가

DB 연동 점검

nc -vz db.example.internal 3306
telnet db.example.internal 1521
ss -antp | grep 3306
항목확인
networkWAS 서버에서 DB 포트까지 접근 가능한가
account계정/비밀번호/권한이 맞는가
poolmaximum pool size가 DB 제한과 맞는가
timeoutconnection/read timeout이 설정되어 있는가
queryslow query나 lock이 없는가

장애 대응 순서

  1. 사용자 증상, URL, 시간, 재현 조건을 확인한다.
  2. DNS와 외부 포트 접근을 확인한다.
  3. Web Server access/error log를 확인한다.
  4. Web Server에서 WAS 포트로 직접 curl한다.
  5. WAS process, port, catalina log를 확인한다.
  6. Application log에서 stack trace를 확인한다.
  7. DB 연결, connection pool, slow query를 확인한다.
  8. OS 리소스, disk, memory, file descriptor를 확인한다.

상태 코드별 빠른 분기

상태먼저 볼 곳
접속 불가DNS, 방화벽, security group, listen
404URL path, Web rewrite, Tomcat Context
500application log, DB, env, permission
502upstream, WAS port, process, firewall
503backend down, health check, maintenance
504timeout, WAS thread, DB query, external API

변경 작업 전후

시점확인
변경 전설정 백업, 현재 포트/프로세스/로그 확인
변경 중syntax test, 영향 범위 확인
변경 후reload/restart 결과, access log, error log 확인
롤백원복 파일, 서비스 재시작, 정상 요청 확인

관련 블로그 기록

닫기 전 질문

  • 지금 장애는 어느 계층부터 확인해야 가장 빠른가?
  • 설정 변경 전 원복 방법은 준비되어 있는가?
  • 정상 기준값을 알고 있는가, 아니면 장애 상태만 보고 있는가?