NGINX 로그 날짜별로 남기기

김동욱·2024년 4월 6일

NGINX

목록 보기
1/2
post-thumbnail

NGINX는 로그를 access.log, error.log와 같은 파일 형태로 남긴다. error.log의 로그는 특정한 상황에만 출력되는 로그이기 때문에 빈도수가 높지 않다. 하지만 access.log에 출력되는 로그는 서버 호출시마다 쌓이기 되므로 하나의 파일에서 관리를 한다면 관리가 용이하지 않다. 따라서 NGINX에는 logrotate라는 유틸리티가 있고, 이는 특정 주기별(일, 주, 달 등)로 로그를 관리할 수 있도록 돕는다.

참고로 NGINX를 도커 컨테이너로 띄우는 상황에서 logrotate를 사용해 보았고, 이에 대한 글이다.

logrotate 설정파일 작성

logrotate 설정파일은 호스트 서버의 /etc/logrotate.d 디렉토리 내부에 생성하면 된다. nginx 이름의 파일로 작성하는 것이 일반적이다.

/{실제로 로그가 저장되는 경로}/*.log {
    create 0644 root root
    daily
    missingok
    rotate 180
    compress
    delaycompress
    notifempty
    dateformat .%Y-%m-%d.log
    dateext
    sharedscripts
    postrotate
      docker exec {nginx 컨테이너 이름} nginx -s reload
    endscript
}

각각의 옵션을 간단히 살펴보면 다음과 같다.

  • /{실제로 로그가 저장되는 경로}/*.log : logrotate 설정에서 로그 파일의 위치와 패턴을 지정하는 부분이다. 이 경로는 logrotate가 관리해야 할 로그 파일들이 위치한 디렉토리를 나타내며, *.log는 그 디렉토리 안에 있는 모든 .log 확장자를 가진 파일들을 대상으로 한다는 것을 의미한다.
  • daily : 매일 로그를 로테이션합니다. 일별로 새로운 로그 파일이 생성됩니다.
  • rotate 180 : 최대 180개의 로그 파일을 보관하고, 로그 파일이 180개 이상 쌓이면 오래된 로그 파일부터 삭제된다.
  • dateext : 로그 파일 이름에 날짜 확장자를 추가한다.
  • missingok : 로그 파일이 없는 경우에도 경고 없이 진행한다.
  • compress : 로그 파일을 압축하여 저장한다.
  • delaycompress : 다음 로그 로테이션이 발생할 때까지 압축을 지연시킨다.
  • notifempty : 로그 파일이 비어 있으면 로테이션하지 않는다.
  • create 0640 root root : 새로운 로그 파일을 생성할 때의 파일 권한을 설정한다. 예시에서는 0640 권한으로 root 사용자 그룹과 root 그룹을 지정했다.
  • sharedscripts : 로그파일 로테이션 후 스크립트를 실행할 때 중복 실행을 방지한다. 여러 로그 파일이 있는 경우 한 번만 스크립트가 실행된다.
  • postrotate : rotate 작업을 마친후에 실행할 스크립트이다. 예시에서는 Nginx를 reload하여 서비스 중단 없이 설정을 갱신하도록 했다.

테스트하기

정상 설정 여부를 테스트하기 위해 다음 명령어 실행한다.

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

-d, --debug : 디버그 모드, 실제 로그 파일을 변경하지는 않고 처리 과정만 표시한다. 실제로 실행하고 싶지 않으면 생략해도 좋다.

정상적으로 설정됐다면 /etc/cron.daily/logrotate 파일이 있으므로 별도로 크론 작업에 등록하지 않아도 매일 log 파일 rotate가 실행된다.

profile
안녕하세요! 질문과 피드백은 언제든지 환영입니다:)

1개의 댓글

comment-user-thumbnail
2025년 3월 6일

Great info on setting up logrotate! Daily rotation and compression will definitely help keep the logs tidy. It reminds me of geometry dash spam, gotta keep everything in sync to avoid chaos!

답글 달기