SaltStack 데몬들의 logrotation이 작동되지 않을 경우

 문제

/etc/logrotate.d/snet-salt에서는 아래와 같이 정상 작성되어 있는데도,
Salt 관련 logrotation이 작동되지 않을 경우가 있습니다.

/opt/miniconda3/envs/saltenv/var/log/salt/master { daily rotate 7 missingok dateext compress copytruncate notifempty } /opt/miniconda3/envs/saltenv/var/log/salt/minion { daily rotate 7 missingok dateext compress copytruncate notifempty } /opt/miniconda3/envs/saltenv/var/log/salt/key { daily rotate 7 missingok dateext compress copytruncate notifempty } /opt/miniconda3/envs/saltenv/var/log/salt/api { daily rotate 7 missingok dateext compress copytruncate notifempty } /opt/miniconda3/envs/saltenv/var/log/salt/cloud { daily rotate 7 missingok dateext compress copytruncate notifempty } /opt/miniconda3/envs/saltenv/var/log/salt/ssh { daily rotate 7 missingok dateext compress copytruncate notifempty }

 해결책

CloudHub에서 설치되는 SaltStack은 Python3 의존성 패키지 충돌 문제를 회피하기 위해서 Conda 가상환경으로 사용되고 있습니다.

또한, Salt config(master, minion 등)의 root_dir: /opt/miniconda3/envs/saltenv을 설정하면, 거의 모든 Salt 환경은 Conda 가상 경로(위의 경우 /opt/miniconda3/envs/saltenv/)로 잡히며, 그 아래 상대 경로로 모든 로그 파일이 쌓이게 됩니다.

이 경우, Salt logrotation이 원활히 진행되지 않는 경우가 있으며, 아래와 같이 강제 로테이션으로 실행하도록 변경합니다.(logrotate -f 옵션 추가)

$ sudo vim /etc/cron.daily/logrotate ... /usr/sbin/logrotate -f -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf ...

 관련 문서