해결하고자 하는 문제
- Logback으로 /log/appname-날짜.log 파일명으로 로그파일을 생성하도록 설정 되어있다.
- 로그 파일을 용이하게 관리하기 위해 EKS에서는 하나의 Persistent Volume Claim에 로그 파일 디렉토리를 Mount 시켰다.
- Pod가 여러개일 때 동일한 이름의 log 파일에 로그들이 누적되다 보니, 여러 파드의 내용이 뒤죽박죽 섞여 write되고, 어떤 pod의 로그인지 알기 어려워졌다.
- 따라서 pod마다 다른 이름의 로그 파일을 생성하도록 해결하고자 한다.
해결
1. logback 설정
- logback.xml
- 환경변수
POD_NAME
가져와서 파일명 생성시 패턴에 따라 생성되도록 설정
- 환경변수
POD_NAME
은 kubernetes yaml 파일에서 설정할 예정
- 아래의 내용을 logback.xml에 추가
- POD_NAME 변수가 추가되기 전의 logback.xml 코드가 필요하다면 여기로
... 생략
<property name="_POD_NAME" value="${POD_NAME}"/>
... 중략
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${_LOG_FILE_DIR}/${_LOG_FILE_NAME}.%d{yyyy-MM-dd, ${_LOG_TIMEZONE}}.${_POD_NAME}.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>30MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
2. Kubernetes yaml 파일 설정
- deployment yaml 파일에 환경변수
POD_NAME
추가
containers:
- name: admin-mgmt
image: <eks 주소>
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name