yoni

log 관리 및 서버 용량관리 본문

운영

log 관리 및 서버 용량관리

yoni-1117 2018. 12. 13. 15:00

[개발기 기준]

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 에서 제거한다.



[서버 용량 관리 참고]

http://blog.1day1.org/493

Comments