개발/Linux,Server

Almalinux 9.x minimal에서 logrotate가 안되는 문제

호돌맨 2024. 7. 4. 16:12

사실 잘 작동하는지 확인 안했다. 실패하면 글 삭 ㄱ

문제

Almalinux 8.7에서는 logrotate가 잘 됐는데 9.3으로 업데이트를 한 뒤로 안되기 시작했다.

Nginx, 앱 로그 용량이 늘어나면 시스템에 좋지 않기때문에 조치를 취해보자.

(Docker에서 실행하는 컨테이기때문에 서비스 재 배포를 통해 해결할 수 있지만..)

아마도 RHEL계열 9.x minimal 버젼에서는 거의 대부분 발생할 문제라고 생각한다.

해결

온갖 삽질을 다 했는데.. 무슨 이유 때문인지 9.x에서 /etc/cron.daily/logrotate 스크립트가 누락되어있다. (5252 어디까지 minimal 할 셈이냐?!)

#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit $EXITVALUE

위 스크립트 내용을을 /etc/cron.daily/logrotate 파일에 넣어주고 실행 권한($ chmod +x /etc/cron.daily/logrotate)을 주면된다. 내부적으로 anacron에서 run-parts를 통해 실행하기때문에 실행 권한이 꼭 있어야 되는것 같다.

만약 Dockerfile을 이용한다면 아래 명령어를 추가한다.

RUN echo $'#!/bin/sh\n\
/usr/sbin/logrotate /etc/logrotate.conf\n\
EXITVALUE=$?\n\
if [ $EXITVALUE != 0 ]; then\n\
   /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"\n\
fi\n\
exit $EXITVALUE' > /etc/cron.daily/logrotate

RUN chmod 755 /etc/cron.daily/logrotate