40. 중앙 집중식 로깅 솔루션
- Amazon CloudWatch
- AWS EC2와 연계가 쉽지만 요금이 들어감 💸
- ELK (Elasticsearch + Logstash + Kibana)
- 강력한 검색 및 쿼리 기능을 제공하고 엔터프라이즈급에 적합
- 무겁고 러닝 커브와 구축 및 운영 리소스가 있음
- PLG (Promtail + Loki + Grafana)
- 비교적 가볍고 설정이 어렵지 않으며 요구되는 리소스가 적음
- 대규모 데이터 처리에는 ELK보다 부족하며 레퍼런스가 비교적 적음
53. 로그 회전 (Log Rotation)
- 너무 오래되었거나 너무 큰 로그 파일을 분할, 압축, 이동
(아카이브) 또는 삭제하는 자동화된 프로세스
54. 로그 회전 전략
- 시간 기반 회전: 일정한 시간 간격에 따른 회전
- 크기 기반 회전: 고정된 크기 제한에 따른 회전
- 하이브리드 회전: 시간과 크기 중 먼저 달성되는 것에 따른
회전
- 압축: 회전 후 로그 파일 압축
- 삭제: 일정 기간이 지나거나 특정 파일 수에 도달했을 때
오래된 로그 파일 삭제
57. 개선 #5 - 로그 회전 적용
- 로컬: ConsoleAppender로 콘솔에만 출력. 로그 파일 생성 ❌
- 개발 & 상용
- RollingFileAppender의 TimeBasedRollingPolicy 적용
- 개발은 30일 이전, 상용은 60일 이전 로그 파일 삭제 처리
- 파일명 : %d{yyyy-MM, aux}/%d-%i.log (2023-12/2023-12-10-0.log)
- SizeAndTimeBasedFNATP로 일자별, 크기별(256MB)로 로그 파일
분할
58. 개선 #6 - 로그 아카이브
- Loki 설정을 통해 Index, Chunks를 S3에 저장
Index
Chunks
59. 개선 #6 - 로그 아카이브
- 압축 파일을 AWS CLI를 통해 AWS S3로 전송 (상용에서만)
- 해당되는 셸 스크립트 작성
- 어제 날짜 로그 파일 압축 처리 (압축 파일명에 인스턴스 ID 추가)
- AWS CLI로 AWS S3로 압축 파일 전송
60. 개선 #6 - 로그 아카이브
- Crontab을 통해 셸 스크립트를 주기적으로 실행
- 매일 오전 0시 10분에 AWS S3에 로그 압축 파일
업로드
61. 개선 #7 - 보관 기간이 경과한 로그 삭제
- S3에서 주기적으로 파일이 자동 삭제되도록 규칙 생성
- 로그 보관 관련 법령과 회사 정책 참고 (ex: 5년 경과시 완전 삭제)
62. Summary
- 로그 필터링의 어려움
- 로그 레벨별로 중요도에 따른 로깅
- 중요도에 따른 로그 파일 분리
- 로그 추적의 어려움
- MDC를 이용한 Request 로깅
- PLG(Promtail, Loki, Grafana)를 통한 중앙 집중식 로깅
- 방대한 로그 파일 용량
- Logback에서 RollingFileAppender로 로그 회전 적용
- Crontab + AWS CLI를 통해 로그 압축 파일을 AWS S3로 전송 및 보관