Post

Logback.xml 수정하고 Filebeat로 로그 모니터링 구축하기: ELK와의 연동 방법!

Filebeat + ELK 로 로그모니터링 하기


사내에 ELK 를 지원해주는 부서가 생겼다. 따라서 우리도 쉽게 로그 모니터링을 구축 할 수 있게 되어서 이번 기회에 도전해보려고 한다. 지금까지 로그는 사실 PVC Directory 에 모으고 있었다. 이랬을 경우 문제가 되는 점은 Kubernetes 상에 여러개의 서비스로 떠 있을 경우 로그 파일 하나를 두고 하기 때문에 문제가 생길 수 있다. (그래서 지금 서비스는 1개로 띄워져 있다…) 하지만 오늘 도전했던 방식은 조금 다르다.

1
로그 쌓임 -> FileBeat 가 Log 를 ELK 로 보냄 -> ELK 에서 저장 (사내 서비스여서 2달간 저장)

이런식으로 되기 때문에 모든 로그를 한번에 모아 볼 수가 있었다. 현재는 사내 서비스라서 helm 차트를 수정하기 어렵기 때문에 아쉽게도 여러개의 서비스가 떠있어도 하나로 밖에 보지 못하지만 그 또한 업데이트되면 쉽게 바꿀 수 있을거 같다.

logback.xml 설정해주기


logback 파일을 수정해주면 spring 의 log 를 마음대로 조정 할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<configuration>
  <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <file>./logs/qna.log</file>
      <encoder>
          <pattern>%d{yyyyMMdd HH:mm:ss.SSS} [%thread] %-5level [%logger{0}:%line] - %msg %n</pattern>
      </encoder>
      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
          <fileNamePattern>application.log.%d{yyyy-MM-dd}.gz</fileNamePattern>
          <maxHistory>20</maxHistory>
          <totalSizeCap>1GB</totalSizeCap>
      </rollingPolicy>
  </appender>

  <root level="info">
      <appender-ref ref="file" />
  </root>
</configuration>

여기에서 로그파일의 경로를 설정해주고 로그의 패턴을 설정해준다.

filebeat 설치하기


우리는 deploy 단계가 checkout -> build -> image push -> Paas deploy 순서인데 build 시에 매번 java 를 다운받고 있다. (사내의 build agent 에는 java 가 없다..) 따라서 build 하는 시점에서 filebeat 를 다운받아서 직접 넣기로 했다.

filebeat.yml


filebeat.yml 도 따로 설정을 해준다.

1
2
3
4
filebeat.input:
  - type: log
    enabled: true
    path: "./logs/*.log"

자세한 것은 기억이 나지 않지만 이정도로 짧은 설정이었다.

여러번의 시행착오 끝에 드디어 Kibana 에서 우리의 로그가 뜨는 것을 확인 할 수 있었다! 때마침 미승인 법인에서 들어오는 경우 로그로 표현하고 또 손쉽게 확인하고 싶었는데 그런 상황들을 쉽게 해결 할 수 있게 되었다!

This post is licensed under CC BY 4.0 by the author.

© 병욱. Some rights reserved.