728x90
Nginx 로그 파일을 로테이션 설정하는 방법(nginx logrotate)
Nginx 로그 파일을 주기적으로 로테이션(순환)하여 로그 파일 크기를 관리하고 오래된 로그를 보관하려면 logrotate를 사용할 수 있습니다.
Nginx 로그 파일의 로테이션 설정
1. logrotate 설정 파일 생성
- logrotate 설정 파일을 생성하거나 수정합니다.
- 대부분의 리눅스 시스템에서 logrotate 설정 파일은 /etc/logrotate.conf 또는 /etc/logrotate.d/nginx와 같은 경로에 위치할 수 있습니다.
sudo vim /etc/logrotate.d/nginx
2. logrotate 설정 추가
- Nginx 로그로테이션 설정을 추가합니다.
/var/log/nginx/*.log {
daily
missingok
rotate 7
dateext
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}
- 설정 항목 설명
- daily : 매일 로그를 로테이션합니다. 일별로 새로운 로그 파일이 생성됩니다.
- missingok : 로그 파일이 없는 경우에도 경고 없이 진행합니다. 로그 파일이 없더라도 로테이션은 진행됩니다.
- rotate 7 : 최대 7개의 로그 파일을 보관합니다. 로그 파일이 7개 이상 쌓이면 오래된 로그 파일부터 삭제됩니다.
- dateext : 로그 파일 이름에 날짜 확장자를 추가합니다. 예를 들어, access.log.20230810와 같은 형식으로 로그 파일이 생성됩니다.
- compress : 로그 파일을 압축하여 저장합니다. 로그 파일의 용량을 줄이고 디스크 공간을 절약할 수 있습니다.
- delaycompress : 이전 로그 파일을 압축하는데 지연을 줍니다. 다음 로그 로테이션이 발생할 때까지 압축을 지연시킵니다.
- notifempty : 로그 파일이 비어 있으면 로테이션하지 않습니다. 내용이 없는 로그 파일은 로테이션 대상에서 제외됩니다.
- create 0640 www-data adm : 새로운 로그 파일을 생성할 때의 파일 권한을 설정합니다. 여기서는 0640 퍼미션으로 www-data 사용자 그룹과 adm 그룹을 지정합니다.
- sharedscripts : 로그파일 로테이션 후 스크립트를 실행할 때 중복 실행을 방지합니다. 여러 로그 파일이 있는 경우 한 번만 스크립트가 실행됩니다.
- 위 설정에서는 /var/log/nginx/ 디렉토리에 있는 모든 .log 파일을 매일 로테이션하며 최대 7개의 로그 파일을 보관합니다. 새로운 로그 파일 생성 시 퍼미션을 0640으로 설정하며 로그파일 로테이션 후 Nginx를 재시작하는 명령어를 실행합니다.
3. logrotate 실행 확인
- logrotate는 일반적으로 cron에 의해 자동으로 실행됩니다. 설정이 잘 적용되었는지 수동으로 테스트해볼 수 있습니다.
sudo logrotate -d /etc/logrotate.d/nginx
- 문제가 없으면 실제로 작업을 실행합니다.
sudo logrotate -f /etc/logrotate.d/nginx
- -f 옵션은 강제 실행을 의미합니다.
4. 로그로테이션 주기 설정
- daily 대신 weekly, monthly와 같은 다른 주기를 선택할 수 있습니다. 또한 logrotate 주기를 변경하려면 설정 파일에서 daily 부분을 수정하면 됩니다.
5. 주의 사항
- 로그 파일의 경로와 설정은 시스템 및 Nginx 구성에 따라 다를 수 있습니다. logrotate 설정을 변경하려면 주의 깊게 검토하고 테스트한 후에 적용하야 합니다.
이 설정을 사용하여 Nginx 로그 파일을 로테이션하면 로그 파일 관리가 용이하며 디스크 공간을 효율적으로 활용할 수 있습니다.
728x90
'리눅스' 카테고리의 다른 글
timedatectl 명령어 (0) | 2023.08.22 |
---|---|
PHP-FPM 로그 파일의 로테이션 설정하는 방법(php-fpm logrotate) (0) | 2023.08.10 |
su 명령어 (0) | 2023.08.09 |
도커 컨테이너에서 systemd를 실행하는 방법 (0) | 2023.08.07 |
grubby 명령어 (0) | 2023.08.07 |