log roatation / log rotate / 로그 / nginx 에서 log rotate / mongodb 에서 logrotate
logrotate 사용
- 사용한 os: rockylinux 8 (CentOS 8)
logrotate 를 설치
설치를 하면 /etc/cron.daily/
가 생성되고, 이 안에 logstate 가 들어가게 된다. 즉 매일 실행되게 된다.
dnf install logrotate -y
/etc/logrotate.d/<app>
nginx 에 대한 logrostate
아래처럼 /etc/logrotate.d/nginx
를 만들면 nginx 라는 app 에 대한 logrotate 설정을 할 수 있다.
vi /etc/logrotate.d/nginx
아래 option 에 대한 설명은 ref. 1, ref. 2 를 보면 된다. 아래 postrotate
를 실행하면 nginx 는 새로운 log 에 log 를 쓰게 된다.(ref. 3 참고)
# /etc/logrotate.d/nginx
/var/log/nginx/*log {
create 0644 nobody root
daily # 매일 rotate
dateext
dateformat %Y-%m-%d-%s
rotate 10 # 10개의 log 를 보관
missingok
notifempty
compress
sharedscripts
postrotate
/bin/kill -USR1 `cat /usr/local/nginx/logs/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}
아래처럼 하면 제대로 conf 가 동작하는지 확인할 수 있다. 다만 log 가 조건에 맞아야 rotate 가 진행된다. 그래서 개인적으로 size 1k
를 이용한다.
logrotate -v /etc/logrotate.d/nginx
mongodb 에 대한 logrostate
kill -SIGUSR1
에 대해서는 ref. 4를 참고하자.
# /etc/logrotate.d/mongodb
/home/user/apps/mongodb-5.0.6/log/mongod.log
{
rotate 10
daily
dateext
dateformat .%Y-%m-%d-%s
extension .log
dateyesterday
size 10000M
missingok
create 600 mongod mongod
delaycompress
compress
sharedscripts
postrotate
/bin/kill -SIGUSR1 $(cat /var/run/mongodb.pid)
endscript
}
logrotate -v /etc/logrotate.d/mongodb
댓글 없음:
댓글 쓰기