티스토리 뷰
프로젝트를 진행하며 tomcat log인 catalina.out의 용량이 점점 커져 가는 것을 보고, 미리 로그를 백업하고 나눌 필요를 느꼈습니다.
지금 당장은 문제가 없을지 모르지만, 용량이 커지기 때문에 정보를 찾는데 어려움을 겪기 떄문입니다.
인터넷에서 검색했을 때 제일 먼저 확인한 방법은 tomcat과 함께 설치되는 rotatelogs를 활용하는 방법이었습니다.
간단해 보이기는 했는데... 아쉽게 제 서버에는 /usr/local/apache/bin/rotatelogs 해당 경로에 rotatelogs가 없었습니다..
잘은 모르지만 확인결과 pakage로 설치한 것이 아니라, source로 설치하여서 없다는 정보를 얻었습니다.
그래서 다른 방법을 찾다가 logrotate를 사용하면 log파일을 순환하여 관리할 수 있다는 것을 알게 됐습니다.
CentOS기준으로 말씀드리면 /etc/logrotate.d 경로에 가서 vim tomcat을 사용하여 아래와 같이 입력해줍니다.
{catalina.out의 경로}/catalina.out {
copytruncate //기존 파일을 백업해서 다른 파일로 이동하고 기존 파일은 지워버리는 옵션
daily //로그파일을 날짜별로 변환함
rotate 30 //30개 만큼 저장된 후, 제거하거나 메일로 보내도록 설정
compress //로그파일들을 gzip으로 압축
missingok //로그파일이 없더라도 오류를 발생시키지 않는다.
notifempty //파일의 내용이 없으면 새로운 로그 파일을 생성 안한다.
dateext //순환된 로그파일의 날짜확장자
}
그리고 crontab에 등록을 해줍니다.
00 0 * * * root run-parts /etc/cron.daily
cron.daily에 가보면 logrotate라는 스크립트 파일이 있어서 logrotate.conf을 실행하며, logrotate.conf는 logrotate.d를 참조하여 실행합니다.
(즉 cron.daily에서 /usr/sbin/logrotate호출 , /usr/sbin/logrotate에서 /etc/logrotate.conf설정파일 참조 , /etc/logrotate.conf설정파일에서
/etc/logrotate.d 참조)
확인한 바로는 logrotate.conf는 공통적인 설정을 하며, logrotate.d는 로그를 개별적인 파일로 설정할 때 사용합니다.
강제로 실행하여 결과를 보려면
/usr/sbin/logrotate -f/etc/logrotate.conf 이렇게 실행하면 됩니다.
기대한 것과 같이 이전 로그 파일이 압축되어 날짜별로 백업되고 catalina.out에 새롭게 로그를 쌓는 것을 알 수 있습니다.
그러나 저의 이러한 기대와 다르게... 며칠이 지나도 백업 로그가 생성이 되지 않아서 한번 확인해 봤습니다.
/var/log/cron을 통해 cron이 정상 작동한 것을 확인했습니다.
/var/log/messages에 가서 에러를 확인해 보니
이런 에러가 발견되었습니다...
cd /usr/sbin로 이동하여 logrotate -vd /etc/logrotate.conf로 디버깅을 해봤습니다.
catalina.out은 에러가 없었는데..
다른 파일에서 권한 문제로 에러가 발생한 것을 알 수 있었습니다.
이러한 문제는 SeLinux의 enforcing mode 때문에 발생한 것입니다.
우선 임시로 작동시키기 위해 setenforce 0 을 입력하고
getenforce 를 입력하여 상태를 확인하면 , Permissive로 나타날 것입니다.
SELinux는 enforce, permissive,disable 세 가지 동작 모드가 있는데 설치하면 기본적으로 enforce 모드로 동작합니다.
enfoce 모드일 경우 정책에 어긋나는 것은 모두 차단한다고 합니다. 어떤 정책에 어긋낫 길래... 차단 당한 걸까요 .. ㅠㅠ
동작모드를 변경하는 명령어가 setenforce인데, 0과 1의 옵션이 있습니다. 0은 enforce 모드, 1은 permissive모드
permissive mode는 정책에 어긋나면 audit log를 남기고 해당 작업은 허용합니다...
이것은 임시로 설정을 하는 것이고 재부팅하면 설정이 초기화 되기 때문에 /etc/sysconfig/selinux 경로에서 SELINUX=enfocing 항목을 수정해야 합
니다. 음.. 이렇게 수정을 했을 때 영향도 까지는 깊게 알 수가 없어서 결국 운영서버에 적용은 하지 않았습니다..
결국 헛수고를 했지만.. 그래도 이렇게 또 배워 갑니다. ㅠㅠ
우선 logback을 이용해 로그를 쌓은 다음.. catalina.out은 추후 그냥 안만드는 걸로 설정을 바꿔보려고 합니다.
'OS > linux' 카테고리의 다른 글
리눅스 SSH 접속 IP 설정 (0) | 2019.10.09 |
---|---|
CentOS rdate로 시간 동기화 (0) | 2019.09.24 |
리눅스서버 시간 UTC -> KST (0) | 2019.09.24 |
CURL(컬) 사용 (0) | 2019.06.12 |
ha-bash: cannot create temp file for here-document: No space left on device (0) | 2019.04.05 |
- Total
- Today
- Yesterday
- gradle
- update query multi row
- effectivejava
- MSSQL
- springboot https
- Slack
- update query
- 이펙티브자바
- update set multi
- 슬랙
- 다중 업데이트
- update query set multiple
- 몽고DB 완벽가이드
- visual studio code
- 이것이 자바다
- update set multiple
- java
- 슬랙 /
- 싱글턴
- 업데이트 쿼리
- 그레이들
- spring-boot-starter-data-redis
- 뱅셀 유전자
- update query mutiple row
- SpringBoot
- 슬랙봇
- 뱅크샐러드
- vue.js
- multiple row update
- 뱅크샐러드 유전자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |