[컴] logrotate 사용

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

References

  1. How to install Logrotate and configure Nginx log rotation – Evelyn’s Blog
  2. logrotate(8) - Linux man page
  3. Log Rotation | NGINX
  4. Rotate Log Files — MongoDB Manual

댓글 없음:

댓글 쓰기