[EKS] 동적으로 Log 파일명 생성하기

Moondy·2022년 5월 13일
1
post-thumbnail

해결하고자 하는 문제

  • 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
profile
DevOps를 살짝 찍먹하는 BackEnd 개발자

0개의 댓글