yoni
log 관리 및 서버 용량관리 본문
[개발기 기준]
195번 서버의 마운트가 차면 버그들이 생김
->(해당 상황에서 내가 맞닥들인 버그는 테이블이 생성이 되지않아 구글링을 해보니 서버의 메모리 용량 부족 문제였다.)
해서 용량을 조회해보고 적당한 상한선에서 서버의 용량 관리를 해주자
->기본적으로 필요없는 로그들을 삭제를 하고나면 마운트 할당용량이 11%가 된다.
▶용량 확인하기
# df -h
- 현재는 11%정도로 마운트를 할당하고 있어서 로그성 파일들을 삭제해야할 필요성이 보이지는 않는다
▶800M 넘어가는 파일 찾기
#find / -size +800M -print
- 주로 로그 파일 지우기 위해서 대상이 되는 파일 들은 catalina, dailyLog가 있다
- 실제로 운영되고 있는 서비스들의 서버 메모리가 꽉차면 catalina, dailyLog의 로그들을 현재를 기준으로 7일정도만 남겨 두고 지난것들은 지우면 된다.
- 개발 서버에서는 catalina, dailyLog, core.516 이렇게 삭제해도 무관하다.
▶파일 지우기
#rm -Rf dailyLog.log.2*
#rm -Rf dailyLog.log.2*
#rm -Rf core.516
- rm -Rf 명령어를 사용해서 해당 파일들을 삭제하면 된다.
cf)이런 로그성 파일들이 생기는 이유에는 현재 프로젝트들이 템플릿을 돌리는 형태로 되어있다.
그때의 필요로 만든 기능인 자동 로그 남기는 기능이 현재에서는 서버의 메모리를 잡아먹는 기능이되어버린것이다..
[log4j2.xml]
<RollingFile name="rollingFile" fileName="./logs/rolling/dailyLog.log"
filePattern="./logs/rolling/dailyLog.log.%d{yyyy-MM-dd}">
<PatternLayout pattern="%d %5p [%c] %m%n" />
<Policies>
<!-- interval(default 1)이므로 1초 간격으로 rolling 수행 -->
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
-> dailyLog파일 같은 경우는 log4j에서 만들어지는 로그성 파일이고, catalina는 tomcat에서 생성되어지는 로그성 파일이다
-> catalina의 대해서는 아래 내용을 참조하자
https://sarc.io/index.php/tomcat/900-apache-tomcat-java-logging-juli
2. 로그 파일 종류
2-1. catalina.out
Tomcat 기동 시 ${INSTANCE_DIR}/bin/catalina.sh 에 의해 생성되는 로그 파일이다.
… if [ -z "$CATALINA_OUT" ] ; then CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out fi … >> "$CATALINA_OUT" 2>&1 "&"
위와 같이 ${CATALINA_OUT} 은 ${CATALINA_BASE}/logs (본 문서의 ${INSTANCE_DIR}/logs) 하위에 catalina.out 파일이며, java 기동 시 standard output 과 standard error 를 모두 ${CATALINA_OUT} 으로 보내게 한다.
catalina.out 은 기본적으로 Tomcat 이 기동되어 있는 동안에는 단 하나의 파일에 계속 내용이 추가된다. 따라서 catalina.out 의 크기가 계속 늘어나 유용하고 중요한 로그가 골치 덩어리로 전락하는 상황이 발생할 수 있다. 이 경우 CATALINA_OUT 을 /dev/null 로 설정하는 등 catalina.sh 파일을 수정하여 대응하도록 한다.
… if [ -z "$CATALINA_OUT" ] ; then CATALINA_OUT="/dev/nnull" fi …
2-2. catalina.YYYY-MM-DD.log
${INSTANCE_DIR}/conf/logging.properties 에 의하여 생성되고 제어된다.
catalina.YYYY-MM-DD.log 파일은 catalina.out 파일과 유사한 것 처럼 보이나 Tomcat 에서 생성하는 로그 이외에 standard output, standard error 의 로깅은 제외된다. 즉, 소스에서 System.out.println 이나 System.err.println 으로 남기는 로그가 있다면 그 내용은 오직 catalina.out 에서만 찾아볼 수 있다.
2-3. 기타 로그
- manager.YYYY-MM-DD.out
- host-manager.YYYY-MM-DD.out
- localhost_access_log.YYYY-MM-DD
manager 혹은 host-manager 사용시 로그와 Tomcat access 로그이다.
2-4. 로그 관리 전략
catalina.out 과 catalina.YYYY-MM-DD.log 파일을 중복으로 유지하는 것은 특히나 운영 환경에서는 파일 시스템 낭비 뿐 아니라 성능 저하 요인으로 볼 수 있다. 따라서 다음과 같은 로그 관리 전략을 제안한다.
첫 번째는 용도 별로 로그를 분리/관리하고 standard out, standard error 는 보지 않아도 되는 경우이다.
- catalina.out 파일은 생성하지 않는다. (catalina.sh 에서 /dev/null 처리한다)
- catalina.YYYY-MM-DD.log 파일로부터 daily rotate 되는 시스템 로그를 모니터링한다.
- 응용에서는 framework 의 로그를 활용하거나 log4j 를 사용하여 별도의 로그를 남긴다.
두 번째는 모든 로그를 하나의 파일(catalina.out) 에서 보고 싶은 경우이다.
- 현재 방식으로는 catalina.out 파일이 비대해 질 수 있으므로 서버의 logrotate 기능을 사용하거나 별도의 로그 분리 스크립트를 적용하여 daily 혹은 일정주기마다 강제 분리되도록 한다.
- catalina.YYYY-MM-DD.log 파일은 생성하지 않는다. (logging.properties 에서 설정)
이외에 manager, host-manager 등에서 생성되는 로그도 manager나 host-manager 를 사용하지 않거나 굳이 로그가 필요 없다면 logging.properties 에서 제거한다.
[서버 용량 관리 참고]
'운영' 카테고리의 다른 글
[logback] 콘솔 log 레벨 정하기 (0) | 2020.04.24 |
---|---|
서버설치가이드 (0) | 2019.03.07 |
Tomcat 올리는법 (0) | 2019.03.07 |
maven관련 핸들러들 에러(maven 수동업데이트) (1) | 2018.10.22 |
[TOMCAT 로그 일자별로 저장]_catalina.log 일별로 저장 (0) | 2018.09.12 |