[AWS] nginx - logrotate를 사용한 점유율 관리

Hyunjun Kim·2025년 5월 22일

실습 - (AWS 환경)

목록 보기
20/61
sudo vi /etc/logrotate.d/nginx

/var/log/nginx/*.log {
	daily
	missingok
	rotate 30
	compress
	delaycompress
	notifempty
	create 640 www-data www-data
	sharedscripts
	postrotate
		if [ -f /var/run/nginx.pid ]; then
			kill -USR1 `cat /var/run/nginx.pid`
		fi
	endscript
}

create 640 www-data www-data

create 에는 파일권한 숫자값, www-data(소유자), www-data(그룹)

이 따라오는데 nginx설정에 보면

/etc/nginx/nginx.conf

기본 conf, 맨 위에 있는 유저정보와 값을 맞춰줘야 한다.

sharedscripts :스크립트가 시작점
endscript : 스크립트 끝점

postrotate라는 이벤트 받으면 로테이트가 완료될 때 뭐할거냐?
Nginx의 pid값을 가져와서 그 친구한테 USR1이라는 시그널 날릴 거다.

kill은 죽이겠다는 게 아니고 시그널 보내는 것.
kill -9해야 강제종료 하는 것이고
kill -USR1 : USR1 시그널 보내다

nginx는 USR1 시그널을 받아야 로그 파일을 새로 읽는다.
nginx 구현상 약속된 시그널이다.

logrotate -d -f /etc/logrotate.d/nginx

-D (디버깅) -F (파일을 검증하겠다)
여기서 에러 로그가 안 남으면 제대로 벨리데이션이 된 것이다.

-d 옵션을 꺼보자.

logrotate -f /etc/logrotate.d/nginx

이렇게 에러로그 없이 제대로 벨리데이션된 것을 확인할 수 있따.

profile
Data Analytics Engineer 가 되

0개의 댓글