로그 파이프라인 설계 · 로그 로테이션 · 실습
로테이션이 무엇을 잃는지 직접 본다
목표
로그 로테이션의 두 방식이 각각 무엇을 잃는지 직접 만들어 봅니다.
설명을 읽는 것과 파일이 0바이트로 남아 있는 걸 보는 것은 다릅니다.
왜 중요한가
로테이션을 잘못 걸면 두 가지 중 하나가 일어납니다.
create인데 SIGHUP 을 안 보냄 → 새 로그 파일이 영원히 0바이트,copytruncate→ 복사와 자르기 사이의 로그가 사라짐
실제 로그는 .1 파일로 계속 흘러감. 잃지는 않지만 아무도 못 찾음
둘 다 장애 조사 중에 발견하면 이미 늦습니다.
단계
1. 계속 쓰는 프로세스 → /root/log/01-pid.txt
2. 지웠는데 공간이 안 돌아오는 것 → /root/log/02-deleted.txt
3. 재시작으로 정리 → /root/log/03-restart.txt
4. rename 방식 흉내 → /root/log/04-rename.txt
5. copytruncate 방식 흉내 → /root/log/05-truncate.txt
6. logrotate 설정 작성 → /root/log/06-app.conf
7. 무엇을 잃는지 → /root/log/07-tradeoff.md
8. 정리 → /root/log/08-clean.txt
참고
- 백그라운드 프로세스의 PID 는
echo $!로 얻습니다. : > 파일은 파일을 0바이트로 자릅니다(truncate).- 컨테이너에서는 보통 logrotate 를 쓰지 않습니다. stdout 으로 내면
컨테이너 런타임이 대신 로테이션합니다 — 그것도 이 실습에서 확인할
개념입니다.
단계 8개
- 계속 쓰는 프로세스를 만든다
- 지웠는데 공간이 안 돌아오는 것을 본다
- 다시 시작해서 정리한다
- rename 방식을 흉내 낸다
- copytruncate 방식을 흉내 낸다
- logrotate 설정을 쓴다
- 무엇을 잃는지 적는다
- 정리한다